. Definition 10 RDBUFF MACRO &BUFADR,&RECLTH,&INDEV 15 . 20 . MACRO TO READ RECORD INTO BUFFER 25 . 30 CLEAR X CLEAR LOOP COUNTER 35 CLEAR A 40 CLEAR S 45 +LDT #4096 SET MAXIMUM RECORD LENGTH 50 $LOOP RDCHAR &INDEV TEST INPUT DEVICE 65 COMPR A,S END TEST FOR OF RECORD 70 JEQ $EXIT EXIT LOOP IF EOR 75 STCH &BUFADR,X STORE CHARACTER IN BUFFER 80 TIXR T LOOP UNLESS MAXIMUM LENGTH 85 JLT $LOOP HAS BEEN REACHED 90 $EXIT STX &RECLTH SAVE RECORD LENGTH 95 MEND (a) . Definition 5 RDCHAR MACRO &IN 10 . 15 . MACRO TO READ CHARACTER INTO REGISTER A 20 . 25 TD =X'&IN' TEST INPUT DEVICE 30 JEQ *-3 LOOP UNTIL READY 35 RD =X'&IN' READ CHARACTER 40 MEND (b) . Invocation RDBUFF BUFFER,LENGTH,F1 (c) Figure 4.11 Example of nested macro invocation.