VALNET
          IDENT  VALNET,FET,VALNET
          ABS 
          SYSCOM B1 
          SST 
*COMMENT  VALNET - VALIDATE TERMINAL DESCRIPTION FILE.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  VALNET - VALIDATE TERMINAL NETWORK DESCRIPTION FILE. 
 VALNET   SPACE  4
***       VALNET - VALIDATE TERMINAL NETWORK DESCRIPTION FILE.
*         J.C. BOHNHOFF. 72/09/09.
 VALNET   SPACE  4
***              VALNET READS A TERMINAL NETWORK DESCRIPTION WRITTEN
*         AS A SERIES OF DIRECTIVES DEFINED BY THE COMMON DECK
*         *COMCRTN*. ERRORS IN NETWORK DESCRIPTION ARE DIAGNOSED AND
*         ERROR MESSAGES ARE PLACED ON A LIST FILE. IF NO ERRORS ARE
*         ENCOUNTERED, NO LISTING IS PRODUCED.
          SPACE  4
***              CONTROL CARD CALL. 
* 
*         VALNET(P1,P2,P3)
* 
*         WHERE PI MAY BE - 
* 
*         P      TERMINAL NETWORK DESCRIPTION FILE NAME.
*                P           FILE *COMPILE*.
*                P=FN        FILE *FN*. 
*                ABSENT      FILE *NETWXX*. 
*                            XX = MACHINE ID. 
* 
*         L      FILE TO RECEIVE LIST OF ERRORS.
*                L           FILE *LIST*
*                L=FN        FILE *FN*. 
*                L=0         NO LIST. 
*                ABSENT      FILE *OUTPUT*. 
* 
*         NR     DO NOT REWIND DESCRIPTION FILE BEFORE READING. 
*                NR          DO NOT REWIND. 
*                ABSENT      REWIND FIRST.
          SPACE  4
***              LISTABLE OUTPUT. 
*         EACH ERROR ENCOUNTERED PRODUCES 2 LINES OF LISTING. THE 
*         LINES CONSIST OF -
*                1) THE INPUT LINE CONTAINING THE ERROR.
*                   SYNTACTICAL ERRORS CAUSE THE LINE CONTAINING THE
*                   ERROR TO BE LISTED. HOWEVER, FOR LOGICAL ERRORS 
*                   (E.G. NOT DEFINING MULTIPLEXOR CHANNEL OR DEFINING
*                   DUPLICATE POLLING CODES) THE CARD CURRENTLY IN THE
*                   BUFFER IS LISTED SINCE THIS TYPE OF ERROR IS NOT
*                   DETECTED UNTIL IT IS CERTAIN THAT THE LAST STATEMENT
*                   IS COMPLETE. THE CARD LISTED IN THIS CASE IS THE
*                   CARD AFTER THE BAD CARD IF THERE IS ONLY ONE
*                   DESCRIPTION PER CARD. ERRORS THAT PERTAIN TO
*                   DUPLICATE POLLING CODES, POLLED/NON-POLLED TERMINALS
*                   ON THE SAME LINE, AND MORE THAN ONE NON-POLLED
*                   TERMINAL ON A LINE CONTAIN A CARD NUMBER OF A 
*                   PREVIOUSLY DEFINED TERMINAL THAT CAUSED THE ERROR 
*                   TO BE DETECTED. IF ONLY ONE DESCRIPTION IS GIVEN ON 
*                   EACH CARD, THIS CARD NUMBER WILL BE CORRECT,
*                   OTHERWISE IT WILL BE ONE LESS THAN THE CORRECT
*                   NUMBER. 
*                2) CARD NUMBER OF OFFENDING CARD.
*                   THIS IS SUBJECT TO THE SAME EXCEPTIONS AS NOTED 
*                   ABOVE IN ITEM 1.
*                3) A DIAGNOSTIC MESSAGE EXPLAINING THE ERROR.
* 
*         LIST LINES ARE FORMATTED FOR PRINTING ON A 72 COLUMN DEVICE 
*         EXCEPT FOR THOSE INPUT LINES THAT EXCEED THIS LENGTH. 
          SPACE  4
