LIDOU 
          IDENT  LIDOU,FWA,LIDOU
          TITLE  LIDOU - LOGICAL IDENTIFIER OPERATOR UTILITY. 
          ABS 
          SST 
          ENTRY  LIDOU
          ENTRY  RFL= 
          ENTRY  SSJ= 
          SYSCOM B1 
*COMMENT  LIDOU - LOGICAL ID OPERATOR UTILITY.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
*****     LIDOU - LOGICAL IDENTIFIER OPERATOR UTILITY.
* 
*         S. D. PAINTER      83/11/01.
          SPACE  4,15 
*         *LIDOU* IS AN *L* DISPLAY OPERATOR UTILITY THAT DISPLAYS THE
*         *LID* TABLE AND ALLOWS ADDITION, DELETION, OR ALTERATION OF 
*         ATTRIBUTES FOR SPECIFIED LIDS AND THE CAPABILITY TO ENABLE
*         OR DISABLE PIDS IN RELATION TO *NAM*, *RHF*, OR *SSF*. THE
*         CAPABILITY ALSO EXISTS TO FORMAT A LISTING TO THE PRINTER.
*         IF LIDOU IS EXECUTED FROM *DSD* ALL INPUT AND OUTPUT WILL 
*         BE PROCESSED VIA THE CONSOLE *L* DISPLAY.  IF LIDOU IS IN-
*         ITIATED FROM *DIS* OR A BATCH JOB BOTH AN INPUT AND AN OUT- 
*         PUT FILE MUST BE SPECIFIED ON THE CONTROL STATEMENT.
          SPACE  4,10 
***       CONTROL STATEMENT CALL. 
* 
*         LIDOU.                 (FROM CONSOLE ONLY)
*         LIDOU(I=LFN1,L=LFN2).  (FROM *DIS* OR A BATCH JOB)
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         THESE MESSAGES ARE ISSUED TO THE JOB AND SYSTEM DAYFILE.
* 
*         * LIDOU UTILITY COMPLETE.*
*                INDICATES NORMAL TERMINATION.
* 
*         * INCORRECT USER ACCESS.* 
*                CALLING JOB WAS NOT SYSTEM ORIGIN (FATAL ERROR). 
* 
*         * NO INPUT/OUTPUT FILE SPECIFIED.*
*                THE CALLING JOB CANNOT ACCESS THE *L* DISPLAY
*                AND MUST THEREFORE SPECIFY BOTH AN INPUT AND 
*                AN OUTPUT FILE (FATAL ERROR).
* 
*         * FILE NAME CONFLICT.*
*                THE INPUT FILE AND OUTPUT FILE SPECIFIED WERE
*                THE SAME (FATAL ERROR).
* 
*         * INPUT FILE NOT FOUND.*
*                THE INPUT FILE SPECIFIED DOES NOT EXIST (FATAL 
*                ERROR).
          SPACE  4,10 
***       *L* DISPLAY MESSAGES. 
* 
*         NOTE   THE FOLLOWING MESSAGES ARE DISPLAYED ON THE SECOND 
*                TO LAST LINE ON THE *L* DISPLAY WITH THE ECHOED
*                COMMAND ON THE LAST LINE.
* 
*         * COMMAND PROCESSED.* 
*                THE COMMAND ENTERED WAS PROCESSED SUCCESSFULLY.
* 
*         * ERROR IN ATTRIBUTE.*
*                AN ATTRIBUTE WAS SPECIFIED TWICE OR *S* AND *B* OR 
*                *E* AND *D* WERE SPECIFIED TOGETHER OR *V* WAS NOT 
*                SPECIFIED FOR A HOST PID.
* 
*         * LID TABLE EMPTY.* 
*                THE LID TABLE READ FROM CENTRAL MEMORY WAS EMPTY 
*                (PROGRAM TERMINATED).
* 
*         * INCORRECT ATTRIBUTE.* 
*                THE ATTRIBUTE SPECIFIED WAS NOT ONE OF THE 
*                ALLOWABLE ATTRIBUTES FOR THE COMMAND SPECIFIED.
* 
*         * INCORRECT COMMAND.* 
*                THE COMMAND SPECIFIED WAS NOT RECOGNIZED AS ONE OF 
*                THE ALLOWABLE COMMANDS.  SEE AVAILABLE COMMANDS. 
* 
*         * INCORRECT LID.* 
*                THE LID SPECIFIED WAS NOT A CORRECT THREE CHARACTER
*                (ALPHANUMERIC) LID.
* 
*         * INCORRECT MAINFRAME.* 
*                A MAINFRAME DESCRIPTOR OF LENGTH ZERO OR GREATER 
*                THAN SEVEN CHARACTERS WAS SPECIFIED. 
* 
*         * INCORRECT NETWORK.* 
*                THE NETWORK SPECIFIED WAS NOT *RHF*, *NAM*, *SSF*, 
*                OR *ALL*.
* 
*         * INCORRECT SEPARATOR.* 
*                THE SEPARATOR USED WAS NOT A COMMA OR AN EQUAL SIGN
*                AS REQUIRED BY THE COMMAND SYNTAX. 
* 
*         * INCORRECT STATUS.*
*                THE STATUS SPECIFIED WAS NOT *E*, (ENABLE), OR *D* 
*                (DISABLE). 
* 
*         * UTILITY COMPLETE.*
*                INDICATES NORMAL TERMINATION.
* 
*         * LID NOT ALTERED.* 
*                AN ATTEMPT TO ALTER A LID WAS REJECTED BY *SFM*. 
* 
*         * PID NOT ALTERED.* 
*                AN ATTEMPT TO ALTER A PID WAS REJECTED BY *SFM*. 
* 
*         * MAINFRAME NOT SET.* 
*                AN ATTEMPT TO ALTER A MAINFRAME DESCRIPTOR WAS 
*                REJECTED BY *SFM*. 
* 
*         * LID NOT DELETED.* 
*                AN ATTEMPT TO DELETE A LID WAS REJECTED BY *SFM*.
* 
*         * LID NOT FOUND.* 
*                THE LID SPECIFIED COULD NOT BE FOUND IN THE LID
*                TABLE FOR THE SPECIFIED PID. 
* 
*         * NO SPACE AVAILABLE.*
*                NO ROOM EXISTS IN THE LID TABLE TO ADD A LID FOR 
*                THE SPECIFIED PID. 
* 
*         * PID NOT FOUND.* 
*                THE PID SPECIFIED COULD NOT BE FOUND IN THE LID
*                TABLE. 
* 
*         * EXCESS PARAMETERS.* 
*                TOO MANY PARAMETERS WERE SPECIFIED ON THE COMMAND. 
*                SEE LIST OF AVAILABLE COMMANDS.
          SPACE  4,10 
***       AVAILABLE *L* DISPLAY COMMANDS. 
* 
*         L.END              TERMINATE LIDOU
*         L.BACK             FORMAT LID DISPLAY 
*         L.HELP             FORMAT HELP DISPLAY
*         L.+                PAGES THE L DISPLAY FORWARD
*         L.-                PAGES THE L DISPLAY BACKWARD 
*         L.OUT              ROUTES A LISTING OF THE LID TABLE
*         L.PID,PA=XXZ       SET ALL APPLICABLE PID ATTRIBUTES
*         L.PID,NT=NNN,NA=Z  ENABLE/DISABLE NETWORK STATUS
*         L.PID,LD=LID,      ADD OR SET ATTRIBUTES FOR LID
*               LA=YYYZ 
*         L.PID,LD=LID,      DELETE LID FROM LID TABLE
*               DELETE
*         L.PID,MF=MAINFRM   SET MAINFRAME DESCRIPTION
* 
*         PARAMETER DESCRIPTIONS
* 
*         PID IS THE THREE CHARACTER PHYSICAL IDENTIFIER
*         LID IS AN ASSOCIATED THREE CHARACTER LOGICAL
*         IDENTIFIER
*         MAINFRM IS A (ONE TO SEVEN CHARACTER) MAINFRAME 
*         DESCRIPTOR
*         NNN IS THE NETWORK (*RHF*, *SSF*, *NAM*, OR *ALL*)
*         X CAN BE V OR N.  Y CAN BE S, B, V OR N.
*         Z CAN BE E OR D.
* 
*         ATTRIBUTE DESCRIPTIONS
* 
*         S - STORE AND      LIDS FOR LINKED PIDS ONLY
*             FORWARD 
*         B - LOOPBACK       LIDS FOR HOST PIDS ONLY
*         V - VALIDATE       NOTE THAT S AND B CAN NOT
*         D - DISABLE        BE SPECIFIED TOGETHER AND
*         E - ENABLE         ALSO THAT E AND D CAN NOT
*         N - NOLIST         BE SPECIFIED TOGETHER
* 
*         THE LIST OF LEGAL ATTRIBUTE COMBINATIONS FOR
*         LOGICAL IDENTIFIERS (LIDS) IS IN TABLE *TLAT*.
*         THE LIST OF LEGAL ATTRIBUTE COMBINATIONS FOR
*         PHYSICAL IDENTIFIERS (PIDS) IS IN TABLE *TPAT*. 
          SPACE  4,10 
**        COMMON DECKS. 
* 
*CALL     COMCMAC 
*CALL     COMCCMD 
*CALL     COMCDCM 
*CALL     COMSEVT 
*CALL     COMSSFM 
*CALL     COMSSSJ 
          TITLE  DEFINITIONS. 
          SPACE  4,10 
****      ASSEMBLY CONSTANTS. 
  
 INPC     EQU    4           *L* DISPLAY INPUT COMPLETE STATUS
 LBOL     EQU    LDSY        *L* DISPLAY OUTPUT BUFFER LENGTH 
 LBIL     EQU    LCOM        *L* DISPLAY INPUT BUFFER LENGTH
 LIIL     EQU    MXLDT+1     LID TABLE BUFFER LENGTH
 INPL     EQU    101B        LENGTH OF INPUT BUFFER 
 MFTL     EQU    MXPID+1     LENGTH OF MAINFRAME DESCRIPTOR BUFFER
 NMLL     EQU    20B         NUMBER OF LINES TO FORMAT
 OUTL     EQU    101B        LENGTH OF OUTPUT BUFFER
 OUTL     EQU    101B        LENGTH OF OUTPUT BUFFER
 XCDT     EQU    1           *L* DISPLAY FIRST CHARACTER POSITION 
 YCDT     EQU    2           *L* DISPLAY FIRST LINE NUMBER
  
****
          SPACE  4,10 
          ORG    120B 
 FWA      BSS    0
          SPACE  4,10 
**        DAYFILE MESSAGES. 
  
 DAFC     DATA   C* LIDOU UTILITY COMPLETE.*
          SPACE  4,10 
**        *L* DISPLAY MESSAGES. 
  
 MSCP     DATA   20HCOMMAND PROCESSED.
 MSEA     DATA   20HERROR IN ATTRIBUTE. 
 MSET     DATA   20HLID TABLE EMPTY.
 MSIA     DATA   20HINCORRECT ATTRIBUTE.
 MSIC     DATA   20HINCORRECT COMMAND.
 MSIL     DATA   20HINCORRECT LID.
 MSIM     DATA   20HINCORRECT MAINFRAME.
 MSIN     DATA   20HINCORRECT NETWORK.
 MSIP     DATA   20HINCORRECT SEPARATOR.
 MSIS     DATA   20HINCORRECT STATUS. 
 MSLC     DATA   20HUTILITY COMPLETE. 
 MSNA     DATA   20HLID NOT ALTERED.
 MSNC     DATA   20HPID NOT ALTERED.
 MSMF     DATA   20HMAINFRAME NOT SET.
 MSND     DATA   20HLID NOT DELETED.
 MSNF     DATA   20HLID NOT FOUND.
 MSNS     DATA   20HNO SPACE AVAILABLE. 
 MSPN     DATA   20HPID NOT FOUND.
 MSTP     DATA   20HEXCESS PARAMETERS.
          SPACE  4,10 
**        ROLLOUT PARAMETER BLOCK.
  
 ROLL     VFD    30/0,18/LINE,12/10 
          SPACE  4,10 
**        ROUTE PARAMETER BLOCK.
  
 ROTB     DATA   6LOUTPUT 
          BSSZ   6
          SPACE  4,10 
**        SSJ= PARAMETER BLOCK. 
  
 SSJ=     BSS    0           SSJ= ENTRY POINT 
          BSSZ   SSJL        SSJ= PARAMETER BLOCK 
          SPACE  4,10 
**        FET DEFINITIONS.
  
 LIDF     FILEB  LIDI,LIIL,FET=5  LID TABLE FET 
  
 IF       BSS    0
 INPUT    FILEB  INPU,INPL,FET=5  INPUT FET 
  
 LF       BSS    0
 OUTPUT   FILEB  OUTP,OUTL,FET=5  OUTPUT FET
          SPACE  4,10 
