ID Number: Q67788
5.10 5.10a | 5.10 5.10a
MS-DOS | OS/2
buglist5.10 buglist5.10a buglist6.00
Summary:
In the Microsoft Macro Assembler (MASM) versions 5.1 and 5.1a, the IRP
(instruction repeat) directive has a single line limit of 120
characters. MASM version 6.0 has no limit. The code example below
shows a macro with an IRP that has 125 characters. The result of this
program with MASM 5.1 or 5.1a is an error message that states:
End of file encountered on input file
Number of open conditionals:14
End of file encountered on input file
This error occurs because the assembler is looking for a closing
bracket (>), but the line is over the limit of 120 characters. As a
result, the assembler accepts the rest of the code to be part of the
IRP parameters. By shortening the final parameter to be within the
limit (change TP$_EOS to TP), the bracket is read correctly and the
remainder of the program is assembled with no errors.
Note: In this example, the IRP argument list is stated in three lines;
however, it should be all on the same line to cause the error. The
120-character limit is only on the same line. A workaround is to
continue the argument on the next line as seen below.
Microsoft has confirmed this to be a problem in MASM versions 5.1 and
5.1a. This problem was corrected in MASM version 6.0.
Sample Code
-----------
$tran macro keyword
irpc TP$_DUMMY,<keyword>
ifidn <&TP$_DUMMY>,<T>
irp TP$_DUMMY2,<TP$_ANY,TP$_ALPHA,TP$_DIGIT,
TP$_STRING,TP$_SYMBOL,TP$_BLANK,TP$_DECIMAL,
TP$_OCTAL,TP$_HEX,TP$_LAMBDA,TP$_EOS>
%out TP$_DUMMY2
endm
endif
endm
endm
$tran if_anything_cmd
end
Additional reference words: 5.10 5.10a