***              DAYFILE MESSAGES ISSUED. 
* 
*         * NO DESCRIPTIONS FOUND.* 
*                NO MUX/TERMINAL DESCRIPTIONS WERE FOUND ON THE 
*                DESCRIPTION RECORD.
*         * FILE NAME CONFLICT.*
*                THE *P* FILE NAME IS THE SAME AS THE *L* FILE NAME.
*         * TERMINAL DESCRIPTION ERRORS.* 
*                ERRORS WERE FOUND IN THE TERMINAL DESCRIPTIONS.
*                CONSULT LISTING FOR DIAGNOSTIC MESSAGES. 
*         * VALNET ARGUMENT ERROR.* 
*                THE VALNET CONTROL CARD CONTAINS UNKNOWN OR
*                INCORRECTLY USED ARGUMENTS.
*         * VALNET COMPLETE.* 
*                ALL DESCRIPTIONS HAVE BEEN VALIDATED AS CORRECT. 
*         * TABLE OVERFLOW.*
*                NOT ENOUGH STORAGE WAS AVAILABLE TO HOLD ALL TERMINAL
*                DESCRIPTION TABLE ENTRIES. RERUN WITH GREATER FIELD
*                LENGTH.
          TITLE  SYMBOL DEFINITIONS.
 BUFFERS  SPACE  4,10 
*         BUFFER SIZES. 
  
 PBUFL    EQU    1001B       DESCRIPTION FILE 
 OBUFL    EQU    401B        LIST FILE
          LIST   X
*CALL,COMSNET 
          LIST   -X 
          TITLE  MACRO DEFINITIONS. 
*         SYSTEM MACRO DEFINITIONS. 
  
  
*CALL     COMCMAC 
*CALL     COMCCMD 
*CALL,COMCMTM 
          TITLE  FET AND TABLE DEFINITIONS. 
*         FET DEFINITIONS.
  
  
          ORG    101B 
  
 FET      BSS    0
  
 P        BSS    0           DESCRIPTION FILE 
 NETWXX   FILEC  PBUF,PBUFL,(FET=8) 
  
 O        BSS    0           LIST FILE
 OUTPUT   FILEC  OBUF,OBUFL,(FET=8) 
          SPACE  4
**        MANAGED TABLE DEFINITION. 
  
  
**        TTED - TABLE OF TERMINAL DESCRIPTIONS.
*         TWO WORDS PER ENTRY IN FORMAT - 
* 
*T TTED   6/ CH,3/EQ,12/  PN,12/ ,24/  PC,3/IS
*T        60/  CARD 
* 
*         WHERE - 
*                CH= MUX CHANNEL. 
*                EQ= MUX EQUIPMENT. 
*                PN= PORT NUMBER. 
*                PC= POLLING CODE.
*                IS= INITIAL ON/OFF STATUS. 
*                CARD= CARD NUMBER. 
  
  
 TTED     TABLE  2
          TITLE  MAIN PROGRAM.
*         MAIN PROGRAM. 
  
  
 VALNET   RJ     PRS         PRESET PROGRAM 
          RJ     RTN         READ TERMINAL DESCRIPTIONS 
          SX2    =C* NO DESCRIPTIONS FOUND.*
          ZR     X4,VAL1     IF NO DESCRIPTIONS PROCESSED 
          SX2    =C* VALNET COMPLETE.*
          ZR     X1,VAL2     IF NO ERRORS 
          RJ     CDD         CONVERT ERROR COUNT
          SA6    VALC        STORE ERROR COUNT
          RJ     CEP         CHECK END OF PAGE
          WRITEW O,VALA,B1   DOUBLE SPACE 
          WRITEW O,VALB,VALBL WRITE ERROR COUNT 
          WRITER O           END OUTPUT RECORD
          SX2    =C* TERMINAL DESCRIPTION ERRORS.*
 VAL1     MESSAGE X2
          ABORT 
  
 VAL2     MESSAGE X2         ISSUE COMPLETION MESSAGE 
          ENDRUN
  
 LN       CON    LINP        CURRENT LINE NUMBER ON LIST PAGE 
 PG       CON    1           CURRENT LIST PAGE
 VALA     DIS    ,*0 *
 VALB     DATA   10H        //
 VALC     CON    0           ERROR COUNT
          DATA   20H ERRORS ENCOUNTERED.
          CON    0
 VALBL    EQU    *-VALB 
 CEP      TITLE  SUBROUTINES. 
