FIX: IRP Directive Has Single Line Limit of 120 Characters

ID: Q67788


The information in this article applies to:
  • Microsoft Macro Assembler for MS-DOS and OS/2, versions 5.1, 5.1a


SYMPTOMS

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


CAUSE

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.


STATUS

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.


MORE INFORMATION

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.

Sample Code


; Assemble options needed: none

$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 query words: 5.10 5.10a buglist5.10 buglist5.10a fixlist6.00

Keywords :
Version : MS-DOS:5.1,5.1a
Platform : MS-DOS
Issue type :


Last Reviewed: January 13, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.