**        TLAT - TABLE OF LOGICAL IDENTIFIER ATTRIBUTES.
* 
*T        42/ LA, 14/ 0, 4/ AM. 
* 
*         LA - LID ATTRIBUTES (ALPHABETIC REPRESENTATION).
*         AM - ATTRIBUTE MASK (OCTAL REPRESENTATION). 
* 
*         NOTES  THE FORMAT OF THE ATTRIBUTE MASK IS -
* 
*                1/ S          1 = STORE AND FORWARD
*                1/ B          1 = LOOPBACK 
*                1/ V          1 = VALIDATE 
*                1/ N          1 = NOLIST 
* 
*                THE ALPHABETIC REPRESENTATION EXCLUDES THE *E* 
*                BIT SINCE THE LID DISPLAY HAS A SEPARATE WORD
*                TO SHOW THE ENABLED/DISABLED STATUS. 
  
 TLAT     VFD    42/7L ----  ,14/0,4/00B
          VFD    42/7L ---N  ,14/0,4/01B
          VFD    42/7L -B--  ,14/0,4/02B
          VFD    42/7L -B-N  ,14/0,4/03B
          VFD    42/7L --V-  ,14/0,4/04B
          VFD    42/7L --VN  ,14/0,4/05B
          VFD    42/7L -BV-  ,14/0,4/06B
          VFD    42/7L -BVN  ,14/0,4/07B
          VFD    42/7L S---  ,14/0,4/10B
          VFD    42/7L S--N  ,14/0,4/11B
          VFD    42/7L S-V-  ,14/0,4/14B
          VFD    42/7L S-VN  ,14/0,4/15B
          VFD    60/0        END OF TABLE 
          SPACE  4
**        TPAT - TABLE OF PHYSICAL IDENTIFIER ATTRIBUTES. 
* 
*T        42/ PA, 14/ 0, 4/ AM. 
* 
*         PA - PID ATTRIBUTES (ALPHABETIC REPRESENTATION).
*         AM - ATTRIBUTE MASK (OCTAL REPRESENTATION). 
* 
*         NOTES  THE FORMAT OF THE ATTRIBUTE MASK IS -
* 
*                1/ H/L        1 = HOST, 0 = LINK 
*                1/ E          1 = ENABLE, 0 =DISABLED
*                1/ V          1 = VALIDATE 
*                1/ N          1 = NOLIST 
* 
*                THE ALPHABETIC REPRESENTATION EXPANDS THE *H*
*                BIT TO *H* AND *L* AND EXCLUDES THE *E* BIT
*                SINCE THE LID DISPLAY HAS A SEPARATE WORD TO 
*                SHOW THE ENABLED/DISABLED STATUS.
  
  
 TPAT     VFD    42/7L -L--  ,14/0,4/00B
          VFD    42/7L -L-N  ,14/0,4/01B
          VFD    42/7L -LV-  ,14/0,4/02B
          VFD    42/7L -LVN  ,14/0,4/03B
          VFD    42/7L -L--  ,14/0,4/04B
          VFD    42/7L -L-N  ,14/0,4/05B
          VFD    42/7L -LV-  ,14/0,4/06B
          VFD    42/7L -LVN  ,14/0,4/07B
          VFD    42/7L H---  ,14/0,4/10B
          VFD    42/7L H--N  ,14/0,4/11B
          VFD    42/7L H-V-  ,14/0,4/12B
          VFD    42/7L H-VN  ,14/0,4/13B
          VFD    42/7L H---  ,14/0,4/14B
          VFD    42/7L H--N  ,14/0,4/15B
          VFD    42/7L H-V-  ,14/0,4/16B
          VFD    42/7L H-VN  ,14/0,4/17B
          VFD    60/0        END OF TABLE 
          TITLE  WORKING STORAGE. 
          SPACE  4
  
**        *L* DISPLAY BUFFER FOR LID TABLE DISPLAY. 
  
 LIDA     DATA   8L1         HEADER FOR LISTINGS
          DATA   8L 
          DATA   10H
 LIDB     DATA   50HPID    LID  ENABLED  ATTR     MFTYPE    NETWORK ST
          DATA   8LATUS 
          DATA   50H
          DATA   8L 
 LIDD     DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   10H
 LIDE     DATA   40H
          DATA   8L 
 LIDO     EQU    *-LIDB      COMMAND RESPONSE OFFSET
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          CON    0           END OF BUFFER
          CON    0
          SPACE  4
  
 HLPA     DATA   8L1         HEADER FOR LISTINGS
          DATA   8L 
          DATA   10H
          DATA   50H          LID OPERATOR UTILITY OUTPUT LISTING 
          DATA   8L 
          DATA   50H
          DATA   8L 
  
**        *L* DISPLAY BUFFER FOR PAGE ONE OF HELP DISPLAY.
  
 HLPB     DATA   50HLID OPERATOR UTILITY HELP DISPLAY              PAG
          DATA   8LE 1 OF 2 
          DATA   50H
          DATA   8L 
          DATA   50HCOMMAND                  DESCRIPTION
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50HL.END                    TERMINATE LIDOU
          DATA   8L 
          DATA   50HL.BACK                   FORMAT LID DISPLAY 
          DATA   8L 
          DATA   50HL.HELP                   FORMAT HELP DISPLAY
          DATA   8L 
          DATA   50HL.+                      PAGES THE L DISPLAY FORWA
          DATA   8LRD 
          DATA   50HL.-                      PAGES THE L DISPLAY BACKW
          DATA   8LARD
          DATA   50HL.OUT                    ROUTES A LISTING OF THE L
          DATA   8LID TABLE 
          DATA   50HL.PID,PA=XXZ             SET ALL APPLICABLE PID AT
          DATA   8LTIBUTES
          DATA   50HL.PID,NT=NNN,NA=Z        ENABLE/DISABLE NETWORK ST
          DATA   8LATUS 
          DATA   50HL.PID,LD=LID,LA=YYYZ     ADD OR SET ATTRIBUTES FOR
          DATA   8L LID 
          DATA   50HL.PID,LD=LID,DELETE      DELETE LID FROM LID TABLE
          DATA   8L 
          DATA   50HL.PID,MF=MAINFRM         SET MAINFRAME DESCRIPTION
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50HX CAN BE V OR N.  Y CAN BE S, B, V OR N.  Z CAN BE
          DATA   8L E OR D. 
          DATA   50HALL COMMANDS CAN BE ENTERED FROM THE HELP OR LID D
          DATA   8LISPLAY 
          DATA   50HENTER L.+ FOR MORE HELP (COMPLETE ATTRIBUTE DESCRI
          DATA   8LPTIONS)
          DATA   50H
          DATA   8L 
 HLAO     EQU    *-HLPB      COMMAND RESPONSE OFFSET
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          CON    0           END OF BUFFER
          CON    0
          SPACE  4
  
**        *L* DISPLAY BUFFER FOR PAGE TWO OF HELP DISPLAY.
  
 HLPC     DATA   50HLID OPERATOR UTILITY HELP DISPLAY              PAG
          DATA   8LE 2 OF 2 
          DATA   50H
          DATA   8L 
          DATA   50HATTRIBUTE DESCRIPTIONS
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50HS - STORE AND FORWARD            LIDS FOR LINKED P
          DATA   8LIDS ONLY 
          DATA   50HB - LOOPBACK                     LIDS FOR HOST PID
          DATA   8LS ONLY 
          DATA   50HV - VALIDATE                     NOTE THAT S AND B
          DATA   8L CAN NOT 
          DATA   50HD - DISABLE                      BE SPECIFIED TOGE
          DATA   8LTHER AND 
          DATA   50HE - ENABLE                       ALSO THAT E AND D
          DATA   8L CAN NOT 
          DATA   50HN - NOLIST                       BE SPECIFIED TOGE
          DATA   8LTHER 
          DATA   50H
          DATA   8L 
          DATA   50HPARAMETER DESCRIPTIONS
          DATA   8L 
          DATA   50H
          DATA   8L 
          DATA   50HPID IS THE THREE CHARACTER PHYSICAL IDENTIFIER
          DATA   8L 
          DATA   50HLID IS AN ASSOCIATED THREE CHARACTER LOGICAL IDENT
          DATA   8LIFIER
          DATA   50HX CAN BE V OR N.  Y CAN BE S, B, V OR N.  Z CAN BE
          DATA   8L E OR D. 
          DATA   50HMAINFRM IS A (ONE TO SEVEN CHARACTER) MAINFRAME DE
          DATA   8LSCRIPTOR 
          DATA   50HNNN IS THE NETWORK (*RHF*, *SSF*, *NAM*, OR *ALL*)
          DATA   8L 
          DATA   50HENTER L.- TO SEE THE AVAILABLE COMMANDS 
          DATA   8L 
          DATA   50H
          DATA   8L 
 HLBO     EQU    *-HLPC      COMMAND RESPONSE OFFSET
          DATA   50H
          DATA   8L 
          DATA   50H
          DATA   8L 
          CON    0           END OF BUFFER
          CON    0
          ERRNZ  HLAO-LIDO   COMMAND RESPONSE OFFSET NOT CONSISTENT 
          ERRNZ  HLBO-LIDO   COMMAND RESPONSE OFFSET NOT CONSISTENT 
          SPACE  4
**        CONSTANT DATA.
  
 BLKS     DATA   10H            BLANK MESSAGE 
          DATA   10H
          DATA   8L          WORD OF BLANKS WITH ZERO BYTE
 MORE     DATA   10HMORE        LID DISPLAY WORD FOR MORE DATA
          SPACE  4
**        STORAGE LOCATIONS.
  
 BUFF     BSSZ   2           *GETPP* REPLY BUFFER 
 CHDF     CON    0           CHANGE IN LID DISPLAY FLAG 
 CMLN     CON    0           COMMAND LENGTH FOR OUTPUT FILE 
 EMAD     CON    0           ERROR MESSAGE ADDRESS
 HLPF     CON    0           HELP DISPLAY FLAG
 LCNT     CON    0           LINE COUNT FOR LISTINGS
 LDSF     CON    0           *L* DISPLAY INPUT FLAG 
 IND1     CON    0           FIRST DISPLAYED INDEX IN LID BUFFER
 IND2     CON    0           NEXT INDEX IN LID BUFFER TO BE DISPLAYED 
 PAGC     CON    0           PAGE LINE LIMIT
 PDFC     CON    0           PRINT DENSITY FORMAT CONTROL CHARACTER 
 PDFE     CON    0           PRINT DENSITY FORMAT EFFECTOR FLAG 
 PONE     VFD    42/0,18/HLPB  ADDRESS OF START OF CURRENT HELP PAGE
 PTWO     VFD    42/0,18/HLPC  ADDRESS OF START OF OTHER HELP PAGE
 WBUF     BSSZ   20          WORKING BUFFER 
          TITLE  MAIN PROGRAM.
 LIDOU    SPACE  4,10 
**        LIDOU - MAIN PROGRAM. 
* 
*         CALLS  PCM, PRS.
* 
*         NOTE   CONTROL IS NOT RETURNED FROM ROUTINE *PCM* BUT 
*                RATHER WHEN AN *L.END* COMMAND (OR AN *EOF* IN 
*                THE CASE OF AN INPUT FILE) IS ENCOUNTERD ROU-
*                TINE *LED* IS CALLED WHICH TERMINATES LIDOU. 
* 
  
  
 LIDOU    BSS    0           ENTRY
          RJ     PRS         PRESET 
          SB7    B0+         CLEAR ERROR MESSAGE ADDRESS
          RJ     PCM         PROCESS COMMANDS 
          TITLE  SUBROUTINES. 
 ERR      SPACE  4,15 
**        ERR - ERROR ROUTINE.
* 
*         ENTRY  THE LID TABLE READ FROM CENTRAL MEMORY IS EMPTY. 
* 
*         EXIT   TO *LED* AFTER INITIAL OUTPUT MESSAGE. 
*                (CHDF) = 0.
* 
*         USES   X - 1, 6.
*                A - 1, 6.
*                B - 7. 
* 
*         CALLS  FRS, LED, POF. 
  
 ERR      SA1    MSET        * LID TABLE EMPTY.*
          BX6    X1 
          SA1    A1+B1
          SA6    LBFI+1      MOVE MESSAGE TO COMMAND BUFFER 
          BX6    X1 
          SA6    A6+B1
          SX6    B0+         CLEAR CHANGED FLAG 
          SA6    CHDF 
          SA1    LDSF        CHECK *L* DISPLAY FLAG 
          ZR     X1,ERR1     IF *L* DISPLAY NOT ACTIVE
          SB7    MSLC        * UTILITY COMPLETE*
          RJ     FRS         FORMAT REQUESTED SCREEN
          JP     LED         END UTILITY
  
 ERR1     SB7    MSET        * LID TABLE EMPTY.*
          RJ     POF         PROCESS OUTPUT FILE
          JP     LED         END UTILITY
 FBL      SPACE  4,20 