**        CEP - CHECK END OF LISTING PAGE.
* 
*         ENTRY  NONE.
* 
*         EXIT   NONE.
* 
*         USES   B - 7. 
*                A - 1,6. 
*                X - 1,6,7. 
* 
*         CALLS  CDD,SYS=,WTW.
  
  
 CEP1     SA7    LN          STORE UPDATED LINE COUNT 
  
 CEP      SUBR               ENTRY/EXIT 
          SA1    LN          ADVANCE LINE COUNT 
          SB7    X1-LINP     CHECK END OF PAGE
          SX7    X1+3 
          NG     B7,CEP1     IF NOT END OF PAGE 
          SA1    PG          CONVERT PAGE NUMBER
          RJ     CDD
          SA1    CEPE        MERGE *PAGE* 
          BX6    X1-X6
          SA6    CEPD 
          CLOCK  CEPC        SET TIME 
          WRITEW O,CEPA,CEPAL WRITE PAGE HEADER 
          SA1    PG          ADVANCE PAGE NUMBER
          SX7    4           RESET LINE COUNT 
          SX6    X1+B1
          SA6    A1 
          JP     CEP1 
  
 CEPA     DATA   10H1 
          DATA   30HTERMINAL DESCRIPTION ERRORS.
 CEPB     CON    0           DATE 
 CEPC     CON    0           TIME 
 CEPD     CON    0           PAGE 
          CON    0
          DIS    ,*0 *
 CEPAL    EQU    *-CEPA 
 CEPE     CON    5LPAGE &5L 
 MEP      SPACE  4
**        MEP - PARTIAL SEARCH OF MANAGED TABLE.
* 
*         ENTRY  (X6)= ENTRY FOR SEARCH.
*                (X0)= MASK.
*                (X2)= SEARCH LIMIT.
*                (X7)= STARTING ENTRY ORDINAL FOR SEARCH. 
*                (B7)= WORDS PER ENTRY. 
*                (A0)= TABLE NUMBER.
* 
*         EXIT   (X2)= ENTRY IF FOUND, ELSE ZERO. 
*                (A2)= ADDRESS OF ENTRY.
* 
*         USES   B - NONE.
*                A - 1,2,6. 
*                X - 1,2,3,4,7. 
* 
*         CALLS  NONE.
  
  
 MEP1     BX4    X0*X2
          SA1    A1+B7       READ NEXT ENTRY
          NO
          BX2    X6-X1
          NZ     X4,MEP1     LOOP TO MATCH
          SX4    A1-B7       CHECK ENTRY FOUND
          BX2    X4-X3
          ZR     X2,MEP2     IF NOT FOUND 
          SA2    X4+         RETURN ENTRY 
 MEP2     SA7    A6+         RESTORE (LWA+1)
  
 MEP      PS                 ENTRY/EXIT 
          SA1    FTAB+A0     SET SEARCH PARAMETERS
          IX7    X1+X7
          IX3    X1+X2       SET SEARCH KEY IN LWA+1
          SA2    X3          SAVE (LWA+1) 
          SA6    X3 
          SA1    X7          READ FIRST ENTRY 
          LX7    X2 
          BX2    X6-X1
          EQ     MEP1 
 RTN      SPACE  4
