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