**        FBL - FORMAT BUFFER FOR LID TABLE.
* 
*         ENTRY  *LIDI* CONTAINS THE REFORMATTED LID TABLE. 
*                *MFTB* CONTAINS THE MAINFRAME AND NETWORK DATA.
*                (NMLL) = THE NUMBER OF USABLE LINES PER SCREEN.
*                (IND1) = INDEX INTO *LIDI* OF FIRST ENTRY
*                         TO BE DISPLAYED.
* 
*         EXIT   *LIDB* CONTAINS THE INFORMATION TO BE DISPLAYED. 
*                (X7) = *MORE DATA* WORD FOR LID DISPLAY. 
*                (X6) = INDEX INTO *LIDI* OF NEXT ENTRY,
*                       (NOT YET DISPLAYED).
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 1, 2, 6. 
*                B - 2, 3.
* 
*         CALLS  FLL, FPL.
  
  
 FBL3     SA1    BLKS        FORMAT BLANK LINE(S) 
          SA2    BLKS+2 
 FBL4     BX6    X1 
          SA6    A6+B1
          SA6    A6+B1
          SA6    A6+B1
          SA6    A6+B1
          SA6    A6+B1
          BX6    X2          STORE END OF LINE
          SA6    A6+B1
          SB3    B3-1        CHECK IF STILL LINES TO FORMAT 
          NZ     B3,FBL4     IF NOT DONE
 FBL5     SA1    LIDI        CHECK IF LAST SCREEN 
          SX6    B2 
          IX3    X6-X1
          SA1    BLKS 
          SA2    MORE 
          BX7    X1 
          PL     X3,FBLX     IF LAST SCREEN 
          BX7    X2 
  
 FBL      SUBR               ENTRY/EXIT 
          SA1    LIDD-1      PRESET ADDRESSES 
          BX6    X1 
          SA6    A1 
          SA2    IND1        GET INDEX INTO *LIDI*
          SB2    X2+
          SB3    NMLL        SET NUMBER OF LINES TO FORMAT
          SA1    LIDI+B2     GET WORD FROM TABLE
          SX2    X1+         CHECK FOR LID OR PID 
          ZR     X2,FBL2     IF LID 
 FBL1     SA2    X2          GET MAINFRAME AND SUBSYSTEM INFORMATION
          LX1    18          RIGHT JUSTIFY PID
          RJ     FPL         FORMAT PID LINE(S) 
          ZR     B3,FBL5     IF NO MORE LINES TO FORMAT 
          SA1    LIDI+B2     GET NEXT WORD FROM TABLE 
 FBL2     SB2    B2+1 
          RJ     FLL         FORMAT LID LINE
          SB3    B3-B1
          SA1    LIDI+B2     GET NEXT WORD FROM TABLE 
          SX2    X1 
          ZR     B3,FBL5     IF NO MORE LINES TO FORMAT 
          ZR     X1,FBL3     IF END OF TABLE
          ZR     X2,FBL2     IF ANOTHER LID 
          EQ     FBL1        FORMAT NEXT PID
 FLL      SPACE  4,15 
**        FLL - FORMAT LID LINE.
* 
*         ENTRY  (X1) = THE WORD (FROM *LIDI*) CONTAINING THE LID.
*                (A6) = ADDRESS (MINUS ONE) TO STORE THE LINE.
* 
*         EXIT   (A6) = ADDRESS (MINUS ONE) TO STORE THE NEXT LINE. 
* 
*         USES   X - 1, 2, 3, 4, 6. 
*                A - 2, 3, 4 ,6.
* 
*         CALLS  GLA. 
  
  
 FLL2     SA2    FLLA+1      SAVE BLANK LID WORD
          BX6    X2 
          SA6    A6+B1
          BX6    X3          ZERO WORDS TWO AND THREE 
          SA6    A6+B1
          SA6    A6+1 
 FLL3     SA6    A6+B1       ZERO WORDS FOUR AND FIVE 
          SA6    A6+B1
          BX6    X4          END OF LINE
          SA6    A6+B1
  
 FLL      SUBR               ENTRY/EXIT 
          SA3    BLKS+1      GET BLANK WORD 
          SA4    A3+B1
          MX6    -18         MASK OFF LID 
          LX1    18 
          BX6    -X6*X1 
          ZR     X6,FLL2     IF ZERO LID
          SA2    FLLA        STORE LID WORD 
          BX6    X6+X2
          SA6    A6+B1
          LX1    6           CHECK FOR ENABLED STATUS 
          SA2    FPLA        GET ENABLED STATUS WORD
          BX6    X2 
          NG     X1,FLL1     IF ENABLED 
          SA2    A2+B1       GET DISABLED STATUS WORD 
          BX6    X2 
 FLL1     SA6    A6+B1       SAVE STATUS WORD 
          LX1    5           RIGHT JUSTIFY ATTRIBUTES 
          RJ     GLA         GET LID ATTRIBUTES 
          SA6    A6+B1       SAVE ATTRIBUTE WORD
          BX6    X3 
          EQ     FLL3        FINISH LINE
  
 FLLA     VFD    42/7L       ,18/0  LID WORD
          VFD    60/10L       ---  BLANK LID WORD 
 FLT      SPACE  4,20 
**        FLT - FORMAT LISTING OF LID TABLE.
* 
*         ENTRY  *LIDI* CONTAINS THE REFORMATTED LID TABLE. 
*                *MFTB* CONTAINS THE MAINFRAME AND NETWORK DATA.
*                (LCNT) = NUMBER OF LINES TO FORMAT PER PAGE. 
*                (A0) = 1.
* 
*         EXIT   LISTING OF THE LID TABLE WRITTEN TO OUTPUT FILE. 
* 
*         USES   X - 0, 1, 2, 4, 5, 6.
*                A - 0, 1, 4, 5, 6. 
*                B - 2, 3, 4. 
* 
*         CALLS  FLL, FPL, GPL. 
* 
*         MACROS WRITEC, WRITEH, WRITEW.
  
  
 FLT      SUBR               ENTRY/EXIT 
          SA1    PDFE 
          NZ     X1,FLT1     IF FORMAT EFFECTOR WRITTEN 
          WRITEC OUTPUT,PDFC  WRITE PRINT DENSITY FORMAT EFFECTOR 
 FLT1     WRITEW OUTPUT,LIDA,15  WRITE PAGE HEADER
          SA1    LCNT        GET LINE COUNT 
          SX6    X1+
 FLT2     SA6    FLTA        SAVE LINE COUNT
          SA1    LIDI+A0     GET WORD FORM TABLE
          SB2    A0 
          SX2    X1          CHECK POINTER TO *MFTB*
          ZR     X1,FLTX     IF END OF TABLE
          ZR     X2,FLT4     IF LID 
          LX1    18          RIGHT JUSTIFY PID
          SA4    X2          GET MAINFRAME AND NETWORK DATA 
          MX0    -12
          BX2    -X0*X4 
          RJ     GPL         GET PID LINE COUNT 
          BX2    X4 
          SA5    BLKS        GET BLANK WORD 
          BX6    X5          STORE BLANK WORD 
          SA6    WBUF 
          SB3    3           SET NUMBER OF LINES
          RJ     FPL         FORMAT PID LINE(S) 
          SA0    B2          SAVE INDEX 
          SX0    B4          SAVE LINE COUNT
          SA1    FLTA        DECREMENT LINE COUNT 
          SB3    X1 
          SB4    B3-B4
          SX6    B4 
          SA6    A1 
          SA5    BLKS        GET BLANK WORD 
          WRITEH OUTPUT,WBUF,7
          SX0    X0-1 
          ZR     X0,FLT3     IF DONE WITH PID LINES 
          BX6    X5          STORE BLANK WORD 
          SA6    WBUF+6 
          WRITEH OUTPUT,WBUF+6,7
          SX0    X0-1 
          ZR     X0,FLT3     IF DONE WITH PID LINES 
          BX6    X5          STORE BLANK WORD 
          SA6    WBUF+12
          WRITEH OUTPUT,WBUF+12,7 
 FLT3     SA1    LIDI+A0     GET NEXT WORD FROM TABLE 
 FLT4     BX6    X5          STORE BLANK WORD 
          SA6    WBUF 
          SA0    A0+B1
          RJ     FLL         FORMAT LINE LINE 
          WRITEH OUTPUT,WBUF,7  WRITE LID LINE
          SA1    FLTA        CHECK LINE COUNT 
          SX6    X1-1 
          PL     X6,FLT2     IF MORE ROOM ON PAGE 
          EQ     FLT1        FORMAT PAGE HEADER 
  
 FLTA     BSS    1           HOLDS LINE COUNT 
 FPL      SPACE  4,20 
**        FPL - FORMAT PID LINE(S). 
* 
*         ENTRY  (X1) = THE PID ENTRY, WITH THE PID RIGHT JUSTIFIED.
*                (X2) = THE MAINFRAME/NETWORK WORD FROM *MFTB*. 
*                (A6) = ADDRESS (MINUS ONE) TO STORE THE LINE(S). 
*                (B2) = THE INDEX INTO *LIDI* FOR THE PID ENTRY.
*                (B3) = THE NUMBER OF LINES LEFT ON THE SCREEN. 
* 
*         EXIT   (A6) = ADDRESS (MINUS ONE) TO STORE NEXT LINE. 
*                (B2) = THE INDEX INTO *LIDI* FOR THE NEXT ENTRY. 
*                (B3) = THE NUMBER OF LINES LEFT ON THE SCREEN. 
* 
*         USES   X - ALL. 
*                A - 3, 4, 6. 
*                B - 2, 3, 5, 6 
* 
*         CALLS  GPA. 
  
  
 FPL6     NZ     X5,FPLX     IF ANY NETWORK INFORMATION WRITTEN 
          SA3    BLKS        BLANK FILL INITIAL LINE
          BX6    X3 
          SA6    A6+B1
          BX6    X0*X6       END OF LINE
          SA6    A6+B1
  
 FPL      SUBR               ENTRY/EXIT 
          SX6    X1          STORE PID WORD 
          SA3    FPLB 
          LX6    -18
          BX6    X6+X3
          SA6    A6+B1       STORE PID WORD 
          SA3    FPLA        GET ENABLED STATUS WORD
          BX6    X3 
          LX1    1           CHECK ENABLED/DISABLED STATUS
          MX0    42 
          SX5    B0          SET INITIAL LINE BEING PROCESSED 
          NG     X1,FPL1     IF ENABLED 
          SA3    A3+B1       GET DISABLED STATUS
          BX6    X3 
 FPL1     SA6    A6+B1       STORE STATUS WORD
          LX1    3           RIGHT JUSTIFY ATTRIBUTES 
          RJ     GPA         GET PID ATTRIBUTES 
          SA6    A6+B1       STORE ATTRIBUTE WORD 
          SX3    3R 
          BX6    X0*X2       STORE MAINFRAME WORD 
          BX3    -X0*X3      MASK OFF SIGN EXTENSION
          BX1    -X0*X2      MASK OFF NETWORK INFORMATION 
          BX6    X6+X3
          SA6    A6+B1
          SA3    FPLD        GET NETWORK WORD 
          SB5    3           NUMBER OF NETWORKS 
          MX2    -4 
          SB2    B2+B1
          SB3    B3-1 
 FPL2     SX7    X3          GET NETWORK IDENTIFIER 
          BX4    -X2*X1 
          SB6    B0 
          LX7    -18         LEFT JUSTIFY NETWORK IDENTIFIER
          SX6    X4-/NTS/ISV
          ZR     X6,FPL4     IF IN SERVICE
          SB6    B6+2 
          SX6    X4-/NTS/OSV
          ZR     X6,FPL4     IF OUT OF SERVICE
          SB6    B6+2 
          SX6    X4-/NTS/DAB
          PL     X6,FPL4     IF DISABLED
 FPL3     SB5    B5-B1
          MX0    48 
          ZR     B5,FPL6     IF ALL NETWORKS CHECKED
          LX1    -4 
          LX3    -18
          EQ     FPL2        CHECK NEXT NETWORK 
  
 FPL4     ZR     X5,FPL5     IF INITIAL LINE
          SB3    B3-B1       DECREMENT LINE COUNT 
          SB2    B2+B1       INCREMENT INDEX INTO *LIDI*
          SA4    BLKS        BLANK FILL START OF LINE 
          BX6    X4 
          SA6    A6+B1
          SA6    A6+B1
          SA6    A6+B1
          SA6    A6+1 
 FPL5     SX5    B1          CLEAR INITIAL LINE 
          SA4    FPLC+B6     STORE FIRST WORD OF NETWORK STATUS 
          BX6    X4+X7       ADD IN NETWORK IDENTIFIER
          SA6    A6+B1
          SA4    A4+B1       STORE SECOND WORD
          BX6    X4 
          SA6    A6+B1
          ZR     B3,FPLX     IF NO MORE LINES ON SCREEN 
          EQ     FPL3        CHECK IF ALL NETWORKS PROCESSED
  
 FPLA     VFD    60/10L    YES     ENABLED
          VFD    60/10L    NO      NOT ENABLED
 FPLB     VFD    18/0,42/7L    ---  PID WORD
 FPLC     VFD    18/0,42/7L IN SER  NETWORK STATUSES
          VFD    60/8LVICE
          VFD    18/0,42/7L OUT OF
          VFD    60/8L SERVICE
          VFD    18/0,42/7L DISABL
          VFD    60/8LED
 FPLD     VFD    6/0         NETWORKS 
          VFD    18/3LSSF 
          VFD    18/3LRHF 
          VFD    18/3LNAM 
 FRL      SPACE  4,15 