**        RTN - READ TERMINAL DESCRIPTIONS. 
* 
*         ENTRY  NONE.
* 
*         EXIT   (X1)= ERROR COUNT. 
*                (X4)= 0 IF NO CARDS PROCESSED. 
* 
*         USES   B - 7. 
*                A - 0,1,2,3,6,7. 
*                X - 0,1,2,3,4,5,6,7. 
* 
*         CALLS  ATD,CEP,WTW,WTS,CDD,WTC,ADW,MEP. 
  
  
 RTN12    SA1    RTNF        RETURN ERROR COUNT 
  
 RTN      SUBR               ENTRY/EXIT 
 RTN1     SX5    P           SET FET ADDRESS
          SA0    PTRN        SET TABLE POINTER ADDRESS
          RJ     ATD         ASSEMBLE DESCRIPTION 
          NZ     X1,RTN10    IF ERROR 
  
*         ENTER DESCRIPTION INTO TABLE. 
  
          SA1    /COMCRTN/PN. PN,PL 
          SA2    /COMCRTN/CH. CH
          SA3    /COMCRTN/EQ. EQ
          UX1,B7 X1          X1=PN,B7=PL
          UX2    X2          CH 
          LX1    39-0        PN 
          UX3    X3          EQ 
          LX2    54-0        CH 
          LX3    51-0        EQ 
          BX6    X1+X2       PN+CH
          SA1    /COMCRTN/PC. PC
          BX7    X6+X3       (PN+CH)+EQ 
          LX1    3-0         PC 
          SA3    /COMCRTN/IS. IS
          BX6    X1+X3       PC+IS
          ADDWRD TTED,X6+X7  ENTER WORD 0 
          SA5    /COMCRTN/CC ENTER WORD 1 
          SB6    X3          SAVE POSITION OF FIRST PORT ENTRY
          BX0    X1          SAVE WORD 0
          SX5    X5-1 
          SB5    X3          INITIALIZE LAST PORT POSITION
          ADDWRD TTED,X5
 RTN2     ZR     B7,RTN3     IF NO (MORE) PORTS 
          SX1    B1          ADVANCE PORT NUMBER
          SB7    B7-B1       DECREMENT PORT COUNT 
          LX1    39-0 
          IX0    X0+X1
          ADDWRD TTED,X0     ENTER WORD 0 
          SB5    X3          UPDATE LAST PORT POSITION
          ADDWRD TTED,X5     ENTER WORD 1 
          JP     RTN2        LOOP FOR ALL PORTS 
  
*         CHECK DESCRIPTION.
  
 RTN3     SA0    TTED        SET TABLE NUMBER 
          SB7    C.TTED      SET ENTRY SIZE 
          BX7    X7-X7       SET SEARCH START 
          SX5    B6-B1       SET SEARCH LIMIT AT FIRST PORT 
          BX6    X0 
          MX0    -39         SET SEARCH MASK FOR CH,EQ,PN 
 RTN4     SX2    X5          SET SEARCH LIMIT 
          RJ     MEP         SEARCH TABLE 
          NZ     X2,RTN5     IF MATCH 
          EQ     B5,B6,RTN1  IF FIRST PORT CHECKED
          SA1    F.TTED      CHECK NEXT PORT
          SX1    X1-1 
          SB5    B5-B7       DECREMENT PORT POSITION
          SA1    X1+B5
          BX6    X1 
          JP     RTN4 
  
*         CHECK DUPLICATE POLLING CODE. 
  
 RTN5     SA4    /COMCRTN/PC. CHECK THIS TERMINAL POLLED
          ZR     X4,RTN6     IF NOT POLLED
          SA1    RTNG 
          BX7    X2-X6
          BX7    X1*X7
          NZ     X7,RTN6     IF DIFFERENT POLLING CODE
          LX2    59-0 
          NG     X2,RTN6     IF BOTH TERMINALS ARE OFF
          SA1    A2+B1       READ CARD NUMBER OF FIRST TERMINAL 
          RJ     CDD         CONVERT
          SX6    1R &1R.     INSERT PERIOD
          LX6    54-0 
          AX6    X6,B2
          BX7    X4-X6
          SA7    RTNI 
          SX2    RTNH        LIST ERROR 
          JP     RTN11
  
