FLENME

(GIN Macro)

Defined in: MACROS GEM

Used in: DISPCOM867, LISTHEAD863, LISTINIT867, LISTINTC865, QUESCOM867

FLENME.mac.txt
 22FL    #   
 22^=    #              RUTH HEAP
 23DW    #   
 23NN ...[??? FLENME SECT CENT FGN 1 DOC 
 23YG    #     THIS MACRO IS A BIT OF CODE!  
 24D6    #     ITS PURPOSE IS TO GET A FILENAME FROM A BLOCK OR ANY WHERE ELSE.  
 24XQ    #     %A IS THE RELATIVE ADDRESS OF USER-NAME.  
 25CB    #     %B IS        DO            OF LOCAL-FILE-NAME.
 25X2    #     %C DESCRIBED AT END OF MACRO. 
 26BL    #   
 26W=    #     X2 CONTAINS A GEORGE ADDRESS: %A & %B ARE RELATIVE TO THIS.   
 27*W    #     X7 CONTAINS THE GEORGE ADDRESS OF THE O/P BUFFER. 
 27TG    #   
 28*6    #     ALL ACCS ARE USE EXCEPT X3.   
 28SQ    #     X7 WILL POINT TO THE NEXT AVAILABLE CHAR IN THE O/P BUFFER.   
 29#B    #     THE FIRST WORD OF THE RECORD WILL BE THE NUMBER OF CHARACTERS.
 29S2    #     THE FORMAT  IS
 2=?L    #     :USER.LOCAL   
 2=R=    #MAC           FLENME   
 2?=W    #   
 2?QG          LDX   1  7                   [GEO. ADDRESS OF O/P.
 2#=6          STOZ     0(1)                [ZEROISE CH. COUNT.  
 2#PQ          ADN   7  1                   [STEP PAST THE COUNT WORD.   
 2*9B    #   
 2*P2          CALL  5  MFLENME1            [ROUTINE UPDATES COUNT AND INSERTS   
 2B8L ...[                                   FILE-NAME INTO BLOCK.   
 2BN=          LDN   4  #12                 [COLON   
 2C7W          SBN   2  %A                  [SET X2 TO POINT TO LOCAL-   
 2CMG          ADN   2  %B                  [FILE-NAME.  
 2D76          CALL  5  MFLENME1 
 2DLQ          LDN   4  #36                 [FULL STOP.  
 2F6B          BRN      MFLENME6 
 2FL2    #   
 2G5L ...[     TRANSFER ROUTINE. 
 2GK=    #   
 2H4W    MFLENME1
 2HJG          LDN   4  12                  [TOTAL NUMBER OF CHARACTERS. 
 2J46          LDN   6  0
 2JHQ    MFLENME2
 2K3B          LDCH  0  %A(2)               [LOAD CHARACTER. 
 2KH2          SBN   0  #20                 [SPACE   
 2L2L          BNZ   0  MFLENME3 
 2LG=          ADN   6  1                   [NO OF TRAILING SPACE.   
 2L^W          BRN      MFLENME4 
 2MFG    MFLENME3
 2M^6          LDN   6  0                   [ZEROISE NO OF TRAILING SPACES.  
 2NDQ    MFLENME4
 2NYB          BCHX  2  £                   [STEP CHAR. POSN.
 2PD2          BCT   4  MFLENME2 
 2PXL    #   
 2QC=          SBN   2  3                   [SET BACK X2 
 2QWW          LDX   4  %A(2)
 2RBG          BZE   4  MFLENME5            [NOT LOCAL-FILE-NAME 
 2RW6          NGX   4  6
 2S*Q          ADN   4  13                  [NO OF CHARAVTERS.   
 2STB          LDX   0  1                   [STORE X1
 2T*2          ADS   4  0(1)                [ADD NO OF CHARACTERS.   
 2TSL          LDX   1  5                   [ADDRESS OF PARAMETER.   
 2W#=          OBEY     0(1)                [GET COLON OR FULL STOP. 
 2WRW          LDX   1  7                   [PUT ADDRESS INTO MODIFIER   
 2X?G          DCH   4  0(1)                [DEPOSITE
 2XR6          BCHX  7  £                   [STEP PAST   
 2Y=Q          NGX   1  6
 2YQB          ADN   1  12                  [NUMBER OF CHARACTERS
 2^=2          LDN   6  %A(2)               [ADDRESS OF STRING.  
 2^PL          MVCH  6  0(1) 
 329=          LDX   1  0                   [RESTORE X1  
 32NW    MFLENME5
 338G          EXIT  5  1
 33N6    #   
 347Q    #   
 34MB    MFLENME6
 3572    #   
 35LL    #STRING        2,%C 
 366=    #SKI
 36KW    (   
 375G          SBN   2  %B   
 37K6          ADN   2  %A   
 384Q    )   
 38JB ...[              THIS WILL RESTORE X2 TO ITS ORIGINAL VALUE IF %C=2.  
 3942    #   
 39HL    #NOR