**        FRL - FORMAT RESPONSE LINES.
* 
*         ENTRY  (X1) = START OF BUFFER BEING USED. 
*                (X2) = COMMAND RESPONSE OFFSET INTO BUFFER.
*                (B7) = ADDRESS OF ERROR RESPONSE.
*                     = 0, IF NO ERROR MESSAGE. 
* 
*         EXIT   RESPONSE LINES FORMATTED.
*                (X6) = LWA OF BUFFER (FOR *COMCFLD*).
* 
*         USES   X - 2, 3, 6. 
*                A - 2, 3, 6. 
*                B - 3, 4, 7. 
  
  
 FRL1     SA3    B7          FORMAT MESSAGE LINE
          BX6    X3 
          SA6    B4 
          SA3    A3+B1
          BX6    X3 
          SA6    A6+B1
          SB4    A6+5 
 FRL2     BX6    X2          FORMAT COMMAND LINE
          SA6    B4 
          SA2    A2+1 
          SB4    B4+1 
          SB3    B3-1 
          ZR     X2,FRL3     IF END OF INPUT
          NZ     B3,FRL2     IF NOT DONE
 FRL3     SX6    A6+         SAVE END OF BUFFER ADDRESS 
  
 FRL      SUBR               ENTRY/EXIT 
          SB4    X1          CALCULATE MESSAGE ADDRESS
          SB4    X2+B4
          SB3    6           SET COUNTER
          SA2    LBFI+1 
          NZ     B7,FRL1     IF ERROR MESSAGE REQUESTED 
          SB7    BLKS        SET BLANK ERROR MESSAGE
          EQ     FRL1        FORMAT LINES 
 FRS      SPACE  4,30 
**        FRS - FORMAT REQUESTED SCREEN.
* 
*         ENTRY  *LIDI* CONTAINS THE REFORMATTED LID TABLE. 
*                *MFTB* CONTAINS THE MAINFRAME AND NETWORK DATA.
*                (CMRO) = COMMAND RESPONSE OFFSET INTO BUFFER.
*                (B7) = ADDRESS OF ERROR RESPONSE.
*                     = 0, IF NO ERROR MESSAGE. 
*                (IND1) = INDEX INTO *LIDI* OF FIRST ENTRY
*                         TO BE DISPLAYED ON SCREEN 
*                (HLPF) = 1, IF HELP DISPLAY REQUESTED. 
*                       = 0, IF LID TABLE DISPLAY REQUESTED.
*                (PONE) = ADDRESS OF CURRENT HELP PAGE. 
*                (CHDF) = 1, IF LID DISPLAY NEEDS TO BE RE- 
*                            FORMATTED. 
*                       = 0, OTHERWISE. 
* 
*         EXIT   *L* DISPLAY INFORMATION FORMATTED, IF NECESSARY, 
*                AND DISPLAYED. 
*                (IND2) = INDEX INTO *LIDI* OF NEXT ENTRY,
*                         NOT YET DISPLAYED ON SCREEN.
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 1, 2, 6, 7.
*                B - 2, 3, 4, 6.
* 
*         CALLS  FBL, FLB, FRL. 
* 
*         MACROS DSDOUT.
  
 FRS2     SX2    LIDO        SET COMMAND RESPONSE OFFSET
          RJ     FRL         FORMAT RESPONSE LINE 
          SB2    LBFO+1      SET DESTINATION BUFFER ADDRESSES 
          SB6    LBFOE-1
          SB3    XCDT        SET X AND Y STARTING COORDINATES 
          SB4    YCDT 
          SX2    B0          SET DISPLAY CODE FOR *L* DISPLAY 
          SX3    B1 
          RJ     FLB         FORMAT BUFFER FOR *L* DISPLAY
          DSDOUT LBFO        DISPLAY *L* DISPLAY
  
 FRS      SUBR               ENTRY/EXIT 
          SA2    HLPF        CHECK FOR HELP DISPLAY REQUESTED 
          SA1    PONE        SET START OF HELP BUFFER 
          NZ     X2,FRS2     IF HELP DISPLAY REQUESTED
          SA2    CHDF        CHECK FOR LID DISPLAY CHANGE 
          ZR     X2,FRS1     IF NO CHANGE 
          SX6    B0+         CLEAR LID TABLE CHANGED FLAG 
          SA6    CHDF 
          RJ     FBL         FORMAT BUFFER FOR LID TABLE
          SA6    IND2        SAVE NEXT ENTRY INDEX
          SA7    LIDE        STORE *MORE DATA* WORD 
 FRS1     SX1    LIDB        SET START OF LID BUFFER
          EQ     FRS2        FORMAT RESPONSE LINE 
 GLA      SPACE  4,10 
**        GLA - GET LID ATTRIBUTES. 
* 
*         ENTRY  (X1) = LID WORD WITH ATTRIBUTES RIGHT JUSTIFIED. 
* 
*         EXIT   (X6) = ATTRIBUTE WORD (DISPLAY CODE EQUIVALENT). 
*                (X1) = 0, IF NO ERROR. 
*                       NONZERO IF NO MATCH.
* 
*         USES   X - 1, 2, 6. 
*                A - 2. 
  
  
 GLA2     MX1    42 
          SX6    3R 
          BX6    -X1*X6      MASK OFF SIGN EXTENSION
          BX2    X1*X2       MASK OFF ATTRIBUTES
          BX6    X2+X6       ADD IN BLANKS
          SX1    B0+         CLEAR ERROR
  
 GLA      SUBR               ENTRY/EXIT 
          MX2    -4          IGNORE ENABLED BIT 
          BX1    -X2*X1 
          SA2    TLAT        GET TABLE ENTRY
 GLA1     ZR     X2,GLAX     IF END OF TABLE
          SX6    X2 
          BX6    X6-X1       CHECK FOR MATCH
          ZR     X6,GLA2     IF ATTRIBUTES MATCH
          SA2    A2+1 
          EQ     GLA1        CHECK FOR END OF TABLE 
 GLT      SPACE  4,15 
**        GLT - GET LID TABLE.
* 
*         ENTRY  (A1) = ADDRESS OF LID TABLE FET (*LIDF*).
* 
*         EXIT   LID TABLE READ FROM CORE AND, IF NOT EMPTY,
*                *LIDI* CONTAINS THE REFORMATTED LID TABLE AND
*                *MFTB* CONTAINS THE MAINFRAME AND NETWORK DATA.
*                TO *ERR* IF EMPTY LID TABLE. 
* 
*         USES   X - 1, 6, 7. 
*                A - 1, 6.
* 
*         CALLS  RLD. 
* 
*         MACROS GETLIDT. 
  
  
 GLT      SUBR               ENTRY/EXIT 
          SA1    A1+B1       REWIND FET 
          SX6    X1 
          SA6    A1+B1
          SA6    A6+B1
          GETLIDT  LIDF      GET LID TABLE
          SA1    LIDI        GET NUMBER OF PIDS IN TABLE
          MX6    -12
          BX7    -X6*X1 
          ZR     X7,ERR      IF EMPTY TABLE 
          RJ     RLD         REFORMAT LID TABLE 
          EQ     GLTX        RETURN 
 GPA      SPACE  4,10 
**        GPA - GET PID ATTRIBUTES. 
* 
*         ENTRY  (X1) = PID ATTRIBUTES, RIGHT JUSTIFIED.
* 
*         EXIT   (X6) = ATTRIBUTE WORD (DISPLAY CODE EQUIVALENT). 
*                (X1) = 0, IF NO ERROR. 
*                       NONZERO IF NO MATCH.
* 
*         USES   X - 1, 3, 6. 
*                A - 3. 
  
  
 GPA2     MX1    42 
          SX6    3R 
          BX6    -X1*X6      MASK OFF SIGN EXTENSION
          BX3    X1*X3       MASK OFF ATTRIBUTES
          BX6    X3+X6       ADD IN BLANKS
          SX1    B0+         CLEAR ERROR
  
 GPA      SUBR               ENTRY/EXIT 
          MX3    -4 
          BX1    -X3*X1 
          SA3    TPAT        GET TABLE ENTRY
 GPA1     ZR     X3,GPAX     IF END OF TABLE
          SX6    X3 
          BX6    X6-X1       CHECK FOR MATCH
          ZR     X6,GPA2     IF ATTRIBUTES MATCH
          SA3    A3+1 
          EQ     GPA1        CHECK FOR END OF TABLE 
 GPL      SPACE  4,10 
**        GPL - GET PID LINE COUNT. 
* 
*         ENTRY  (X2) = NETWORK INFORMATION FOR PID, RIGHT
*                       JUSTIFIED.
* 
*         EXIT   (B4) = PID LINE COUNT, 1, 2, OR 3. 
* 
*         USES   X - 2, 3, 6, 7.
*                B - 4, 5.
  
  
 GPL4     NZ     B4,GPLX     IF AT LEAST ONE LINE 
          SB4    B1+         SET ONE LINE 
  
 GPL      SUBR               ENTRY/EXIT 
          MX3    -4 
          BX6    -X3*X2 
          SB4    B0          INITIALIZE PID LINE COUNT
          SB5    B1+B1
 GPL1     SX7    X6-/NTS/ISV
          ZR     X7,GPL2     IF *IN SERVICE*
          SX7    X6-/NTS/OSV
          ZR     X7,GPL2     IF *OUT OF SERVICE*
          SX7    X6-/NTS/DAB
          NG     X7,GPL3     IF NOT *DISABLED*
 GPL2     SB4    B4+1        INCREMENT PID LINE COUNT 
 GPL3     SB5    B5-1 
          NG     B5,GPL4     IF DONE WITH ALL THREE NETWORKS
          LX2    -4 
          BX6    -X3*X2 
          EQ     GPL1        PROCESS NEXT NETWORK 
 LED      SPACE  4,15 
**        LED - LIDOU END.
* 
*         EXIT   *L* DISPLAY DROPPED, PROGRAM TERMINATED. 
* 
*         USES   X - 1. 
*                A - 1. 
*                B - 7. 
* 
*         CALLS  FRS, POF.
* 
*         MACROS DSDINP, ENDRUN, MESSAGE, WRITER. 
  
  
 LED      SA1    LDSF        CHECK *L* DISPLAY FLAG 
          SB7    MSLC        * UTILITY COMPLETE.* 
          NZ     X1,LED1     IF *L* DISPLAY ACTIVE
          RJ     POF         PROCESS OUTPUT FILE
          WRITER OUTPUT,R    FLUSH OUTPUT BUFFER
          EQ     LED2        ISSUE DAYFILE MESSAGE AND END
  
 LED1     RJ     FRS         FORMAT REQUESTED SCREEN
          DSDINP LBFI,C      DROP *L* DISPLAY 
 LED2     MESSAGE  DAFC,O,R  * LIDOU UTILITY COMPLETE.* 
          ENDRUN
 PCM      SPACE  4,15 
**        PCM - PROCESS COMMANDS. 
* 
*         ENTRY  (B7) = 0.
* 
*         EXIT   TO *LED* WHEN THE COMMAND *L.END* IS ENCOUNTERED.
* 
*         USES   X - 0, 1, 2, 4, 5, 6, 7. 
*                A - 1, 5, 6. 
*                B - 3, 7.
* 
*         CALLS  FRS, GLT, LED, PIF, PKB, POF, POP, STP.
  
  
 PCM      SUBR               ENTRY/EXIT 
 PCM1     SA1    CHDF        CHECK FOR CHANGE TO LID DISPLAY
          ZR     X1,PCM2     IF NO CHANGE 
          SA1    LIDF        SET FET ADDRESS
          RJ     GLT         GET LID TABLE
 PCM2     SA1    LDSF        CHECK *L* DISPLAY FLAG 
          ZR     X1,PCM9     IF *L* DISPLAY NOT ACTIVE
 PCM3     SX6    B7+         SAVE MESSAGE ADDRESS 
          SA6    EMAD 
          RJ     FRS         FORMAT REQUESTED SCREEN
          MX0    -12         SET MASK 
          RJ     PKB         GET KEYBOARD INPUT 
 PCM4     RJ     POP         PICK OUT FIRST PARAMETER 
          ZR     X6,PCM7     IF NO PARAMETERS 
          SX4    X1-1R. 
          SA5    TLC1        CHECK FOR PRIMARY COMMAND MATCH
          ZR     X1,PCM6     IF ONLY ONE PARAMETER
          ZR     X4,PCM6     IF ONLY ONE PARAMETER
          MX0    -42         CHECK FOR MORE THAN 3 CHARACTERS 
          BX4    -X0*X6 
          NZ     X4,PCM8     IF MORE THAN THREE CHARACTERS
          RJ     STP         SEARCH TABLE FOR PID 
          SB7    MSPN        * PID NOT FOUND.*
          NZ     X2,PCM1     IF PID NOT FOUND 
          SA6    PARB+1      SAVE PID 
          SX6    A5          SAVE PID ADDRESS 
          SA6    A6+B1
 PCM5     SX4    X1-1R, 
          NZ     X4,PCM8     IF INITIAL SEPARATOR NOT *,* 
          SA5    TLC2        CHECK FOR SECONDARY COMMAND MATCH
          RJ     POP         GET NEXT PARAMETER 
          SX4    X1-1R= 
          NZ     X4,PCM8     IF SECONDARY SEPARATOR NOT *=* 
 PCM6     MX0    42 
          ZR     X5,PCM8     IF END OF TABLE
          BX2    X5-X6
          BX2    X0*X2
          SB3    X5 
          SA5    A5+1 
          NZ     X2,PCM6     IF NO MATCH
          JP     B3          PROCESS COMMAND
  
 PCM7     SX4    X1-1R+      CHECK FOR PAGE FORWARD COMMAND 
          SX7    X1-1R-      CHECK FOR PAGE BACKWARD COMMAND
          ZR     X4,PSF      IF PAGE FORWARD COMMAND
          ZR     X7,PSB      IF PAGE BACKWARD COMMAND 
 PCM8     SB7    MSIC        * INCORRECT COMMAND.*
          EQ     PCM1        PROCESS NEXT COMMAND 
  
 PCM9     RJ     POF         PROCESS OUTPUT FILE
          RJ     PIF         PROCESS INPUT FILE 
          EQ     PCM4        PROCESS COMMAND
  
 TLC1     VFD    42/3LEND,18/LED
          VFD    42/3LOUT,18/POC
          VFD    42/4LHELP,18/THD 
          VFD    42/4LBACK,18/TLD 
          VFD    60/0        END OF PRIMARY COMMANDS
  
 TLC2     VFD    42/2LLD,18/SLA 
          VFD    42/2LMF,18/SMF 
          VFD    42/2LNT,18/SNS 
          VFD    42/2LPA,18/SPA 
          VFD    60/0        END OF SECONDARY COMMANDS
  
 PARB     VFD    12/0,12/1,36/0  FUNCTION CODE, PID COUNT 
          VFD    18/0,42/0   PID, FUNCTION DEPENDENT DATA 
          VFD    42/0,18/0   HOLDS PID ADDRESS FOR LID CHECKING 
 PIF      SPACE  4,20 
