MACRO-64 source statements can have a maximum of four fields, as follows: o Label field-Symbolically defines a location in a program. o Operator field-Specifies the action to be performed by the statement; this can be an instruction, an assembler directive, or a macro call. o Operand field-Contains the instruction operands or the assembler directive arguments or the macro arguments. o Comment field-Contains a comment that explains the meaning of the statement; this does not affect program execution. You can separate statement fields by either a space or a tab stop, but Digital recommends that you format statements with the Tab key to ensure consistency and clarity. Table 1 Using Tab Stops in Statement Fields Column in Which Field Field Begins Tab Stops to Reach Column Label 1 0 Operator 9 1 Operand 17 2 Comment 41 5 The following example shows a typical source statement: EXP: .BLKL 50 ; Table stores expected values Rules for Coding Source Statements The following rules apply for coding source statements: o You can continue a single statement on several lines by using a hyphen (-) as the last nonblank character before the comment field, or at the end of line (when there is no comment). o In most cases, you can continue a statement at any point. If a symbol name is continued and the first character on the second line is a tab or a blank, the symbol name is terminated at that character. o Blank lines are legal, but they have no significance in the source program except that they terminate a continued line. The following sections describe each of the statement fields in detail.
1 – Label Field
A label is a user-defined symbol that identifies a location in the program. The symbol is assigned a value equal to the location counter where the label occurs. The following rules apply when coding source statements with labels: o If a statement contains a label, the label must be in the first field on the line. o The user-defined symbol name can be up to 31 characters long and can contain any alphanumeric character, as well as the underscore (_), dollar sign ($), and period (.) characters. o If a label extends past column 7, Digital recommends you place it on a line by itself so that the following operator field can start in column 9 of the next line. o A label is terminated by a colon (:) or a double colon (::). In the following source statement, EXP: is the label field: EXP: .BLKL 50 ; Table stores expected values There are three types of labels: o Global labels-Can be referenced by other object modules and are defined using a double colon (::). o Local labels-Can be referenced only within the current module and are defined using a single colon (:). o Temporary labels-Can be referenced only within the bounds of either two local labels, two global labels, two psects (program sections), or within the bounds of a temporary label scope, as defined by .ENABLE LOCAL_BLOCK and .DISABLE LOCAL_BLOCK. Temporary labels are defined using one to five digits followed by a dollar sign and a single colon ($:). The following example shows how these labels appear in use: EXP: .BLKL 50 ; EXP is a local label used to ; identify a 50-word block of storage DATA:: .BLKW 25 ; DATA is a global label used to ; identify a 25-word block of storage 10$: .BLKW 5 ; 10$ is a temporary label used to ; identify a five word block of ; storage.
2 – Operator Field
The operator field specifies the action to be performed by the statement. This field can contain an instruction, an assembler directive, or a macro call. If the operator is: o An instruction, MACRO-64 generates the binary code for that instruction in the object module. o A directive, MACRO-64 performs certain control actions or processing operations during source program assembly. o A macro call, MACRO-64 expands the macro. Use either a space or a tab stop to terminate the operator field; however, Digital recommends that you use the tab stop to terminate the operator field. In the following source statement, .BLKL is the operator field: EXP: .BLKL 50 ; Table stores expected values
3 – Operand Field
The operand field can contain operands for instructions or arguments for either assembler directives or macro calls. Operands for instructions identify the memory locations or the registers that are used by the machine operation. The operand field for a specific instruction must contain the correct number and type of operands required by that instruction. Arguments for a directive must meet the format requirements of that directive. Operands for a macro must meet the requirements specified in the macro definition. Use a comma (,) to separate operands for instructions and directives. The semicolon that starts the comment field terminates the operand field. If a line does not have a comment field, the operand field is terminated by the end of the line. In the following source statement example, 50 is the operand field supplied to the operator field, .BLKL: EXP: .BLKL 50 ; Table stores expected values
4 – Comment Field
The comment field contains text that explains the function of the statement. You can use comments to describe algorithms, reasons for selecting particular methods, and parameters passed to routines. Comments do not affect assembly processing or program execution. The comment field must be preceded by a semicolon (;) and can contain any printable ASCII character. It is terminated by the end of the line. A comment can appear on a line by itself. If a comment does not fit on one line, it can be continued on the next, but the continuation must be preceded by another semicolon. In the following source statement example, "Table stores expected values" is the comment field. Note that the comment field begins with a semicolon. EXP: .BLKL 50 ; Table stores expected values