*         CHECK POLLED AND NON-POLLED ON SAME LINE. 
  
 RTN6     MX7    -24
          AX2    3
          BX7    -X7*X2 
          BX2    X4+X7
          ZR     X2,RTN8     IF BOTH TERMINALS ARE NON-POLLED 
          ZR     X7,RTN7     IF FIRST TERMINAL NON-POLLED 
          NZ     X4,RTN9     IF BOTH TERMINALS ARE POLLED 
 RTN7     SA1    A2+1        READ CARD NUMBER OF FIRST TERMINAL 
          RJ     CDD         CONVERT
          SX6    1R &1R.     INSERT PERIOD
          LX6    54-0 
          AX6    X6,B2
          BX7    X4-X6
          LX7    -6 
          SA7    RTNK 
          SX2    RTNJ        LIST ERROR 
          JP     RTN11
  
*         PROCESS MULTIPLE NON-POLLED TERMINALS ON SAME LINE. 
  
 RTN8     SA3    /COMCRTN/TT. 
          SA2    A2+B1       READ CARD NUMBER OF FIRST TERMINAL 
          LX3    59-11
          NG     X3,RTN9     IF TRANSACTION TERMINAL
          RJ     CDD         CONVERT
          SX6    1R &1R.     INSERT PERIOD
          LX6    54-0 
          AX6    X6,B2
          BX7    X4-X6
          SA7    RTNM 
          SX2    RTNL        LIST ERROR 
          JP     RTN11
  
*         ADVANCE SEARCH. 
  
 RTN9     SA1    F.TTED      SET SEARCH START AFTER CURRENT ENTRY 
          SX7    A2+B7
          IX7    X7-X1
          JP     RTN4 
  
*         LIST ERROR. 
  
 RTN10    ZR     X4,RTNX     IF NO CARDS PROCESSED - RETURN 
          NG     X4,RTN12    IF EOR/EOF 
 RTN11    SX5    X2          SAVE ERROR MESSAGE ADDRESS 
          RJ     CEP         CHECK END OF PAGE
          WRITEW O,RTNA,B1   WRITE LINE PREFIX
          WRITES O,/COMCRTN/CD,90 WRITE INPUT CARD
          SA1    /COMCRTN/CC CONVERT CARD NUMBER
          RJ     CDD
          SA1    RTNB        INSERT *CARD*
          BX6    X1-X6
          SA6    RTND 
          WRITEW O,RTNC,B1+B1 WRITE ERROR PREFIX
          WRITEC O,X5        WRITE ERROR MESSAGE
          WRITEW O,RTNE,B1   SPACE ONE LINE 
          SA1    RTNF        ADVANCE ERROR COUNT
          SX6    X1+B1
          SA6    A1 
          JP     RTN1        CONTINUE 
  
 RTNA     DATA   10H
 RTNB     CON    5LCARD &5L 
 RTNC     DATA   10H
 RTND     CON    0
 RTNE     DIS    ,* * 
 RTNF     CON    0
 RTNG     VFD    6/0,3/0,12/0,12/0,24/-0,3/-0 
 RTNH     DATA   40H POLLING CODE DUPLICATES THAT OF CARD 
 RTNI     CON    0,0
 RTNJ     DATA   40H POLLED TERMINAL ON SAME LINE AS NON-POL
          DATA   20HLED TERMINAL ON CARD
 RTNK     CON    0,0
 RTNL     DATA   50H NON-POLLED TERMINAL ON SAME LINE AS THAT OF CARD 
 RTNM     CON    0,0
 TOV      SPACE  4