**        PIF - PROCESS INPUT FILE. 
* 
*         EXIT   COMMAND UNPACKED TO *USBB* IN *COMCUSB*. 
*                (USBC) = LAST WORD ADDRESS OF BUFFER.
*                (CMLN) = CHARACTER COUNT OF COMMAND. 
*                (B6) = FIRST WORD ADDRESS OF BUFFER. 
* 
*         USES   X - 1, 6, 7. 
*                A - 1, 6, 7. 
*                B - 2, 6.
* 
*         MACROS READS. 
* 
*         NOTE   IF NO COMMAND IS PRESENT AN *END* COMMAND
*                WILL BE MOVED INTO THE BUFFER TO TERMINATE 
*                THE PROGRAM.  ALSO, IF THE COMMAND DOES
*                NOT TERMINATE IN A PERIOD THE NEXT WORD
*                IN THE BUFFER IS ZEROED TO SIGNIFY THE 
*                END OF THE COMMAND TO *COMCPOP*. 
  
  
 PIF2     SX7    B6-B1
          SA1    B6-B1       CHECK FOR TERMINATOR 
          SX1    X1-1R. 
          SX6    B0 
          ZR     X1,PIF3     IF *.* TERMINATOR
          SA6    B6          SIGNIFY END OF COMMAND 
 PIF3     SX6    B6-USBB     SAVE COMMAND LENGTH
          SA6    CMLN 
          SB6    USBB        RESET TO START OF BUFFER 
          SA7    USBC 
  
 PIF      SUBR               ENTRY/EXIT 
          SX6    B0+         CLEAR BUFFER 
          SB2    80 
 PIF1     SA6    USBB+B2
          SB2    B2-1 
          PL     B2,PIF1     IF NOT DONE
          READS  INPUT,USBB,80  READ COMMAND
          ZR     X1,PIF2     IF COMMAND PRESENT 
          SX6    1RE         SET *END* COMMAND
          SA6    USBB 
          SX6    1RN
          SA6    A6+B1
          SX6    1RD
          SA6    A6+B1
          SX6    1R.
          SB6    USBB+4      SET COMMAND LENGTH 
          SA6    A6+B1
          SX7    B6 
          EQ     PIF3        SAVE COMMAND LENGTH
 PKB      SPACE  4,15 
**        PKB - PROCESS KEYBOARD. 
* 
*         ENTRY  (X0) = 42 BIT MASK, LEFT JUSTIFIED.
* 
*         EXIT   *L* DISPLAY INPUT IN *LBFI*, AND 
*                UNPACKED TO *USBB* IN *COMCUSB*. 
* 
*         USES   X - 0, 1, 6. 
*                A - 1, 6.
*                B - 2, 7.
* 
*         CALLS  FRS, GLT, USB. 
* 
*         MACROS DSDINP, ROLLOUT. 
  
  
 PKB2     SX6    B0+         CLEAR BUFFER 
          SB2    80 
 PKB3     SA6    USBB+B2
          SB2    B2-1 
          PL     B2,PKB3     IF NOT DONE
          SB2    LBFI+1      UNPACK COMMAND 
          RJ     USB
  
 PKB      SUBR               ENTRY/EXIT 
 PKB1     DSDINP LBFI        CHECK FOR *L* DISPLAY INPUT
          SA1    LBFI 
          BX1    -X0*X1 
          AX1    1           IGNORE COMPLETION BIT
          SX1    X1-INPC
          NZ     X1,PKB2     IF INPUT 
          ROLLOUT  ROLL      ROLLOUT UNTIL *L* DISPLAY INPUT
  
*         REFRESH THE SCREEN. 
  
          SA1    LIDF        SET FET ADDRESS
          RJ     GLT         GET LID TABLE
          SA1    EMAD        GET ERROR MESSAGE ADDRESS
          SB7    X1 
          SX6    B1          SET LID DISPLAY CHANGE FLAG
          SA6    CHDF 
          RJ     FRS         FORMAT REQUESTED SCREEN
          MX0    -12
          EQ     PKB1        CHECK FOR INPUT
 POC      SPACE  4,15 
**        POC - PROCESS OUT COMMAND.
* 
*         EXIT   TO *PCM3* (IF *L* DISPLAY IS ACTIVE).
*                TO *PCM9* (IF *L* DISPLAY INACTIVE). 
*                (POFA) = -1, IF *L* DISPLAY INACTIVE.
* 
*         USES   X - 1, 2, 6. 
*                A - 0, 1, 6. 
*                B - 7. 
* 
*         CALLS  FLT. 
* 
*         MACROS ROUTE, WRITER. 
  
  
 POC      SA1    LDSF        CHECK *L* DISPLAY FLAG 
          ZR     X1,POC1     IF *L* DISPLAY NOT ACTIVE
          SA1    OUTPUT+1    REWIND FET 
          SX6    X1 
          SA6    A1+B1
          SA6    A1+B1
          SA0    B1 
          RJ     FLT         FORMAT LISTING OF LID TABLE
          WRITER OUTPUT,R    FLUSH OUTPUT BUFFER
          SA1    ROTB        CLEAR COMPLETE BIT IN ROUTE BLOCK
          MX2    59 
          BX6    X2*X1
          SA6    A1 
          ROUTE  ROTB,R      ROUTE FILE 
          SB7    MSCP        * COMMAND PROCESSED.*
          EQ     PCM3        CONTINUE PROCESSING COMMAND
  
 POC1     SX6    -B1         CLEAR OUTPUT FILE LINE COUNT 
          SA6    POFA 
          SA0    B1 
          RJ     FLT         FORMAT LISTING OF LID TABLE
          SB7    MSCP        * COMMAND PROCESSED.*
          EQ     PCM9        CONTINUE PROCESSING COMMAND
 POF      SPACE  4,15 
**        POF - PROCESS OUTPUT FILE.
* 
*         ENTRY  (CMLN) = CHARACTER COUNT OF COMMAND. 
*                (B7) = 0, IF INITIAL CALL. 
*                     = ADDRESS OF COMMAND RESPONSE,
*                       IF NOT INITIAL CALL.
* 
*         EXIT   OUTPUT LINE WRITTEN TO OUTPUT FET. 
* 
*         USES   X - 1, 2, 6, 7.
*                A - 0, 1, 2, 6, 7. 
*                B - 7. 
* 
*         MACROS WRITEC, WRITEH, WRITEO, WRITES, WRITEW.
  
  
 POF2     SX6    X1-2        DECREMENT LINE COUNT 
          SA6    POFA 
          SA1    BLKS        WRITE BLANK WORD 
          BX6    X1 
          WRITEO OUTPUT 
          SA1    CMLN        GET COMMAND LENGTH 
          SB7    X1+
          WRITES OUTPUT,USBB,B7  ECHO COMMAND 
          SA1    BLKS+1      WRITE RESPONSE 
          SA2    A0 
          BX6    X1 
          BX7    X2 
          SA6    WBUF 
          SA7    A6+B1
          SA1    A1+B1
          SA2    A2+B1
          BX6    X1 
          BX7    X2 
          SA7    A7+B1
          SA6    A7+B1
          WRITEH OUTPUT,WBUF,4
  
 POF      SUBR               ENTRY/EXIT 
          NZ     B7,POF1     IF NOT INITIAL CALL
          WRITEC OUTPUT,PDFC  WRITE PRINT DENSITY FORMAT EFFECTOR 
          SX6    B1+         SET PRINT DENSITY FORMAT EFFECTOR FLAG 
          SA6    PDFE 
          WRITEW OUTPUT,HLPA,15  WRITE PAGE HEADER
          SA1    LCNT        SET LINE COUNT 
          SX6    X1+
          SA6    POFA 
          EQ     POFX        RETURN 
  
 POF1     SA0    B7+         SAVE COMMAND RESPONSE ADDRESS
          SA1    POFA        CHECK LINE COUNT 
          PL     X1,POF2     IF STILL MORE LINES ON PAGE
          WRITEW OUTPUT,HLPA,15  WRITE PAGE HEADER
          SA1    LCNT        SET LINE COUNT 
          EQ     POF2        DECREMENT LINE COUNT 
  
 POFA     CON    -1          HOLDS LINE COUNT 
 PSB      SPACE  4,20 
**        PSB - PAGE SCREEN BACKWARD. 
* 
*         ENTRY  (IND1) = INDEX INTO *LIDI* OF FIRST ENTRY
*                         DISPLAYED ON SCREEN.
*                (HLPF) = 1, IF HELP DISPLAY IS ACTIVE. 
* 
*         EXIT   TO *PCM3* IF NO ERRORS WERE ENCOUNTERED. 
*                TO *PCM1* IF *L* DISPLAY NOT ACTIVE. 
*                TO *PCM1* IF TOO MANY PARAMETERS.
*                (IND1) UPDATED IF LID DISPLAY CHANGED. 
*                (PONE) = ADDRESS OF CURRENT HELP PAGE. 
*                (CHDF) = 1, IF LID DISPLAY CHANGED.
*                (B7) = ADDRESS OF RESPONSE.
* 
*         USES   X - 1, 2, 6, 7.
*                A - 1, 2, 6, 7.
*                B - 7. 
* 
*         CALLS  POP. 
  
  
 PSB      SA1    LDSF        CHECK IF *L* DISPLAY ACTIVE
          SB7    MSIC        * INCORRECT COMMAND.*
          ZR     X1,PCM1     IF INCORRECT COMMAND FOR INPUT FILE
          RJ     POP         CHECK FOR MORE COMMAND 
          SB7    MSTP        * EXCESS PARAMETERS.*
          NZ     X6,PCM1     IF TOO MANY PARAMETERS 
          SB7    B0+         CLEAR ERROR MESSAGE
          SA1    HLPF        CHECK IF HELP DISPLAY IS ACTIVE
          NZ     X1,PSB3     IF HELP DISPLAY IS ACTIVE
          SA1    IND1        CHECK IF FIRST SCREEN
          SX2    X1-1 
          ZR     X2,PCM3     IF FIRST SCREEN
          SX2    NMLL        PAGE BACKWARDS 
          IX6    X1-X2
          SX6    X6-1 
          PL     X6,PSB1     IF WITHIN BOUNDS 
          SX6    B1+         RESET TO START OF BUFFER 
          EQ     PSB2        SAVE INDEX AND SET CHANGED FLAG
  
 PSB1     SA1    LIDI+X6     CHECK FOR SPACER WORD
          LX1    18 
          SX1    X1 
          NZ     X1,PSB2     IF LID OR PID WORD 
          SX6    X6+1 
          EQ     PSB1        CHECK FOR SECOND SPACER WORD 
  
 PSB2     SA6    IND1        SAVE INDEX 
          SX6    B1+         SET LID DISPLAY CHANGED FLAG 
          SA6    CHDF 
          EQ     PCM3        PROCESS NEXT COMMAND 
  
 PSB3     SA1    PONE        CHECK IF ALREADY PAGE ONE OF HELP DISPLAY
          SX2    HLPB        PAGE ONE OF HELP DISPLAY 
          SB7    B0          CLEAR ERROR MESSAGE
          BX2    X2-X1
          ZR     X2,PCM3     IF ALREADY ON FIRST PAGE OF HELP DISPLAY 
          SA2    PTWO 
          BX6    X1 
          BX7    X2 
          SA6    A2 
          SA7    A1 
          EQ     PCM3        PROCESS NEXT COMMAND 
 PSF      SPACE  4,20 
