Q67788: FIX: IRP Directive Has Single Line Limit of 120 Characters

Article: Q67788
Product(s): Microsoft Macro Assembler
Version(s): MS-DOS:5.1,5.1a
Operating System(s): 
Keyword(s): 
Last Modified: 06-MAY-2001

-------------------------------------------------------------------------------
The information in this article applies to:

- Microsoft Macro Assembler (MASM), 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          :  
Technology        : kbMASMsearch kbAudDeveloper kbMASM510 kbMASM510a
Version           : MS-DOS:5.1,5.1a
Solution Type     : kbfix

=============================================================================