**        TOV - PROCESS TABLE OVERFLOW. 
* 
*         ENTRY  NONE.
* 
*         EXIT   NONE.
* 
*         USES   NONE.
* 
*         CALLS  SYS=.
  
  
 TOV      BSS    0           ENTRY
          MESSAGE (=C* TABLE OVERFLOW.*)
          ABORT 
 SYS      SPACE  4
*         SYSTEM COMMON DECKS.
  
  
          LIST   X
*CALL     COMCRTN 
          LIST   -X 
*CALL     COMCSYS 
*CALL     COMCCIO 
*CALL     COMCRDW 
*CALL     COMCRDS 
*CALL     COMCWTS 
*CALL     COMCWTW 
*CALL     COMCWTC 
*CALL     COMCDXB 
*CALL     COMCCDD 
*CALL,COMCMTP 
*CALL,COMCMVE 
          TITLE  BUFFERS
*         BUFFERS.
  
  
          USE    BUFFERS
 PTRN     VFD    30/1200,30/TTRN TERMINAL NAME TABLE POINTER
 BUFFERS  BSS    0
 PBUF     BSS    PBUFL       DESCRIPTION FILE 
 OBUF     BSS    OBUFL       LIST FILE
 TTRN     BSS    1200        KTS TERMINAL NAME TABLE
 MEML     BSS    5           LOW TABLE LIMIT
          USE    *
 PRS      TITLE  PRESET.
**        PRS - PRESET VALNET.
* 
*         ENTRY  NONE.
* 
*         EXIT   NONE.
* 
*         USES   B - 4,5. 
*                A - 1,2,4,7. 
*                X - 1,2,4,6,7. 
* 
*         CALLS  ARG,SYS=.
  
  
          ORG    BUFFERS
  
 PRS      SUBR               ENTRY/EXIT 
          SB1    1           SET CONSTANT 1 
          MACHID PRSB        GENERATE DEFAULT NETWORK FILE NAME 
          SA1    PRSB 
          SA2    P
          MX0    12 
          LX1    24 
          LX0    -24
          BX6    -X0*X2 
          BX6    X6+X1
          SA6    A2 
          SA1    ACTR        PROCESS CONTROL CARD ARGUMENTS 
          SB4    X1+
          SA4    ARGR 
          SB5    TARG 
          RJ     ARG
          SX2    =C* VALNET ARGUMENT ERROR.*
          ZR     X1,PRS2     IF NO ERROR
 PRS1     MESSAGE X2         ISSUE DAYFILE MESSAGE
          ABORT 
 PRS2     SA1    P           CHECK FILE NAME CONFLICT 
          SA2    O
          MX0    42 
          BX6    X1-X2
          SX2    =C* FILE NAME CONFLICT.* 
          BX7    X0*X6
          ZR     X7,PRS1     IF P=L 
          SX6    A0          SET HIGH TABLE LIMIT 
          SA6    F.TEND 
          DATE   CEPB        GET DATE 
          SA1    PRSA        SET FET POINTER
          BX6    X1 
          SA6    B1+B1
          SA1    NR          CHECK REWIND NEEDED
          NZ     X1,PRSX     RETURN - IF NO REWIND
          REWIND P,R         REWIND DESCRIPTION FILE
          JP     PRSX        RETURN 
  
 PRSA     CON    0LOUTPUT+O 
 PRSB     BSSZ   1           MACHINE ID RECEIVING AREA
 TARG     SPACE  4
*         TARG - CONTROL CARD ARGUMENT TABLE. 
  
  
 TARG     BSS    0
 P        ARG    PAS,P
 L        ARG    LAS,O,400B 
 NR       ARG    -NAS,NR
          CON    0
  
 PAS      CON    0LCOMPILE+3
 LAS      CON    0LLIST+3 
 NAS      CON    1
 NR       CON    0           *NO REWIND* FLAG (=0 IF REWIND)
          SPACE  4
*         PRESET COMMON DECKS.
  
*CALL     COMCARG 
*CALL     COMCCPM 
  
          END 