**        PSF - PAGE SCREEN FORWARD.
* 
*         ENTRY  (IND1) = INDEX INTO *LIDI* OF FIRST ENTRY
*                         DISPLAYED ON SCREEN.
*                (IND2) = INDEX INTO *LIDI* OF NEXT ENTRY,
*                         NOT YET DISPLAYED ON SCREEN.
*                (HLPF) = 1, IF HELP DISPLAY IS ACTIVE. 
* 
*         EXIT   TO *PCM3* IF NO ERRORS WERE ENCOUNTERED. 
*                TO *PCM1* IF *L* DISPLAY NOT ACTIVE. 
*                TO *PCM1* IF TOO MANY PARAMETERS.
*                (IND1) UPDATED IF LID DISPLAY CHANGED. 
*                (PONE) = ADDRESS OF CURRENT HELP PAGE. 
*                (CHDF) = 1, IF LID DISPLAY CHANGED.
*                (B7) = ADDRESS OF RESPONSE.
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 1, 2, 6, 7.
*                B - 7. 
* 
*         CALLS  POP. 
  
  
 PSF      SA1    LDSF        CHECK IF *L* DISPLAY ACTIVE
          SB7    MSIC        * INCORRECT COMMAND.*
          ZR     X1,PCM1     IF INCORRECT COMMAND FOR INPUT FILE
          RJ     POP         CHECK FOR MORE COMMAND 
          SB7    MSTP        * EXCESS PARAMETERS.*
          NZ     X6,PCM1     IF TOO MANY PARAMETERS 
          SB7    B0+         CLEAR ERROR MESSAGE
          SA1    HLPF        CHECK IF HELP DISPLAY IS ACTIVE
          NZ     X1,PSF3     IF HELP DISPLAY IS ACTIVE
          SA1    LIDI        CHECK IF LAST SCREEN 
          SX7    B1          SET LID TABLE CHANGED FLAG 
          SX6    B1          SET LOOP TO FIRST SCREEN 
          SA2    IND2 
          IX3    X2-X1
          PL     X3,PSF2     IF LAST SCREEN 
          BX6    X2          PAGE FORWARD 
 PSF1     SA1    LIDI+X6     CHECK FOR SPACER WORD
          LX1    18 
          SX1    X1 
          NZ     X1,PSF2     IF LID OR PID WORD 
          SX6    X6-1 
          EQ     PSF1        CHECK FOR SECOND SPACER WORD 
  
 PSF2     SA6    IND1        SAVE INDEX 
          SA7    CHDF        SAVE LID TABLE CHANGED FLAG
          EQ     PCM3        CONTINUE PROCESSING COMMAND
  
 PSF3     SA1    PONE        SWAP PAGE HELP PAGE ADDRESSES
          SA2    PTWO 
          BX6    X1 
          BX7    X2 
          SA6    A2 
          SA7    A1 
          SB7    B0+         CLEAR ERROR MESSAGE
          EQ     PCM3        PROCESS NEXT COMMAND 
 RLD      SPACE  4,15 
**        RLD - REFORMAT LID TABLE. 
* 
*         ENTRY  *LIDI* CONTAINS THE LID TABLE FROM CORE. 
*                (A1) = FIRST WORD ADDRESS OF *LIDI*. 
*                (X7) = NUMBER OF PIDS IN TABLE.
* 
*         EXIT   *LIDI* CONTAINS THE REFORMATTED LID TABLE. 
*                *MFTB* CONTAINS THE MAINFRAME AND NETWORK DATA.
* 
*         USES   X - ALL. 
*                A - 1, 6, 7. 
*                B - 2, 3, 4. 
* 
*         CALLS  GPL. 
  
  
 RLD      SUBR               ENTRY/EXIT 
          SA6    LIDI        PRESET ADDRESS IN *LIDI* 
          SA7    MFTB        SAVE NUMBER OF PIDS
 RLD1     MX0    42          SET MASKS
          MX5    -12
          SA1    A1+B1       GET PID WORD 
          BX2    -X5*X1      MASK OFF NETWORK INFORMATION 
          BX3    X0*X1
          SA1    A1+B1       GET MAINFRAME DESCRIPTOR 
          BX7    X0*X1
          BX4    -X5*X1      MASK OFF NEXT PID OFFSET 
          SA1    A1+B1       GET NUMBER OF LID SLOTS
          SX6    A7+B1
          BX7    X7+X2
          BX6    X3+X6
          SA7    A7+B1       SAVE MAINFRAME AND NETWORK INFORMATION 
          SA6    A6+B1       SAVE PID, ATTRIBUTES AND *MFTB* ADDRESS
          RJ     GPL         GET PID LINES
          BX3    -X5*X1 
          SB2    X3          SET SLOT COUNT 
          SB3    X3          SET NON EMPTY SLOT COUNT 
          MX6    24 
          EQ     B4,B1,RLD2  IF NO EXTRA LINES
          LX6    -18
          SA6    A6+B1       STORE DUMMY PID ENTRY
          SB4    B4-B1
          EQ     B4,B1,RLD2  IF ONE EXTRA LINE
          SA6    A6+B1       STORE DUMMY PID ENTRY
 RLD2     SA1    A1+B1       GET LID
          BX6    X0*X1
          ZR     X6,RLD3     IF EMPTY SLOT
          SA6    A6+1        SAVE LID 
          SB3    B3-1        DECREMENT NON EMPTY SLOT COUNT 
 RLD3     SB2    B2-B1       DECREMENT SLOT COUNT 
          NZ     B2,RLD2     IF MORE SLOTS TO CHECK 
          MX6    24 
          ZR     B3,RLD4     IF NO EMPTY SLOTS
          LX6    -18
          SA6    A6+B1       SIGNIFY EMPTY LID
 RLD4     NZ     X4,RLD1     IF NOT END OF TABLE
          SA1    LIDI        SAVE LARGEST TABLE INDEX 
          SB2    A1 
          SX7    A6-B2
          SA7    A1 
          BX6    X6-X6       ZERO WORD FOR END OF REFORMATTED TABLE 
          SA6    A6+1 
          EQ     RLDX        RETURN 
 SET      SPACE  4,15 
**        SET - SET ATTRIBUTE(S). 
* 
*         ENTRY  (X7) = FUNCTION CODE AND PID COUNT FOR 
*                       FIRST WORD OF PARAMETER BLOCK.
*                (X6) = BOTTOM 42 BITS FOR SECOND WORD. 
* 
*         EXIT   (X4) = RETURN CODE FROM *SETPIDA*. 
* 
*         USES   X - 0, 4, 6, 7.
*                A - 4, 6, 7. 
* 
*         MACROS SETPIDA. 
  
  
 SET      SUBR               ENTRY/EXIT 
          LX7    36          POSITION FUNCTION CODE AND PID COUNT 
          SX4    B1+         SET FET NOT BUSY 
          BX7    X7+X4
          SA7    PARB        SET FIRST WORD INTO PARAMETER BLOCK
          SA4    A7+B1       SET BOTTOM 42 BITS INTO SECOND WORD
          MX0    18 
          BX4    X0*X4
          BX6    X4+X6
          SA6    A4 
          MX0    -8 
          SETPIDA  PARB      MAKE *SFM* CALL
          SA4    PARB        MASK OFF RETURN CODE 
          LX4    -10
          BX4    -X0*X4 
          EQ     SETX        RETURN 
 SLA      SPACE  4,25 
**        SLA - SET LID ATTRIBUTE(S). 
* 
*         EXIT   TO *PCM1* IF NO MORE COMMAND TO PROCESS OR ERROR.
*                TO *PCM5* IF NO ERROR AND MORE COMMAND TO PROCESS. 
*                (X1) = SEPARATOR, IF MORE COMMAND TO PROCESS.
*                (CHDF) = 1, IF THE LID TABLE CHANGED.
*                (B7) = ADDRESS OF RESPONSE.
* 
*         USES   X - 0, 1, 2, 4, 5, 6, 7. 
*                A - 4. 
*                B - 7. 
* 
*         CALLS  POP, SET, SLF, STL.
* 
*         NOTE   ATTRIBUTES *D* AND *E* CANNOT BE SPECIFIED TOGETHER
*                AND IF NEITHER IS SPECIFIED THE PRESENT STATUS WILL
*                BE USED WHEN ALTERING ATTRIBUTES AND THE DEFAULT 
*                STATUS OF ENABLE WILL BE USED WHEN ADDING A LID. 
*                ATTRIBUTES *S* AND *B* CANNOT BE SPECIFIED TOGETHER
*                AND *B* IS NOT ALLOWED ON A LINKED PID.  THE *V* 
*                ATTRIBUTE CAN ONLY BE SET IF THE *S* ATTRIBUTE IS SET. 
  
  
 SLA      MX4    6           SET MASKS
          MX0    -42
          RJ     POP         GET NEXT PARAMETER 
          SB7    MSIP        * INCORRECT SEPARATOR.*
          SX7    X1-1R, 
          NZ     X7,PCM1     IF SEPARATOR NOT *,* 
          SB7    MSIL        * INCORRECT LID.*
          BX0    -X0*X6      CHECK FOR CORRECT LID
          BX7    X4*X6
          NZ     X0,PCM1     IF MORE THAN THREE CHARACTERS
          LX4    -6 
          BX5    X4*X6
          LX4    -6 
          BX4    X4*X6
          LX7    6           POSITION CHARACTERS
          LX5    12 
          LX4    18 
          MX2    42          SET MASK 
          ZR     X7,PCM1     IF NO FIRST CHARACTER
          ZR     X5,PCM1     IF NO SECOND CHARACTER 
          ZR     X4,PCM1     IF NO THIRD CHARACTER
          SX7    X7-1R9-1    CHECK FOR ALPHANUMERIC CHARACTERS
          SX5    X5-1R9-1 
          SX4    X4-1R9-1 
          PL     X7,PCM1     IF INCORRECT FIRST CHARACTER 
          PL     X5,PCM1     IF INCORRECT SECOND CHARACTER
          PL     X4,PCM1     IF INCORRECT THIRD CHARACTER 
          RJ     STL         SEARCH TABLE FOR LID 
          SA4    SLAA        CHECK FOR DELETE 
          RJ     POP         GET NEXT PARAMETER 
          SX2    X1-1R= 
          SB7    MSIC        * INCORRECT COMMAND.*
          ZR     X2,SLA1     IF *=* SEPARATOR 
          BX2    X6-X4
          SX6    A0 
          NZ     X2,PCM1     IF NOT *=* AND NOT *DELETE*
          SB7    MSNF        * LID NOT FOUND.*
          NZ     X0,PCM1     IF DELETE AND LID NOT FOUND
          SX7    40001B      SET FUNCTION CODE AND PID COUNT
          ERRNZ  DLDF-4      ADJUST VALUE IF CHANGED
          LX6    24          POSITION LID 
          SX5    X1          SAVE SEPARATOR 
          RJ     SET         DELETE LID 
          SX1    X5          RESTORE SEPARATOR
          SB7    MSND        * LID NOT DELETED.*
          SX7    B1 
          NZ     X4,PCM1     IF ERROR 
          EQ     SLA9        SET CHANGED FLAG 
  
 SLA1     SX2    2RLA        CHECK FOR *LA* 
          LX6    12 
          BX2    X6-X2
          NZ     X2,PCM1     IF NOT *LA*
          RJ     SLF         SET LID FLAGS
          NZ     B7,PCM1     IF ERROR 
          ZR     B3,SLA4     IF NO *S* OR *B* SPECIFIED 
          SA4    PARB+2      PID ENTRY
          SA4    X4 
          LX4    18          CHECK HOST/LINKED STATUS 
          GT     B3,B1,SLA4  IF *S* 
          NG     X4,SLA4     IF HOST PID
 SLA2     SB7    MSEA        * ERROR IN ATTRIBUTE.* 
          EQ     PCM1        PROCESS ERROR
  
 SLA4     ZR     B4,SLA5     IF *V* NOT SPECIFIED 
          LE     B3,B1,SLA2  IF *S* NOT SPECIFIED 
 SLA5     SX7    B1+
          ZR     X0,SLA7     IF ALTERING LID
          NZ     B2,SLA6     IF *D* OR *E* SPECIFIED
          LX7    23 
          BX6    X6+X7       DEFAULT FOR ADDING LID IS ENABLE 
 SLA6     SX7    30001B      ADD LID
          ERRNZ  ALDF-3      ADJUST VALUE IF CHANGED
          SX5    A0          COMBINE LID AND ATTRIBUTES 
          LX5    24 
          BX6    X5+X6
          SX5    X1          SAVE SEPARATOR 
          RJ     SET
          SX1    X5          RESTORE SEPARATOR
          SB7    MSNS        * NO SPACE AVAILABLE.* 
          SX7    B1 
          NZ     X4,PCM1     IF ERROR 
          EQ     SLA9        SET CHANGED FLAG 
  
 SLA7     NZ     B2,SLA8     IF *D* OR *E* SPECIFIED
          SA4    A5          GET LID WORD 
          LX4    24          CHECK PRESENT STATUS 
          PL     X4,SLA8     IF DISABLED
          LX7    23 
          BX6    X6+X7
 SLA8     SX7    50001B      ALTER LID
          ERRNZ  SLTF-5      ADJUST VALUE IF CHANGED
          SX5    A0          COMBINE LID AND ATTRIBUTES 
          LX5    24 
          BX6    X5+X6
          SX5    X1          SAVE SEPARATOR 
          RJ     SET
          SX1    X5+         RESTORE SEPARATOR
          SB7    MSNA        * LID NOT ALTERED.*
          SX7    B1+
          NZ     X4,PCM1     IF ERROR 
 SLA9     SA7    CHDF        SET LID TABLE CHANGED FLAG 
          SX4    X1-1R.      CHECK FOR MORE COMMAND 
          SB7    MSCP        * COMMAND PROCESSED.*
          ZR     X1,PCM1     IF NO MORE COMMAND 
          ZR     X4,PCM1     IF NO MORE COMMAND 
          EQ     PCM5        CONTINUE PROCESSING COMMAND
  
 SLAA     VFD    60/6LDELETE
 SLF      SPACE  4,20 
**        SLF - SET LID FLAGS.
* 
*         EXIT   (B2) = 1, IF *D* SPECIFIED.
*                     = 2, IF *E* SPECIFIED.
*                (B3) = 1, IF *B* SPECIFIED.
*                     = 2, IF *S* SPECIFIED.
*                (B4) = 1, IF *V* SPECIFIED.
*                (B5) = 1, IF *N* SPECIFIED.
*                (B7) = ADDRESS OF RESPONSE.
*                     = 0, IF NO ERROR. 
*                (X6) = ATTRIBUTE MASK. 
*                (X1) = SEPARATOR.
* 
*         USES   X - 2, 3, 4, 5, 6, 7.
*                B - 2, 3, 4, 5, 7. 
* 
*         CALLS  POP. 
* 
*         NOTE   ATTRIBUTES *D* AND *E* CANNOT BE SPECIFIED TOGETHER. 
*                ATTRIBUTES *S* AND *B* CANNOT BE SPECIFIED TOGETHER. 
  
  
 SLF      SUBR               ENTRY/EXIT 
          MX4    -6 
          RJ     POP         GET NEXT PARAMETER 
          SB2    B0          CLEAR FLAGS
          SB3    B0 
          SB4    B0 
          SB5    B0 
          SB7    B0          CLEAR ERROR RESPONSE 
          SX5    B0          CLEAR ATTRIBUTE MASK 
          ZR     X6,SLF8     IF NO CHARACTERS 
 SLF1     LX6    6           SHIFT CHARACTER
          BX3    -X4*X6 
          ZR     X3,SLF8     IF NO MORE CHARACTERS
          SX2    X3-1RE 
          ZR     X2,SLF3     IF *E* 
          SX7    X3-1RD 
          ZR     X7,SLF3     IF *D* 
          SX2    X3-1RS 
          ZR     X2,SLF4     IF *S* 
          SX7    X3-1RB 
          ZR     X7,SLF4     IF *B* 
          SX2    X3-1RV 
          ZR     X2,SLF6     IF *V* 
          SX2    X3-1RN 
          ZR     X2,SLF7     IF *N* 
          SB7    MSIA        * INCORRECT ATTTRIBUTE.* 
          EQ     PCM1        PROCESS ERROR
  
 SLF2     SB7    MSEA        * ERROR IN ATTRIBUTE.* 
          EQ     PCM1        PROCESS ERROR
  
 SLF3     NZ     B2,SLF2     IF SPECIFIED TWICE OR *E* AND *D*
          SB2    1
          NZ     X2,SLF1     IF NOT *E* 
          SB2    2
          SX5    X5+20B 
          EQ     SLF1        PROCESS NEXT CHARACTER 
  
 SLF4     NZ     B3,SLF2     IF SPECIFIED TWICE OR *S* AND *B*
          SB3    1
          NZ     X2,SLF5     IF NOT *S* 
          SB3    2
          SX5    X5+10B 
          EQ     SLF1        PROCESS NEXT CHARACTER 
  
 SLF5     SX5    X5+2 
          EQ     SLF1        PROCESS NEXT CHARACTER 
  
 SLF6     NZ     B4,SLF2     IF SPECIFIED TWICE 
          SX5    X5+4 
          SB4    B1+
          EQ     SLF1        PROCESS NEXT CHARACTER 
  
 SLF7     NZ     B5,SLF2     IF SPECIFIED TWICE 
          SX5    X5+1 
          SB5    B1+
          EQ     SLF1        PROCESS NEXT CHARACTER 
  
 SLF8     SX6    X5          SET ATTRIBUTE MASK 
          LX6    19          POSITION ATTRIBUTE MASK
          EQ     SLFX        RETURN 
 SMF      SPACE  4,15 
**        SMF - SET MAINFRAME TYPE. 
* 
*         EXIT   TO *PCM1* IF NO MORE COMMAND TO PROCESS OR ERROR.
*                TO *PCM5* IF NO ERROR AND MORE COMMAND TO PROCESS. 
*                (X1) = SEPARATOR, IF MORE COMMAND TO PROCESS.
*                (CHDF) = 1, IF THE LID TABLE CHANGED.
*                (B7) = ADDRESS OF RESPONSE.
* 
*         USES   X - 1, 4, 5, 6, 7. 
*                A - 7. 
*                B - 7. 
* 
*         CALLS  POP, SET, SFN. 
  
  
 SMF      RJ     POP         GET NEXT PARAMETER 
          SX5    X1          SAVE SEPARATOR 
          SB7    MSIM        * INCORRECT MAINFRAME.*
          SX7    X6 
          ZR     X6,PCM1     IF NO MAINFRAME
          NZ     X7,PCM1     IF MORE THAN SEVEN CHARACTERS
          MX4    42          SPACE FILL MAINFRAME DESCRIPTOR
          BX1    X6 
          RJ     SFN
          BX6    X4*X6
          SX7    20001B      SET FUNCTION CODE AND PID COUNT
          ERRNZ  SMFF-2      ADJUST VALUE IF CHANGED
          LX6    -18         POSITION MAINFRAME DESCRIPTOR
          RJ     SET         SET MAINFRAME
          SB7    MSMF        * MAINFRAME NOT SET.*
          NZ     X4,PCM1     IF ERROR 
          SB7    MSCP        * COMMAND PROCESSED.*
          SX7    B1          SET LID TABLE CHANGED FLAG 
          SX1    X5          RESTORE SEPARATOR
          SA7    CHDF 
          SX4    X1-1R.      CHECK FOR MORE COMMAND 
          ZR     X1,PCM1     IF NO MORE COMMAND 
          ZR     X4,PCM1     IF NO MORE COMMAND 
          EQ     PCM5        CONTINUE PROCESSING COMMAND
 SNS      SPACE  4,15 
**        SNS - SET NETWORK STATUS. 
* 
*         EXIT   TO *PCM1* IF NO MORE COMMAND TO PROCESS OR ERROR.
*                TO *PCM5* IF NO ERROR AND MORE COMMAND TO PROCESS. 
*                (X1) = SEPARATOR, IF MORE COMMAND TO PROCESS.
*                (CHDF) = 1, IF THE LID TABLE CHANGED.
*                (B7) = ADDRESS OF RESPONSE.
* 
*         USES   X - 0, 1, 4, 5, 6, 7.
*                A - 7. 
*                B - 7. 
* 
*         CALLS  POP, SET.
  
  
 SNS      MX0    -42
          RJ     POP         GET NEXT PARAMETER 
          SB7    MSIP        * INCORRECT SEPARATOR.*
          SX4    X1-1R, 
          NZ     X4,PCM1     IF SEPARATOR NOT *,* 
          SB7    MSIN        * INCORRECT NETWORK.*
          ZR     X6,PCM1     IF NO NETWORK
          BX7    -X0*X6 
          NZ     X7,PCM1     IF MORE THAN THREE CHARACTERS
          LX6    18          POSITION NETWORK 
          SX4    X6-3RNAM 
          SX0    NANS 
          ZR     X4,SNS1     IF *NAM* 
          SX4    X6-3RRHF 
          SX0    RHNS 
          ZR     X4,SNS1     IF *RHF* 
          SX4    X6-3RSSF 
          SX0    SSNS 
          ZR     X4,SNS1     IF *SSF* 
          SX4    X6-3RALL 
          SX0    NANS+RHNS+SSNS 
          ZR     X4,SNS1     IF *ALL* 
          EQ     PCM1        PROCESS ERROR
  
 SNS1     SX4    2RNA        CHECK FOR REST OF COMMAND
          RJ     POP         GET NEXT PARAMETER 
          SB7    MSIP        * INCORRECT SEPARATOR.*
          SX7    X1-1R= 
          NZ     X7,PCM1     IF SEPARATOR NOT *=* 
          LX6    12 
          SB7    MSIC        * INCORRECT COMMAND.*
          BX4    X6-X4
          NZ     X4,PCM1     IF PARAMETER NOT *NA*
          RJ     POP         GET NEXT PARAMETER 
          MX4    -54         CHECK FOR ONLY ONE CHARACTER 
          BX5    -X4*X6 
          SB7    MSIS        * INCORRECT STATUS.* 
          NZ     X5,PCM1     IF MORE THAN ONE CHARACTER 
          BX4    X4*X6
          SX5    X1          SAVE SEPARATOR 
          SX7    10001B      SET FUNCTION CODE AND PID COUNT
          ERRNZ  SNSF-1      ADJUST VALUE IF CHANGED
          SX6    B1+         SET ENABLE NETWORK STATUS
          LX4    6           RIGHT JUSTIFY CHARACTER
          LX6    12 
          SX1    X4-1RE 
          ZR     X1,SNS2     IF ENABLED 
          SX6    X6+10B      SET DISABLE NETWORK STATUS 
          SX1    X4-1RD 
          NZ     X1,PCM1     IF NOT DISABLED
 SNS2     LX0    -12         POSITION NETWORK IDENTIFIER
          BX7    X7+X0       ADD IN NETWORK IDENTIFIER
          RJ     SET         SET NETWORK
          NZ     X4,PCM1     IF ERROR 
          SB7    MSCP        * COMMAND PROCESSED.*
          SX7    B1          LID TABLE CHANGED
          SX1    X5          RESTORE SEPARATOR
          SA7    CHDF 
          SX4    X1-1R.      CHECK FOR MORE COMMAND 
          ZR     X1,PCM1     IF NO MORE COMMAND 
          ZR     X4,PCM1     IF NO MORE COMMAND 
          EQ     PCM5        CONTINUE PROCESSING COMMAND
 SPA      SPACE  4,20 
**        SPA - SET PID ATTRIBUTE(S). 
* 
*         EXIT   TO *PCM1* IF NO MORE COMMAND TO PROCESS OR ERROR.
*                TO *PCM5* IF NO ERROR AND MORE COMMAND TO PROCESS. 
*                (X1) = SEPARATOR, IF MORE COMMAND TO PROCESS.
*                (CHDF) = 1, IF THE LID TABLE CHANGED.
*                (B7) = ADDRESS OF RESPONSE.
* 
*         USES   X - ALL. 
*                A - 1, 7.
*                B - 2, 3, 4, 5, 7. 
* 
*         CALLS  POP, SET.
* 
*         NOTE   ATTRIBUTES *D* AND *E* CANNOT BE SPECIFIED TOGETHER
*                AND IF NEITHER IS SPECIFIED THE PRESENT STATUS WILL
*                BE USED.  *V* MUST BE SPECIFIED ON THE HOST PID. 
  
  
 SPA      RJ     POP         GET NEXT PARAMETER 
          SX5    X1          SAVE SEPARATOR 
          BX3    X6          SAVE CHARACTERS
          SB2    B0+         CLEAR FLAGS
          SB3    B0+
          SB4    B0 
          SB5    B0 
          SX6    B0          CLEAR ATTRIBUTE MASK 
          ZR     X3,SPA7     IF NO CHARACTERS 
          MX0    -6          SET CHARACTER MASK 
 SPA1     LX3    6           SHIFT CHARACTER
          BX1    -X0*X3 
          ZR     X1,SPA7     IF NO MORE CHARACTERS
          SX2    X1-1RE 
          ZR     X2,SPA3     IF *E* 
          SX2    X1-1RD 
          ZR     X2,SPA4     IF *D* 
          SX2    X1-1RV 
          ZR     X2,SPA5     IF *V* 
          SX2    X1-1RN 
          ZR     X2,SPA6     IF *N* 
          SB7    MSIA        * INCORRECT ATTTRIBUTE.* 
          EQ     PCM1        PROCESS ERROR
  
 SPA2     SB7    MSEA        * ERROR IN ATTRIBUTE.* 
          EQ     PCM1        PROCESS ERROR
  
 SPA3     NZ     B2,SPA2     IF SPECIFIED TWICE 
          SX6    X6+4 
          SB2    B1+
          EQ     SPA1        PROCESS NEXT CHARACTER 
  
 SPA4     NZ     B3,SPA2     IF SPECIFIED TWICE 
          SB3    B1+
          EQ     SPA1        PROCESS NEXT CHARACTER 
  
 SPA5     NZ     B4,SPA2     IF SPECIFIED TWICE 
          SX6    X6+2 
          SB4    B1+
          EQ     SPA1        PROCESS NEXT CHARACTER 
  
 SPA6     NZ     B5,SPA2     IF SPECIFIED TWICE 
          SX6    X6+1 
          SB5    B1+
          EQ     SPA1        PROCESS NEXT CHARACTER 
  
 SPA7     SA1    PARB+2      GET PID ATTRIBUTES 
          SA1    X1 
          LX1    59-41
          NZ     B4,SPA8     IF *V* SPECIFIED 
          NG     X1,SPA2     IF *V* NOT SPECIFIED ON HOST 
 SPA8     SX7    B1          SET FUNCTION CODE AND PID COUNT
          ERRNZ  SPAF-0      ADJUST VALUE IF CHANGED
          SB4    B2+B3       CHECK FOR *D* OR *E* 
          GT     B4,B1,SPA2  IF BOTH SPECIFIED
          NZ     B4,SPA9     IF EITHER SPECIFIED
          LX1    59-40-59+41
          SB7    MSNC        * PID NOT ALTERED.*
          PL     X1,SPA9     IF DISABLED
          SX6    X6+4        SET ENABLED BIT
 SPA9     LX6    9           POSITION ATTRIBUTES
          RJ     SET
          NZ     X4,PCM1     IF ERROR 
          SB7    MSCP        * COMMAND PROCESSED.*
          SX7    B1          SET LID TABLE CHANGED FLAG 
          SX1    X5          RESTORE SEPARATOR
          SA7    CHDF 
          SX4    X1-1R.      CHECK FOR MORE COMMAND 
          ZR     X1,PCM1     IF NO MORE COMMAND 
          ZR     X4,PCM1     IF NO MORE COMMAND 
          EQ     PCM5        CONTINUE PROCESSING COMMAND
 STL      SPACE  4,15 
**        STL - SEARCH TABLE FOR LID. 
* 
*         ENTRY  (X6) = LID, LEFT JUSTIFIED.
*                (X2) = 42 BIT MASK, LEFT JUSTIFIED.
*                (PARB+2) = PID ADDRESS (IN *LIDI*) 
* 
* 
*         EXIT   (X0) = ZERO, IF LID FOUND IN TABLE.
*                     = NONZERO, IF LID NOT FOUND.
*                (A5) = ADDRESS OF LID ENTRY, IF FOUND. 
*                (A0) = LID.
* 
*         USES   X - 0, 3, 4, 5, 6. 
*                A - 0, 5.
  
  
 STL      SUBR               ENTRY/EXIT 
          SA5    PARB+2      GET PID ADDRESS
          SA5    X5+B1
          MX3    18 
          LX6    18          SAVE LID 
          SA0    X6+
          LX6    -18
 STL1     BX5    X3*X5       CHECK FOR MATCH
          BX0    X6-X5
          ZR     X0,STLX     IF MATCH 
 STL2     SA5    A5+B1       GET NEXT ENTRY 
          ZR     X5,STLX     IF END OF TABLE
          BX4    -X2*X5      CHECK FOR PID
          NZ     X4,STLX     IF PID 
          EQ     STL1        CHECK NEXT LID 
 STP      SPACE  4,10 
**        STP - SEARCH TABLE FOR PID. 
* 
*         ENTRY  (X6) = PID, LEFT JUSTIFIED.
* 
*         EXIT   (X2) = ZERO, IF PID FOUND IN TABLE.
*                     = NONZERO, IF PID NOT FOUND.
*                (A5) = ADDRESS OF PID ENTRY, IF FOUND. 
* 
*         USES   X - 0, 2, 3, 4, 5. 
*                A - 5. 
  
  
 STP      SUBR               ENTRY/EXIT 
          SA5    LIDI+1 
          MX0    -18
          MX3    18 
 STP1     BX5    X3*X5       CHECK FOR MATCH
          BX2    X6-X5
          ZR     X2,STPX     IF MATCH 
 STP2     SA5    A5+B1       GET NEXT ENTRY 
          ZR     X5,STPX     IF END OF TABLE
          BX4    -X0*X5      CHECK FOR PID
          NZ     X4,STP1     IF PID 
          EQ     STP2        CHECK NEXT ENTRY 
 THD      SPACE  4,15 
**        THD - TOGGLE TO HELP DISPLAY. 
* 
*         EXIT   TO *PCM1* IF *L* DISPLAY NOT ACTIVE. 
*                TO *PCM3* WITH HELP FLAG SET.
*                (B7) = 0, IF DISPLAY ACTIVE. 
* 
*         USES   X - 5, 6.
*                A - 5, 6.
*                B - 7. 
  
  
 THD      SA5    LDSF        CHECK IF *L* DISPLAY ACTIVE
          SB7    MSIC        * INCORRECT COMMAND.*
          ZR     X5,PCM1     IF INCORRECT COMMAND FOR INPUT FILE
          SX6    B1          SET HELP DISPLAY REQUESTED 
          SB7    B0          CLEAR ERROR MESSAGE
          SA6    HLPF 
          EQ     PCM3        PROCESS NEXT COMMAND 
 TLD      SPACE  4,15 
**        TLD - TOGGLE TO LID DISPLAY.
* 
*         EXIT   TO *PCM1* IF *L* DISPLAY NOT ACTIVE. 
*                TO *PCM3* WITH HELP FLAG CLEARED.
*                (B7) = 0, IF DISPLAY ACTIVE. 
* 
*         USES   X - 5, 6.
*                A - 5, 6.
*                B - 7. 
  
  
 TLD      SA5    LDSF        CHECK IF *L* DISPLAY ACTIVE
          SB7    MSIC        * INCORRECT COMMAND.*
          ZR     X5,PCM1     IF INCORRECT COMMAND FOR INPUT FILE
          SX6    B0          CLEAR HELP DISPLAY REQUESTED 
          SB7    B0          CLEAR ERROR MESSAGE
          SA6    HLPF 
          EQ     PCM3        PROCESS NEXT COMMAND 
          SPACE  4,10 
*         COMMON DECKS. 
  
*CALL     COMCCIO 
*CALL     COMCCOD 
*CALL     COMCCPM 
*CALL     COMCFLD 
*CALL     COMCLFM 
*CALL     COMCPOP 
*CALL     COMCRDS 
*CALL     COMCRDW 
*CALL     COMCSFM 
*CALL     COMCSFN 
*CALL     COMCSYS 
*CALL     COMCUSB 
*CALL     COMCWOD 
*CALL     COMCWTC 
*CALL     COMCWTS 
*CALL     COMCWTH 
*CALL     COMCWTO 
*CALL     COMCWTW 
*CALL     COMCZTB 
          TITLE  BUFFERS. 
          SPACE  4,10 
**        BUFFERS.
  
          USE    BUFFERS
  
  
 LIDI     EQU    *           LID TABLE BUFFER 
 LIDIE    EQU    LIDI+LIIL
  
 LBFO     EQU    LIDIE       OUTPUT *L* DISPLAY BUFFER
 LBFOE    EQU    LBFO+LBOL
  
 LBFI     EQU    LBFOE       INPUT *L* DISPLAY BUFFER 
 LBFIE    EQU    LBFI+LBIL
  
 INPU     EQU    LBFIE       INPUT BUFFER 
 INPUE    EQU    INPU+INPL
  
 MFTB     EQU    INPUE       MAINFRAME DESCRIPTOR BUFFER
 MFTBE    EQU    MFTB+MFTL
  
 OUTP     EQU    MFTBE       OUTPUT BUFFER
 OUTPE    EQU    OUTP+OUTL
          TITLE  PRESET.
 PRS      SPACE  4,25 
**        PRS - PRESET. 
* 
*         EXIT   SYSTEM ORIGIN CHECKED FOR, ABORT IF JOB IS NOT 
*                SYSTEM ORIGIN. 
*                INPUT AND OUTPUT FILES CHECKED IF *L* DISPLAY
*                NOT ACTIVE, ABORT IF NOT SPECIFED. 
*                FILE NAME CONFLICT AND INPUT FILE EXISTENCE
*                CHECKED IF *L* DISPLAY NOT ACTIVE, ABORT IF ERROR. 
*                *L* DISPLAY INPUT/OUTPUT BUFFER FIRST WORDS SET, 
*                IF *L* DISPLAY IS ACTIVE.
*                (LDSF) = 1 IF *L* DISPLAY IS ACTIVE. 
*                       = 0 IF SPECIFIED FILES ARE ACTIVE.
*                (LCNT) = LINE COUNT FOR LISTINGS.
*                (NMLL) = SET FOR CONSOLE IN USE. 
*                (CMRO) = SET FOR CONSOLE IN USE. 
*                (CHDF) = 1.
*                (IND1) = 1.
*                (HLPF) = 0.
* 
*         CALLS  ARG. 
* 
*         MACROS ABORT, FILINFO, GETJN, GETPP, MESSAGE, SETFS,
*                SYSTEM, WRITE. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          SB1    1
          SA1    JOPR        CHECK FOR SYSTEM ORIGIN
          MX0    -12
          LX1    36 
          BX1    -X0*X1 
          MX5    42 
          SX1    X1-SYOT
          ZR     X1,PRS1     IF SYSTEM ORIGIN 
          MESSAGE  ERIU      * INCORRECT USER ACCESS.*
          ABORT              ABORT NON SYSTEM ORIGIN JOB
  
 PRS1     GETPP  BUFF,PAGC,PDFC  GET LINES PER PAGE AND PRINT DENSITY 
          SA1    PAGC 
          SX6    X1-6        ENSURE SPACE FOR HEADERS 
          SX7    B1+
          SA6    LCNT 
          SA7    CHDF        SET LID TABLE CHANGED FLAG 
          SYSTEM RSB,R,JSNA  GET POINTER TO *L* DISPLAY WORD
          SA1    JSNB 
          LX1    6
          MX0    -18
          LX0    18 
          BX1    -X0*X1 
          SA2    A1+B1
          BX2    X0*X2
          BX6    X2+X1
          SA6    A2 
          SYSTEM RSB,R,JSNC  GET JSN OF JOB USING *L* DISPLAY 
          GETJN  JSNB        COMPARE TO JSN OF RUNNING JOB
          SA1    JSNB 
          SA2    JSND 
          BX1    X1-X2
          MX0    24 
          BX1    X0*X1
          SX6    B0 
          ZR     X1,PRS6     IF *L* DISPLAY ACTIVE
          SA6    LDSP        CLEAR *L* DISPLAY ACTIVE FLAG
          SA1    ACTR        CHECK ARGUMENT COUNT 
          SB4    X1 
          R=     A4,ARGR     PROCESS ARGUMENTS
          GT     B4,B1,PRS3  IF AT LEAST TWO ARGUMENTS
 PRS2     MESSAGE  ERFS      * NO INPUT/OUTPUT FILE SPECIFIED.* 
          ABORT              FATAL ERROR
  
 PRS3     SB5    TARG 
          RJ     ARG
          NZ     X1,PRS2     IF ARGUMENT ERRORS 
          SA1    TARG 
          SA2    TARG+1 
          PL     X1,PRS2     IF NO INPUT FILE EQUIVALENCED
          PL     X2,PRS2     IF NO OUTPUT FILE EQUIVALENCED 
          SA1    IF 
          SA2    LF 
          MX0    42          CHECK FOR FILE CONFLICT
          BX6    X0*X2
          BX7    X0*X1
          BX1    X6-X7
          NZ     X1,PRS4     IF NO CONFLICT 
          MESSAGE  ERFL      * FILE NAME CONFLICT.* 
          ABORT              FATAL ERROR
  
 PRS4     SA1    FIBK        CHECK FOR INPUT FILE EXISTENCE 
          BX1    -X0*X1 
          BX7    X7+X1
          SA7    FIBK 
          FILINFO  FIBK 
          SA1    FIBK+1 
          AX1    48 
          NZ     X1,PRS5     IF INPUT FILE DOES EXIST 
          MESSAGE  ERNF      * INPUT FILE NOT FOUND.* 
          ABORT              FATAL ERROR
  
 PRS5     SETFS  OUTPUT,0    PRESERVE OUTPUT FILE 
          WRITE  OUTPUT,*    PRESET WRITE FUNCTION
          EQ     PRSX        RETURN 
  
 PRS6     SA1    LDIW        STORE *L* DISPLAY BUFFER FIRST WORDS 
          SA2    LDOW 
          BX6    X1 
          BX7    X2 
          SA6    LBFI 
          SA7    LBFO 
          SX6    B1 
          SX7    B0 
          SA6    LDSF        SET *L* DISPLAY ACTIVE FLAG
          SA6    IND1        SET INDEX INTO *LIDI*
          SA7    HLPF        CLEAR HELP DISPLAY REQUESTED 
          EQ     PRSX        RETURN 
  
 ERFL     DATA   C* FILE NAME CONFLICT.*
 ERFS     DATA   C* NO INPUT/OUTPUT FILE SPECIFIED.*
 ERIU     DATA   C* INCORRECT USER ACCESS.* 
 ERNF     DATA   C* INPUT FILE NOT FOUND.*
  
 FIBK     VFD    42/0,6/FIBKL,12/1  *FILINFO* PARAMETER BLOCK 
          BSS    4
 FIBKL    EQU    *-FIBK 
  
 JSNA     VFD    12/0,12/1,18/LDSP,18/JSNB
 JSNB     CON    -1 
 JSNC     VFD    12/0,12/1,18/0,18/JSND 
 JSND     CON    -1 
  
 LDIW     VFD    12/LBIL,48/0  *L*DISPLAY INPUT BUFFER FIRST WORD 
 LDOW     VFD    12/LBOL,48/0  *L*DISPLAY OUTPUT BUFFER FIRST WORD
  
  
 TARG     BSS    0           ARGUMENT LIST FOR *COMCARG*
 I        ARG    IF,IF,400B  INPUT FILE NAME
 L        ARG    LF,LF,400B  OUTPUT FILE NAME 
          ARG 
          SPACE  4
*         PRESET COMMON DECKS.
  
*CALL     COMCARG 
          SPACE  4,10 
 LIDOUE   EQU    *           END OF PROGRAM 
 .RFL=    MAX    LIDOUE,OUTPE 
 RFL=     EQU    .RFL=
          SPACE  4,10 
          END 
