cdc:nos2.source:nam5871:ndlnfcm
Table of Contents
NDLNFCM
Table Of Contents
- [00008] PROC NDLNFCM
- [00012] NDL$COM - CHECKS COMMUNICATION ELEMENT STATEMENTS
- [00059] PROC LFGCKSM
- [00060] PROC SSTATS
- [00061] PROC READW
- [00062] PROC NDLTRNK
- [00063] PROC NDLEM2
- [00064] PROC NDLWLCR
- [00065] PROC NDLWNCF
- [00405] PROC C$USR$PRM1(PARAM$USED,CLR$WRD)
- [00446] PROC C$USR$PRM2(PARAM$VAL,CLR$WRD)
- [00486] PROC DEVPR
- [00490] DEVPR - DEVICE STATEMENT PROC.
- [00584] PROC NDLEM2
- [00585] FUNC XCHD C(10)
- [00779] PROC CHCONTRL(CHKWID,CHLNUM,STAT,VALUE)
- [00863] PROC ASYDEV
- [00867] ASYDEV - CHECK ASYNC DEVICE PARAMRTERS.
- [00918] PROC NDLEM2
- [01250] PROC BSCDEV
- [01254] BSCDEV - CHECK BISYNC DEVICE PARAMETER.
- [01360] PROC NDLEM2
- [01361] FUNC XCDD C(10)
- [01735] PROC BTCHDEV(BDWORD,BDLNUM)
- [01739] BTCHDEV - CHECK BATCH DEVICE PARAMETERS.
- [01813] PROC NDLCKRG
- [01814] PROC NDLEM2
- [02064] PROC CONDEV(CDWORD,CDLNUM)
- [02068] CONDEV - CHECK DEVICE STATEMENT CONSOLE PARAMETERS.
- [02127] PROC NDLCKRG
- [02128] PROC NDLEM2
- [02129] FUNC XCDD C(10)
- [02329] PROC T$GROUP(TKWID)
- [02730] PROC COUNT$LK
- [02800] PROC DEVFNFV(FN$VAL,FV$VAL)
- [02804] DEVFNFV - STORE FNFV PAIR IN DEVICE ENTRY.
- [02945] PROC FLOWDEV(FDWORD,FDLNUM)
- [02949] FLOWDEV - CHECK FLOW CONTROL PARAMETERS ON DEVICE STMT.
- [03017] PROC NDLCKRG
- [03018] PROC NDLEM2
- [03019] FUNC XCDD C(10)
- [03020] FUNC XCHD C(10)
- [03350] PROC GENDEV(GDWORD,GDLNUM)
- [03354] GENDEV - CHECKS GENERAL PARAMETERS ON THE DEVICE STMT.
- [03416] PROC NDLCKRG
- [03417] FUNC XCDD C(10)
- [03638] PROC HSPDEV
- [03642] HSPDEV - CHECK DEVICE STATEMENT FOR PARAMETERS LEGAL FOR HASP TIP.
- [03734] PROC NDLEM2
- [03735] FUNC XCDD C(10)
- [04080] PROC MBDEV(MBWORD,MBLNUM)
- [04084] MBDEV - CHECK MODE4/BSC PARAMETER FOR DEVICE STATEMENT.
- [04165] PROC NDLEM2
- [04166] FUNC XCHD C(10)
- [04292] PROC MD4DEV
- [04296] MD4DEV - CHECK DEVICE STATEMENT PARAMETERS LEGAL FOR MODE4.
- [04416] PROC NDLEM2
- [04417] FUNC XCDD C(10)
- [04924] PROC USRDEV
- [04927] USERDEV - CHECK DEVICE STATEMENT PARAMETERS FOR USER TIP.
- [05112] PROC X25DEV
- [05116] X25DEV - CHECK DEVICE STATEMENT PARAMETERS LEGAL FOR X.25
- [05161] PROC NDLEM2
- [05409] PROC $3270DEV
- [05413] $3270DEV - CHECK DEVICE STATEMENT PARAMETERS LEGAL FOR 3270.
- [05484] PROC NDLEM2
- [05485] FUNC XCDD C(10)
- [06086] PROC LINFNFV(FN,FV)
- [06090] LINFNFV - MAKE FNFV ENTRY FOR LINE.
- [06123] PROC LINGRPR
- [06127] LINGRPR - LINE/GROUP STATEMENT PROC
- [06238] PROC NDLEM2
- [06419] PROC GENLINE
- [06423] GENLINE - CHECK GENERAL LINE PARAMETERS.
- [06484] PROC NDLCKPT
- [06485] PROC NDLCKRG
- [06720] PROC X25LINE
- [06724] X25LINE - CHECK X.25 LINE PARAMETERS
- [06772] PROC NDLCKRG
- [06773] FUNC XCDD U
- [07445] PROC TERMPR
- [07449] TERMPR - TERMINAL STATEMENT PROC.
- [07547] PROC NDLEM2
- [07889] PROC ASYTERM
- [07928] PROC NDLEM2
- [08072] PROC ATRMPRM(ASY$ID,ASY$WORD,ASY$LINE)
- [08120] PROC NDLEM2
- [08208] PROC BSCTERM
- [08256] PROC NDLEM2
- [08401] PROC BTRMPRM(BTRM$ID,BTRM$WORD,BTRM$LINE)
- [08449] PROC NDLCKRG
- [08504] PROC GENTERM(GTRM$ID,GTRM$WORD,GTRM$LINE)
- [08569] PROC NDLEM2
- [08733] PROC HBTRMPR(HBTRM$ID,HBTRM$WORD,HBTRM$LINE)
- [08780] PROC NDLCKRG
- [08781] PROC NDLEM2
- [08825] PROC HSPTERM
- [08864] PROC NDLEM2
- [08997] PROC MD4TERM
- [09036] PROC NDLEM2
- [09167] PROC MTRMPRM(MTRM$ID,MTRM$WORD,MTRM$LINE)
- [09216] PROC NDLCKRG
- [09217] PROC NDLEM2
- [09218] FUNC XCHD
- [09306] PROC USRTERM
- [09477] PROC XTRMPRM(XTRM$ID,XTRM$WORD,XTRM$LINE)
- [09550] PROC NDLCKRG
- [09551] PROC NDLEM2
- [09778] PROC X25TERM
- [09832] PROC NDLEM2
- [10007] PROC $3270TRM
- [10044] PROC NDLEM2
- [10448] PROC USR$RANGE(UVALNUM,U$RANGE,UMODE,USTAT)
- [10485] FUNC XCDD C(10)
- [10486] FUNC XCHD C(10)
Source Code
- NDLNFCM.txt
- *DECK NDLNFCM
- USETEXT NDLDATT
- USETEXT NDLER2T
- USETEXT NDLFETT
- USETEXT NDLNCFT
- USETEXT NDLPS2T
- USETEXT NDLTBLT
- PROC NDLNFCM;
- BEGIN
- *IF,DEF,IMS
- #
- ** NDL$COM - CHECKS COMMUNICATION ELEMENT STATEMENTS
- *
- * D.K. ENDO 81/10/12
- *
- * THIS PROCEDURE CALLS THE APPROPRIATE PROCEDURE TO CHECK A
- * PARTICULAR COMMUNICATION ELEMENT STATEMENT.
- *
- * PROC NDL$COM
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH STATEMENT TABLE
- * SELECT THE CASE THAT APPLIES,
- * CASE 1 (LINE STMT):
- * IF A LINE RECORD EXISTS,
- * WRITE LINE RECORD TO NCF.
- * IF A LINE CONFIG ENTRY EXISTS,
- * IF THE LINE IS AN X.25 LINE,
- * PUT PVC COUNT IN LINE CONFIG ENTRY.
- * WRITE ENTRY TO LINE CONFIG FILE.
- * CALL PROC THAT CHECK LINE AND GROUP STATEMENTS.
- * CASE 2 (TERMINAL STMT):
- * CALL PROCEDURE THAT CHECKS TERMINAL STMTS.
- * CASE 3 (DEVICE STMT):
- * CALL PROCEDURE THAT CHECKS DEVICE STMTS.
- * CASE 4 (TRUNK STMT):
- * CALL PROCEDURE THAT CHECKS TRUNK STMTS.
- * CASE 5 (NETWORK ELEMENT STMT OR EOF):
- * IF A LINE RECORD EXISTS,
- * WRITE LINE RECORD TO NCF.
- * IF A LINE CONFIG ENTRY EXISTS,
- * IF LINE IS AN X.25 LINE,
- * PUT PVC COUNT IN LINE ENTRY.
- * WRITE ENTRY TO LINE CONFIG FILE.
- * EXIT NDL$COM.
- *
- #
- *ENDIF
- #
- **** PROC NDLNFCM - XREF LIST BEGIN.
- #
- XREF
- BEGIN
- PROC LFGCKSM; # CALCULATES CHECK SUM OF GIVEN TABLE #
- PROC SSTATS; # ALLOCATES MORE TABLE SPACE ON REQUEST #
- PROC READW; # READS GIVEN NUM OF WORD FROM FILE #
- PROC NDLTRNK; # PROCESSES TRUNK STATEMENT ENTRY #
- PROC NDLEM2; # PASS 2 ERROR MESSAGE. #
- PROC NDLWLCR; # WRITES LINE CONFIGURE INFO TO FILE #
- PROC NDLWNCF; # WRITES TABLES/RECORDS TO NCF #
- END
- #
- ****
- #
- DEF CON$MX$M4A # 1 #; # MAX NUMBER OC CONSOLES FOR M4A DEV #
- DEF CR$MAX$M4A # 1 #; # MAXIMUM NUMBER OF CR-S FOR M4A DEVICES #
- DEF DEV$MX$M4A # 3 #; # MAXIMUM NUMBER OF M4A DEVICES ALLOWED #
- DEF DT7$MX$M4A # 3 #; # MAXIMUM NUMBER OF USER DT-S FOR M4A #
- DEF LP$MAX$M4A # 1 #; # MAXIMUM NUMBER OF LP-S FOR M4A DEVICES #
- DEF SYNAUTO # 6 #; # NUMERIC VALUE FOR SYNAUTO TIPTYPE #
- DEF USR$WID1 # 255 #; # UPPER LIMIT OF FVAL ALLOWD BY A BYTE #
- DEF USR$WID2 # 65535 #; # UPPER LIMIT OF FVAL ALLOWE BY TWO #
- DEF MPW$2780$LP # 50 #; # MINIMUM PAGE WIDTH FOR LP OF 2780 #
- DEF MXPW$2780$LP # 150 #; # MAXIMUM PAGE WIDTH FOR LP OF 2780 #
- STATUS NUM ERR, # ERROR MODE FOR NUMBER #
- DEC, # DECIMAL #
- HEX; # HEXIDECIMAL #
- # BYTES #
- STATUS CSET UNKNOWN, # STATUS LIST FOR CODE SET #
- BCD,
- ASCII,
- APLTP,
- APLBP,
- EBCD,
- EBCDAPL,
- CORRES,
- CORAPL,
- EBCDIC,
- ,,,,,
- USER;
- STATUS CTYP SVC, # STATUS LIST FOR CIRCUIT TYPE #
- PVC,
- UNKNOWN;
- STATUS DT UNKNOWN, # STATUS LIST FOR DEVICE TYPE #
- CON,
- CR,
- LP,
- CP,
- PL,
- AP,
- USER;
- STATUS FN UNKNOWN , AL , # 0 #
- LSPEED , RCOUNT ,
- FRAME , ,
- PVC , DCE ,
- PSN , ,
- SVC , LCN , # 10 #
- RTIME , ,
- DFL , PL$W ,
- DTEA , IMD ,
- RC , ,
- HN , , # 20 #
- AUTOCON , PRI ,
- UBL , UBZ ,
- ABL , DBL ,
- DBZ$MSB , DBZ$LSB ,
- XBZ$MSB , XBZ$LSB , # 30 #
- LK , ,
- TC , PW ,
- PL , PG ,
- CN , BS ,
- CT , AB , # 40 #
- B1 , B2 ,
- CI , LI ,
- , ,
- SE , EP ,
- PA , BR , # 50 #
- CSET , IN ,
- OP , FA ,
- , DLC$MSB ,
- DLC$LSB , DLX ,
- DLTO , ELX , # 60 #
- ELO , ELR ,
- EBX , EBO ,
- EBR , IC ,
- OC , XLY ,
- , CP , # 70 #
- W , CTYP ,
- NCIR , NEN ,
- SDT , RIC ,
- BCF , MREC ,
- DO$ , , # 80 #
- , ,
- , ,
- , ,
- COLLECT , ,
- P90 , P91 , # 90 #
- P92 , P93 ,
- P94 , P95 ,
- P96 , P97 ,
- P98 , P99 ,
- , , # 100 #
- MC , ,
- , ,
- , ,
- , ,
- , EOF , # 110 #
- PAD , ,
- , ,
- , ,
- , ,
- , , # 120 #
- , ,
- , ,
- , ,
- , ,
- , , # 130 #
- , ,
- , ,
- , ,
- , ,
- , , # 140 #
- , ,
- , RTS ,
- , MCI ,
- MLI ;
- STATUS LSPD UNKNOWN, # STATUS LIST FOR LINE SPEED #
- $110,
- $134,
- $150,
- $300,
- $600,
- $1200,
- $2400,
- $4800,
- $9600,
- $19200,
- $38400;
- STATUS STIP UNKNOWN, # STATUS LIST FOR SUB-TIP #
- M4A,
- M4C,
- $2741,
- N2741,
- POST,
- PRE,
- PAD,
- USER,
- XAA,
- $2780,
- $3780;
- STATUS TC UNKNOWN, # STATUS LIST FOR TERMINAL CLASS #
- M33,
- $713,
- $721,
- $2741,
- M40,
- H2000,
- $751,
- T4014,
- HASP,
- $200UT,
- $714X,
- $711,
- $714,
- HPRE,
- $734,
- $2780,
- $3780,
- $752,
- X364,
- $3270,
- USER;
- STATUS TIP UNKNOWN, # UNKNOWN #
- ASYNC ,
- MODE4 ,
- HASP ,
- X25 ,
- BSC ,
- $3270 ,
- USER ;
- ITEM AUTO$REC B; # FLAG SET IF AUTO OR XAUTO REC LINE #
- ITEM XAUTO$REC B; # FLAG SET IF XAUTO REC LINE #
- ITEM BCF$FLAG B; # BCF INDICATOR #
- ITEM CA$MAP; # BIT MAP USED TO CHECK UNIQUENESS OF CA #
- ITEM CKSUM; # TEMPORARY FOR CHECK SUM VALUE #
- ITEM COLLECT$FLAG B;
- ITEM COLLECT$USED B;
- ITEM COM$ELMT B; # INDICATES STAT ENTRY IS A COMMUNIC ELEMT#
- ITEM CP$PL$MAP; # USED TO CHECK FOR DUPLICATE STREAM #
- ITEM CRNT$CSET; # CURRENT CODE SET #
- ITEM CRNT$CTYP; # CURRENT CIRCUIT TYPE #
- ITEM CTYP$USED B; # BOOLEAN TO SEE IF CTYP IS USED #
- ITEM W$USED B; # BOOLEAN TO SEE IF W IS USED #
- ITEM NCIR$USED B; # BOOLEAN TO SEE IF NCIR USED #
- ITEM NEN$USED B; # BOOLEAN TO SEE IF NEN IS USED #
- ITEM CRNT$DEV; # POINTER TO CURRENT DEVICE ENTRY #
- ITEM CRNT$LSPD; # CURRENT LINE SPEED #
- ITEM CRNT$MREC; # CURRENT MREC VALUE #
- ITEM CRNT$NCIR; # CURRENT NUMBER OF CIRCUITS #
- ITEM CRNT$EOF B; # CURRENT EOF FLAG ON TERMINAL STATEMENT #
- ITEM EOF$USED B; # FLAG TO SHOW IF EOF IS SPECIFIED #
- ITEM CRNT$NEN; # CURRENT NUMBER OF CIRCUITS ENABLED #
- ITEM CRNT$STIP; # CURRENT SUB-TIP #
- ITEM CRNT$TC; # CURRENT TERMINAL CLASS #
- ITEM CRNT$TERM; # POINTER TO CURRENT TERMINAL IN LINE REC #
- ITEM CRNT$TIP; # CURRENT TIPTYPE #
- ITEM CRNT$TSPD; # CURRENT TSPEED VALUE #
- ITEM CRNT$W; # CURRENT -W- VALUE #
- ITEM CRNT$DEPAD; # NUMBER OF 8-BIT PAD ENTRIES FOR DEVICE #
- ITEM CRNT$DEPADW; # NUMBER OF WORDS NEEDED FOR PAD ENTRIES #
- ITEM DEVCNT; # CRNT NUMBER OF DEVICES DEFINED ON TERM #
- ITEM I; # SCRATCH ITEM #
- ITEM LCR$EXIST B; # INDICATES LINE CONFIGURE RECORD EXISTS #
- ITEM LENGTH; # LENGTH OF RECORD/TABLE TO BE WRITTEN #
- ITEM LR$EXIST B; # INDICATES A LINE RECORD EXISTS #
- ITEM LTYPE C(10); # CURRENT LINE TYPE CATEGORY #
- ITEM MAXDEV; # MAXIMUM NUMBER DEV STMTS FOR THIS TERM #
- ITEM MAXTERM; # MAXIMUM NUMBER OF TERM STMTS FOR LINE #
- ITEM NSVCERR B; # FLAG SET IF NSVC VALUE IS IN ERROR #
- ITEM NWDS16; # NUMBER OF 16 BIT WORDS #
- ITEM PVC$CNT; # PVC COUNT #
- ITEM RIC$FLAG B; # RESTRICTED INTERACTIVE CAPABILITY FLAG #
- ITEM SVC$CNT; # NSVC PARAMETER VALUE #
- ITEM XTERMASK; # MASK FOR TERMINALS PER X.25 STIP #
- ITEM SVC$SPEC B; # SVC SPECIFIED FLAG #
- ITEM TA$MAP; # BIT MAP USED TO CHECK UNIQUENESS OF TA #
- ITEM TERMCNT; # CRNT NUMBER OF TERMINALS DEFINED ON LINE#
- ITEM TT$USED B; # TIPTYPE SPECIFIED FLAG #
- ITEM VALUE; # INTEGER TEMPORARY #
- ARRAY CRNT$PADVAL [1:MAXPADW] S(1);
- BEGIN # PAD VALUE ARRAY FOR TERMINAL #
- ITEM CRNT$PAD (0,0,60);
- END
- DEF MXDT # 7 #; # MAXIMUM DEVICE TYPE #
- ARRAY DO$USED$MAP [1:MXDT] S(1);
- BEGIN
- ITEM DO$MAP (0,0,60);
- END
- ARRAY DT$COUNT$TAB [1:MXDT] S(2); # DEVICE TYPE COUNT TABLE #
- BEGIN
- ITEM DT$CNT (0,0,60);# DEVICE TYPE COUNT #
- ITEM DT$MAX (1,0,60);# MAXIMUM NUMBER OF DT ALLOWED #
- END
- ARRAY FIRST$DT$TAB [1:MXDT] S(1);
- BEGIN
- ITEM FIRST$DT B(0,0,60); # INDICATES IF 1ST DT IS SENSED #
- END
- DEF MXTIP # 8 #; # MAXIMUM NUMBER OF TIPTYPE-S #
- ARRAY TERMDEV$CNT [0:MXTIP] S(9);
- BEGIN
- ITEM TRM$MAX (0,0,60) = [255, # UNKNOWN #
- 1, # ASYNC #
- 16, # MODE4 #
- 1, # HASP #
- 255, # X25 #
- 1, # BSC #
- 32, # 3270 #
- 255 # USER #
- ];
- ITEM DEV$MAX (1,0,60) = [255, # UNKNOWN #
- 1, # ASYNC #
- 15, # MODE4 (M4C) #
- 22, # HASP #
- 1, # X25 #
- 4, # BSC #
- 32, # 3270 #
- 255 # USER #
- ];
- ITEM LP$MAX (2,0,60) = [255, # UNKNOWN #
- 0, # ASYNC #
- 15, # MODE4 (M4C) #
- 7, # HASP #
- 0, # X25 #
- 1, # BSC #
- 31, # 3270 #
- 255, # USER #
- ];
- ITEM CR$MAX (3,0,60) = [255, # UNKNOWN #
- 0, # ASYNC #
- 1, # MODE4 (M4C) #
- 7, # HASP #
- 0, # X25 #
- 1, # BSC #
- 0, # 3270 #
- 255 # USER #
- ];
- ITEM CP$MAX (4,0,60) = [255, # UNKNOWN #
- 0, # ASYNC #
- 0, # MODE4 #
- 7, # HASP #
- 0, # X25 #
- 1, # BSC #
- 0, # 3270 #
- 255 # USER #
- ];
- ITEM PL$MAX (5,0,60) = [255, # UNKNOWN #
- 0, # ASYNC #
- 0, # MODE4 #
- 7, # HASP #
- 0, # X25 #
- 0, # BSC #
- 0, # 3270 #
- 255 # USER #
- ];
- ITEM DT7$MAX (6,0,60) = [255, # UNKNOWN #
- 1, # ASYNC #
- 15, # MODE4 (M4C) #
- 22, # HASP #
- 1, # X25 #
- 4, # BSC #
- 32, # 3270 #
- 255 # USER #
- ];
- ITEM CON$MAX (7,0,60) = [255, # UNKNOWN #
- 1, # ASYNC #
- 15, # MODE4 (M4C) #
- 1, # HASP #
- 1, # X25 #
- 1, # BSC #
- 32, # 3270 #
- 255 # USER #
- ];
- ITEM AP$MAX (8,0,60) = [255, # UNKNOWN #
- 0, # ASYNC #
- 0, # MODE 4 (M4C) #
- 0, # HASP #
- 255, # X25 #
- 0, # BSC #
- 0, # 3270 #
- 255 # USER #
- ];
- END
- ARRAY STRM$USED$MP [1:MXDT] S(1);
- BEGIN
- ITEM STRM$MAP (0,0,60);
- END
- SWITCH COMJUMP , # UNKNOWN #
- , # NFILE #
- NET$ELMT , # NPU #
- , # SUPLINK #
- , # COUPLER #
- , # LOGLINK #
- LINE , # GROUP #
- LINE , # LINE #
- , # #
- TERMINAL$, # TERMINAL #
- DEVICE , # DEVICE #
- TRUNK ; # TRUNK #
- CONTROL EJECT;
- PROC C$USR$PRM1(PARAM$USED,CLR$WRD);
- *IF,DEF,IMS
- #
- **
- *
- * C$USR$PRM1 - CHECKS IF A USER DEFINED TIPTYPE PARAMETER IS
- * MISSING.
- *
- * Y. C. YIP 82/10/19
- *
- * THIS PROCEDURE CHECKS IF A PARAMETER IS NOT SPECIFIED AND
- * IF SO, A WARNING MESSAGE IS GENERATED. APPLIES ONLY FOR
- * USER DEFINED TIPTYPE PARAMETERS.
- *
- * ENTRY PARAM$USED - FLAG TRUE IF PARAMETER IS USED
- * FALSE OTHERWISE.
- * CLR$WRD - ARRAY OF 10 CHARACTERS WHICH IS THE
- * NAME OF THE KEYWORD REQUIRED.
- *
- * EXIT ALL PARAMETERS ARE UNCHANGED.
- *
- * METHOD
- *
- * THE FIRST PARAMETER, PARAM$USED IS CHECKED AND IF IT IS TRUE
- * THEN A WARNING IS GENERATED BY CALLING NDLEM2 USING THE SECOND
- * PARAMETER WHICH IS THE NAME OF THE KEYWORD AS THE CLARIFIER.
- *
- *E
- #
- *ENDIF
- BEGIN
- ITEM PARAM$USED B; # PARAMETER USED OR NOT #
- ITEM CLR$WRD C(10); # CLARIFIER WORD #
- IF NOT PARAM$USED # IF PASRAMETER NOT USED #
- THEN
- BEGIN
- NDLEM2(ERR161,STLNUM[0],CLR$WRD); # GENERATE WARNING 161 #
- END
- END # END OF PROC C$USR$PRM1 #
- CONTROL EJECT;
- PROC C$USR$PRM2(PARAM$VAL,CLR$WRD);
- *IF,DEF,IMS
- #
- **
- *
- * C$USR$PRM2 - CHECKS A USER DEFINED TIPTYPE PARAMETER IS MISSING
- *
- * Y. C. YIP 82/10/20
- *
- * THIS PROCEDURE CHECKS IF A PARAMETER IS SPECIFIED BY
- * THE VALUE OF THE FIRST PARAMETER. IF IT IS NOT SPECIFIED
- * A WARNING IS GENERATED TO THE USER. IT APPLIES ONLY FOR
- * USER DEFINED TIPTYPE PARAMETERS.
- *
- * ENTRY PARAM$VAL - VALUE OF THE PARAMETER BEING CHECKED.
- * CLR$WRD - ARRAY OF 10 CHARACTERS WHICH IS THE
- * NAME OF THE KEYWORD CHECKED.
- *
- * EXIT ALL PARAMETERS REMAIN UNCHANGED.
- *
- * METHOD
- *
- * THE VALUE OF PARAM$VAL IS CHECKED AND IF IT IS ZERO
- * A WARNING IS GENERATED WITH THE SECOND PARAMETER WHICH IS
- * THE NAME OF THE PARAMETER BEING CHECKED AS THE CLARIFIER.
- *
- *E
- #
- *ENDIF
- BEGIN
- ITEM PARAM$VAL ; # VALUE OF PARAMETER #
- ITEM CLR$WRD C(10); # CLARIFIER WORD #
- IF PARAM$VAL EQ 0 # IF PARAMETER IS STILL ZERO #
- THEN
- BEGIN
- NDLEM2(ERR161,STLNUM[0],CLR$WRD); # GENERATE ERROR MESSAGE #
- END
- END # END OF PROC C$USR$PRM2 #
- CONTROL EJECT;
- PROC DEVPR;
- BEGIN
- *IF,DEF,IMS
- #
- ** DEVPR - DEVICE STATEMENT PROC.
- *
- * D.K. ENDO 81/11/02
- *
- * THIS PROCEDURE CHECKS THE -DT- PARAMETER, DEVICE STMT COUNT, AND
- * CALLS A PROC, BASED ON TIPTYPE, TO CHECK THE REMAINING PARAMETERS.
- *
- * PROC DEVPR
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * INITIALIZE FLAGS AND VALUES.
- * POINT TO NEXT DEVICE ENTRY.
- * CLEAR FIXED PORTION OF ENTRY.
- * INCREMENT DEVICE COUNT.
- * IF LABEL IS O.K.,
- * PUT LABEL FROM STATEMENT TABLE INTO DEVICE ENTRY.
- * IF GROUP COUNT IS GREATER THAN ZERO,
- * THEN,
- * FOR EACH ITERATION UNTIL GROUP COUNT,
- * PUT LABEL INTO DEVICE XREF TABLE FROM LABEL TABLE.
- * OTHERWISE,
- * PUT LABEL FROM STATEMENT TABLE INTO DEVICE XREF TABLE.
- * IF CTYP IS SVC
- * SET SVC IN DEVICE XREF ENTRY.
- * IF DT WAS NOT SPECIFIED,
- * THEN,
- * IF TIPTYPE IS X25 AND SUBTIPTYPE IS XAA
- * DEFAULT DT TO APPLICATION (AP)
- * ELSE
- * DEFAULT DT TO CONSOLE
- * PUT DT VALUE INTO DEVICE ENTRY.
- * OTHERWISE,
- * IF VALUE IS O.K.,
- * MAP NUMERIC VALUE FOR DT.
- * IF TIPTYPE AND DT ARE NOT USER,
- * IF TC IS NOT USER OR UNKNOWN,
- * THEN,
- * IF TC AND DT ARE NOT COMPATIBLE,
- * FLAG ERROR -- DT INVALID WITH TC SPECIFIED.
- * OTHERWISE,
- * IF STIP IS NOT UNKNOWN,
- * THEN,
- * IF STIP AND DT ARE NOT COMPATIBLE,
- * FLAG ERROR -- DT INVALID WITH STIP SPECIFIED.
- * OTHERWISE,
- * IF TIPTYPE IS NOT UNKNOWN,
- * IF TIPTYPE AND DT ARE NOT COMPATIBLE,
- * FLAG ERROR -- DT INVALID WITH TIPTYPE SPECIFIED.
- * IF DEVICE STATEMENT COUNT IS GREATER THAN MAXIMUM,
- * FLAG ERROR -- MAXIMUM DEVICE STATEMENTS EXCEEDED.
- * IF TIPTYPE IS NOT USER OR UNKNOWN AND
- * DT IS USER OR UNKNOWN,
- * THEN,
- * SELECT CASE THAT APPLIES,
- * CASE 1(ASYNC):
- * CHECK ASYNC DEVICE STATEMENT.
- * CASE 2(MODE4):
- * CHECK MODE4 DEVICE STATEMENT.
- * CASE 3(HASP):
- * CHECK HASP DEVICE STATEMENT.
- * CASE 4(X25):
- * CHECK X25 DEVICE STATEMENT.
- * CASE 5(BSC):
- * CHECK BSC DEVICE STATEMENT.
- * OTHERWISE,
- * CHECK USER DEVICE STATEMENT.
- * IF TIPTYPE IS NOT USER AND DT IS CONSOLE,
- * IF HN WAS NOT SPECIFIED,
- * AND THE HOST NAMES OF ALL LOGICAL LINKS TERMINATING
- * AT THE SAME NPU ARE THE SAME
- * THEN,
- * DEFAULT HN VALUE TO HOST I.D. OF LOGLINK OF THE LAST ENTRY
- * OF THE LOGICAL NAME TABLE
- * IF AUTOCON WAS NOT SPECIFIED,
- * DEFAULT AUTOCON TO YES
- * OTHERWISE,
- * IF AUTOCON IS -YES-,
- * FLAG ERROR -- REQUIRED PARAMETER MISSING(HN).
- * PUT RIC VALUE INTO DEVICE ENTRY.
- * PUT WORD COUNT FOR DEVICE ENTRY.
- * INCREMENT WORD COUNT FOR TERMINAL ENTRY.
- *
- #
- *ENDIF
- #
- **** PROC DEVPR - XREF LIST BEGINS
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKE ENTRY IN PASS 2 ERROR FILE #
- FUNC XCHD C(10); # CONVERTS HEX VALUE TO DISPLAY CODE #
- END
- #
- ****
- #
- DEF MXDVENT # 14 #; # MAXIMUM WORD SIZE FOR DEVICE ENTRY #
- DEF SDT$12 # 12 #; # STARTING USER VALUE FOR SDT #
- DEF SDT$13 # 13 #; # INTERNAL VALUE FOR SDT13 #
- DEF SDT$14 # 14 #; # INTERNAL VALUE FOR SDT14 #
- DEF SDT$15 # 15 #; # ENDING USER VALUE FOR SDT #
- DEF FIRST$POS # 24 #; # FIRST POSITION FOR FNFV PAIR #
- DEF NO$MATCH # -1 #; # VALUE FOR SAVE$ENTRY IF NO MATCH FOUND #
- STATUS CC UNKNOWN, # STATUS LIST OF CONTROL CHARACTERISTICS #
- AB,
- CN,
- B1,
- B2,
- CT,
- BS,
- ELX,
- EBX;
- ITEM ABL$USED B;
- ITEM AUTOCON$FLAG B;
- ITEM AUTOCON$NO B;
- ITEM BIT$POS;
- ITEM CRNT$DT;
- ITEM DBL$USED B;
- ITEM DBZ$USED B;
- ITEM DO$USED B;
- ITEM HN$USED B;
- ITEM PL$USED B;
- ITEM I;
- ITEM ITEMP; # INTEGER TEMPORARY #
- ITEM LL$CNT;
- ITEM LLT$PNTR;
- ITEM PWI, PDI; # PAD WORD INDX., PAD WORD DISPL. INDX. #
- ITEM STREAM$USED B;
- ITEM TA$USED B;
- ITEM UBL$USED B;
- ITEM UBZ$USED B;
- ITEM XBZ$USED B;
- STATUS X$D$GROUP NO,XG,DG; # STATUS VARIABLE FOR XL'S AND DL'S #
- ITEM GR$SET S: X$D$GROUP; # STATUS ITEM OF TYPE X$D$GROUP #
- ITEM SAVE$ENTRY; # USED FOR COMPARING HOST NAMES IN #
- # LLT$TABLE #
- # SET TO 0 IF NO MATCH FOUND
- TO INDEX OF LLT$TABLE ENTRY AT LAST
- COMPARISON.
- OR TO -1 IF A MISMATCH IS FOUND #
- DEF MAXCC # 8 #;
- ARRAY CRNT$CC$TAB[1:MAXCC] S(1);
- BEGIN
- ITEM CRNT$CC (0,0,60);
- END
- DEF MXDT # 7 #; # MAXIMUM NUMBER OF DEVICE TYPES #
- ARRAY DT$TABLE [1:MXDT] S(1);
- BEGIN
- ITEM DTNAME C(0,0,7) = ["CON", # DT CHARACTER VALUES #
- "CR",
- "LP",
- "CP",
- "PL",
- "AP",
- "DT12"
- ];
- ITEM DT$NUMV I(0,42,09) = [0, # CONSOLE -- INTEGER VALUE #
- 1, # CARD READER #
- 2, # LINE PRINTER #
- 3, # CARD PUNCH #
- 4, # PLOTTER #
- 6, # A-A DEVICE #
- 12 # USER DT12 #
- ];
- ITEM DT$STAT (0,51,09) = [DT"CON", # CONSOLE -- STATUS VALUE #
- DT"CR", # CARD READER #
- DT"LP", # LINE PRINTER #
- DT"CP", # CARD PUNCH #
- DT"PL", # PLOTTER #
- DT"AP", # A TO A DEVICE TYPE #
- DT"USER" # USER #
- ];
- END
- ARRAY TC$ALLOWED [1:MXDT] S(1); # BIT MAP FOR TC SUPPORTING DT #
- BEGIN
- ITEM DT$TC$MAP U(0,0,30) = [O"3777777000", # CONSOLE #
- O"0006170000", # CARD READER #
- O"0007371000", # LINE PRINTER #
- O"0004130000", # CARD PUNCH #
- O"0004100000", # PLOTTER #
- 0, # A-A (NA) #
- ];
- END
- ARRAY STIP$ALLOWED [1:MXDT] S(1);# MAP FOR STIP SUPPORTING DT #
- BEGIN
- ITEM DT$STIP$MAP U(0,0,30) = [O"3777000000", # CONSOLE #
- O"2143000000", # CARD READER #
- O"3143000000", # LINE PRINTER #
- O"0143000000", # CARD PUNCH #
- O"0140000000", # PLOTTER #
- O"0004000000", # A-A DEVICE #
- ];
- END
- ARRAY TIP$ALLOWED [1:MXDT] S(1); # MAP FOR TIP SUPPORTING DT #
- BEGIN
- ITEM DT$TIP$MAP U(0,0,30) = [O"3740000000", # CONSOLE #
- O"1500000000", # CARD READER #
- O"1540000000", # LINE PRINTER #
- O"0500000000", # CARD PUNCH #
- O"0400000000", # PLOTTER #
- O"0200000000", # A-A DEVICE #
- ];
- END
- DEF MNKWID # 65 #;
- DEF MXKWID # 131 #;
- ARRAY KWD$TABLE [MNKWID:MXKWID] S(1);
- BEGIN
- ITEM KWDNAME C(0,0,10) = ["DT",
- "SDT",
- "TA",
- "ABL",
- "DBZ",
- "UBZ",
- "DBL",
- "UBL",
- "XBZ",
- "DO",
- "STREAM",
- "HN",
- ,
- "AUTOCON",
- "PRI",
- "P90",
- "P91",
- "P92",
- "P93",
- "P94",
- "P95",
- "P96",
- "P97",
- "P98",
- "P99",
- "AB",
- "BR",
- "BS",
- "B1",
- "B2",
- "CI",
- "CN",
- "CT",
- "DLC",
- "DLTO",
- "DLX",
- "EP",
- "IN",
- "LI",
- "OP",
- "PA",
- "PG",
- "PL",
- "PW",
- "SE",
- "FA",
- "XLC",
- "XLX",
- "XLTO",
- "ELO",
- "ELX",
- "ELR",
- "EBO",
- "EBR",
- "CP",
- "IC",
- "OC",
- "LK",
- "EBX",
- ,
- "MC",
- "XLY",
- "EOF",
- "PAD",
- "RTS",
- "MCI",
- "MLI"
- ];
- END
- SWITCH DEVPJUMP NEXT, # UNKNOWN -- SWITCH BY TIPTYPE #
- ASYNC, # ASYNC #
- MODE4, # MODE4 #
- HASP, # HASP #
- X25, # X25 #
- BSC, # BSC #
- $3270, # 3270 #
- NEXT; # USER #
- CONTROL EJECT;
- PROC CHCONTRL(CHKWID,CHLNUM,STAT,VALUE);
- BEGIN
- *IF,DEF,IMS
- #
- ** CHCONTRL
- * Y. C. YIP
- * THIS PROCEDURE CHECKS FOR CONTROL CHARACTERS AND ENSURE THAT
- * THE PARAMETER OF A DEVICE STATEMENT DOES NOT USE ANY SPECIAL
- * CHARACTER NOT ALLOWED BY THE TERMINAL ERS.
- *
- * ENTRY CONDITION:
- * CHKWID=KEYWORD I.D.KEYWORD .
- * CHLNUM=LINE NUMBER OF INPUT SOURCE
- * STAT = INPUT VALUE OF STATUS .
- * VALUE = VALUE OF KEYWORD.
- * EXIT CONDITION:
- * CHKWID=UNCHANGED.
- * CHLNUM=LINE MUNBER OF SOURCE INPUT.
- * STAT= FALSE IF VALUE OVERLAPS WITH SOME
- * VALUE DISALLOWED BY THE NDLP ERS.
- * VALUE = UNCHANGED.
- *
- #
- *ENDIF
- DEF MAXBAD # 5 # ; # LENGTH OF ARRAY FOR CHECKING #
- DEF ILLE00 # X"0" # ; # ILLEGAL CHARACTER 0 #
- DEF ILLE01 # X"01" #; # ILLEGAL CHARACTER CHAR 01 #
- DEF ILLE02 # X"02" #; # ILLEGAL CHARACTER 02 #
- DEF ILLE20 # X"20" #; # ILLEGAL CHARACTER 20 #
- DEF ILLE30 # X"30" #; # ILLEGAL CHARACTER 30 #
- DEF ILLE39 # X"39" #; # ILLEGAL CHARACTER 39 #
- DEF ILLE3D # X"3D" #; # ILLEGAL CHARACTER 3D #
- DEF ILLE41 # X"41" #; # ILLEGAL CHARACTER 41 #
- DEF ILLE5A # X"5A" #; # ILLEGAL CHARACTER 5A #
- DEF ILLE61 # X"61" #; # ILLEGAL CHARACTER 61 #
- DEF ILLE7A # X"7A" #; # ILLEGAL CHARACTER 7A #
- DEF ILLE7F # X"7F" #; # ILLEGAL CHARACTER 7F #
- ITEM CHKWID; # I. D. NUMBER OF THE KEYWORD #
- ITEM CHLNUM; # LINE NUMBER OF CURRENT LINE #
- ITEM STAT B ; # STATUS VARIABLE #
- ITEM VALUE ; # VALUE OF KEYWORD #
- ARRAY BAD$CHAR [0:MAXBAD] S(1); # BAD CHAR LIST #
- BEGIN
- ITEM BAD$LIST = [ILLE00,ILLE01,ILLE02,
- ILLE20,ILLE3D,ILLE7F];
- END
- ITEM INDEX1 ; # LOOP INDEX #
- IF NOT STAT # IF OUT OF RANGE ALREADY #
- THEN
- BEGIN
- RETURN;
- END # RETURN TO CALLING ROUTINE CONDEV #
- FOR INDEX1=0 STEP 1 UNTIL MAXBAD
- DO
- BEGIN
- IF VALUE EQ BAD$LIST[INDEX1]
- THEN # BAD CHAR MET #
- BEGIN
- STAT = FALSE; # SET STAT TO FALSE#
- END
- END
- IF ( VALUE GQ ILLE30 AND VALUE LQ ILLE39 )
- OR ( VALUE GQ ILLE41 AND VALUE LQ ILLE5A )
- OR ( VALUE GQ ILLE61 AND VALUE LQ ILLE7A )
- THEN # FALL INTO BAD RANGE ? #
- BEGIN
- STAT = FALSE; # STAT SET TO FALSE #
- END
- IF NOT STAT # IF STATUS IS BAD #
- THEN
- BEGIN
- NDLEM2(ERR158,CHLNUM,KWDNAME[CHKWID]); # GENERATE
- ERROR MESSAGE #
- END
- RETURN ; # RETURN TO CALLING ROUTINE #
- END # END OF PROC CHCONTRL #
- CONTROL EJECT;
- PROC ASYDEV;
- BEGIN
- *IF,DEF,IMS
- #
- ** ASYDEV - CHECK ASYNC DEVICE PARAMRTERS.
- *
- * D.K. ENDO 81/11/02
- *
- * THIS PROCEDURE CHECKS PARAMETERS THAT ARE APPLICABLE TO ASYNC
- * DEVICES.
- *
- * PROC ASYDEV
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * PUT DEFAULT CONTROL CHARACTER IN CC TABLE BASED ON STIP AND/OR TC.
- * FOR EACH VALUE DECLARATION IN ENTRY.
- * SELECT CASE THAT APPLIES:
- * CASE 1(DI,P90 THRU P99, PRI,PW):
- * CALL GENDEV TO CHECK GENERAL PARAMETER.
- * CASE 2(HN,AUTOLOG,AUTOCON,AB,BR,BS,B1,B2,CI,CN,CT,
- * DLX,IN,LI,OP,PA,PL,SE,FA,XLC,XLX,LK,XLY):
- * CALL CONDEV TO CHECK CONSOLE PARAMETER.
- * CASE 3(ABL,DBZ,DBL,UBL,XBZ,UBZ):
- * CALL FLOWDEV TO CHECK FLOW CONTROL PARAMETER.
- * CASE 4(DLC,DLTO,EP,PG,XLTO,ELO,ELX,ELR,EBO,EBR,CP,IC,OC):
- * IF STIP OR TC IS 2741,
- * THEN,
- * CALL CONDEV TO CHECK PARAMETER.
- * OTHERWISE,
- * FLAW ERROR -- PARAM INVALID FOR 2741 DEVICES.
- * CASE 5(TA,DO,STREAM):
- * FLAG ERROR -- PARAM INVALID FOR ASYNC DEVICES.
- * CASE 6 (SDT) :
- * CHECK FOR SDT12-SDT15 AS VALID SDT NAMES ONLY AND
- * CALL BTCHDEV PROCESSOR
- * IF ABL OR DBZ NOT SPECIFIED
- * DEFAULT VALUE BY LSPEED.
- * IF DBL,UBL,OR XBZ WAS NOT SPECIFIED
- * DEFAULT VALUE.
- * CHECK AL,CN,BS,B1,B2,CT FOR UNIQUENESS
- * IF NOT UNIQUE
- * FLAG ERROR.
- *
- #
- *ENDIF
- #
- **** PROC ASYDEV - XREF LIST BEGINS
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRIES IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- DEF UBL$DEF # 7 #; # DEFAULT UBL VALUE #
- DEF UBZ$DEF # 1 #; # DEFAULT UBZ VALUE FOR ASYCH TIPTYPE #
- DEF DBL$DEF # 1 #; # DEFAULT DBL VALUE FOR ASYCH TIPTYPE #
- DEF PL$DEF # 64 #; # DEFAULT PAGE LENGTH TO 64 #
- ITEM I; # SCRATCH ITEM #
- ITEM ITEMP; # INTEGER TEMPORARY #
- ITEM J; # SCRATCH ITEM #
- ITEM VALUE; # VALUE TEMPORARY #
- ARRAY CC$TABLE [0:1] S(2); # CONTROL CHARACTERISTICS #
- BEGIN
- ITEM AB$DEF (00,00,09) = [X"18", # N2741 -- DEFAULT AB #
- X"28" # 2741 #
- ];
- ITEM CN$DEF (00,09,09) = [X"18", # N2741 -- DEFAULT CN #
- X"28" # 2741 #
- ];
- ITEM BS$DEF (00,18,09) = [X"08", # N2741 -- DEFAULT BS #
- X"08" # 2741 #
- ];
- ITEM B1$DEF (00,27,09) = [X"10", # N2741 -- DEFAULT B1 #
- X"3A" # 2741 #
- ];
- ITEM B2$DEF (00,36,09) = [X"14", # N2741 -- DEFAULT B2 #
- X"29" # 2741 #
- ];
- ITEM CT$DEF (00,45,09) = [X"1B", # N2741 -- DEFAULT CT #
- X"25" # 2741 #
- ];
- ITEM ELX$DEF (01,00,09) = [X"0D", # N2741 -- DEFAULT EL #
- -1 # 2741(N/A) #
- ];
- ITEM EBX$DEF (01,00,09) = [X"04", # N2741 -- DEFAULT EB #
- -1 # 2741(N/A) #
- ];
- END
- DEF MXLSPD # 11 #; # MAXIMUM NUMBER OF LINE SPEEDS #
- ARRAY FLOW$TABLE [0:MXLSPD] S(2);
- BEGIN
- ITEM ABL$DEF (0,0,60) = [,1, # 110 -- DEFAULT ABL #
- 1, # 134 #
- 1, # 150 #
- 1, # 300 #
- 2, # 600 #
- 2, # 1200 #
- 2, # 2400 #
- 2, # 4800 #
- 2, # 9600 #
- 3, # 19200 #
- 3 # 38400 #
- ];
- ITEM DBZ$DEF (1,0,60) = [,230, # 110 -- DEFAULT DBZ #
- 230, # 134 #
- 230, # 150 #
- 230, # 300 #
- 230, # 600 #
- 230, # 1200 #
- 230, # 2400 #
- 460, # 4800 #
- 940, # 9600 #
- 885, # 19200 #
- 885 # 38400 #
- ];
- END
- SWITCH ASYDJUMP , , # UNK , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , GEN$PARAM , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- , , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , , # AUTO , SL ,#
- , , # LSPEED , DFL ,#
- , , # FRAME , RTIME ,#
- , , # RCOUNT , NSVC ,#
- , , # PSN , DCE ,#
- , , # DTEA , ,#
- , , # , ,#
- , , # , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- , NEXT$ASY , # , DT ,#
- SDT , ILLEGAL , # SDT , TA ,#
- FLOW$PARAM , FLOW$PARAM , # ABL , DBZ ,#
- FLOW$PARAM , FLOW$PARAM , # UBZ , DBL ,#
- FLOW$PARAM , FLOW$PARAM , # UBL , XBZ ,#
- ILLEGAL , ILLEGAL , # DO , STREAM ,#
- CON$PARAM , , # HN , AUTOLOG ,#
- CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
- GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
- GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
- GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
- GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
- GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
- CON$PARAM , CON$PARAM , # AB , BR ,#
- CON$PARAM , CON$PARAM , # BS , B1 ,#
- CON$PARAM , CON$PARAM , # B2 , CI ,#
- CON$PARAM , CON$PARAM , # CN , CT ,#
- CON$PARAM , N2741$PRM , # DLC , DLTO ,#
- CON$PARAM , N2741$PRM , # DLX , EP ,#
- CON$PARAM , CON$PARAM , # IN , LI ,#
- CON$PARAM , CON$PARAM , # OP , PA ,#
- N2741$PRM , CON$PARAM , # PG , PL ,#
- GEN$PARAM , CON$PARAM , # PW , SE ,#
- CON$PARAM , CON$PARAM , # FA , XLC ,#
- CON$PARAM , N2741$PRM , # XLX , XLTO ,#
- N2741$PRM , N2741$PRM , # ELO , ELX ,#
- N2741$PRM , N2741$PRM , # ELR , EBO ,#
- N2741$PRM , N2741$PRM , # EBR , CP ,#
- N2741$PRM , N2741$PRM , # IC , OC ,#
- CON$PARAM , N2741$PRM , # LK , EBX ,#
- , GEN$PARAM , # , MC ,#
- CON$PARAM , , # XLY , EOF ,#
- , N2741$PRM , # PAD , RTS ,#
- GEN$PARAM , GEN$PARAM ; # MCI , MLI #
- CONTROL EJECT;
- # #
- # ASYDEV CODE BEGINS HERE #
- # #
- IF CRNT$STIP EQ STIP"$2741" OR # IF STIP OR TC IS 2741 #
- CRNT$TC EQ TC"$2741"
- THEN
- BEGIN # SET DEFAULT VALUES FOR 2741 #
- CRNT$CC[CC"AB"] = AB$DEF[1];
- CRNT$CC[CC"CN"] = CN$DEF[1];
- CRNT$CC[CC"BS"] = BS$DEF[1];
- CRNT$CC[CC"B1"] = B1$DEF[1];
- CRNT$CC[CC"B2"] = B2$DEF[1];
- CRNT$CC[CC"CT"] = CT$DEF[1];
- CRNT$CC[CC"ELX"] = ELX$DEF[1];
- CRNT$CC[CC"EBX"] = EBX$DEF[1];
- END
- ELSE # STIP AND TC NOT 2741 #
- BEGIN # IF STIP OR TC NOT UNKNOWN #
- IF CRNT$STIP NQ STIP"UNKNOWN" OR
- CRNT$TC NQ TC"UNKNOWN"
- THEN
- BEGIN #SET DEFAULT VALUES FOR NON-2741#
- CRNT$CC[CC"AB"] = AB$DEF[0];
- CRNT$CC[CC"CN"] = CN$DEF[0];
- CRNT$CC[CC"BS"] = BS$DEF[0];
- CRNT$CC[CC"B1"] = B1$DEF[0];
- CRNT$CC[CC"B2"] = B2$DEF[0];
- CRNT$CC[CC"CT"] = CT$DEF[0];
- CRNT$CC[CC"ELX"] = ELX$DEF[0];
- CRNT$CC[CC"EBX"] = EBX$DEF[0];
- END
- END
- FOR I=3 STEP 1 UNTIL STWC[0]
- DO # FOR EACH VALUE DECLARATION ENTRY #
- BEGIN
- GOTO ASYDJUMP[STKWID[I]]; # GOTO APPROPRIATE PROC #
- GEN$PARAM:
- GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETERS #
- TEST I;
- SDT: IF STVALNAM[I] EQ "SDT12" OR # IF SDT12 - SDT15 USED #
- STVALNAM[I] EQ "SDT13" OR
- STVALNAM[I] EQ "SDT14" OR
- STVALNAM[I] EQ "SDT15"
- THEN
- BEGIN
- BTCHDEV(STWORD[I],STLNUM[0]); # CALL BATCH DEVICE PROCESSOR #
- END
- ELSE
- BEGIN
- GOTO ILLEGAL;
- END
- TEST I;
- CON$PARAM:
- CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETERS #
- TEST I;
- FLOW$PARAM:
- FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETERS #
- TEST I;
- N2741$PRM: # CHECK NON-2741 PARAMETERS #
- IF CRNT$TC NQ TC"$2741" AND # IF TC AND STIP NOT 2741 #
- CRNT$STIP NQ STIP"$2741"
- THEN
- BEGIN
- CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
- END
- ELSE # TERMINAL IS 2741 #
- BEGIN # FLAG ERROR -- INVALID FOR 2741 TERMINALS#
- NDLEM2(ERR131,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- ILLEGAL: # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
- NDLEM2(ERR106,STLNUM[0],KWDNAME[STKWID[I]]);
- NEXT$ASY:
- END
- IF NOT ABL$USED # IF ABL NOT SPECIFIED #
- THEN # DEFAULT BY LINE SPEED #
- BEGIN
- IF CRNT$LSPD NQ LSPD"UNKNOWN" # CURRENT LSPEED IS SET #
- THEN
- BEGIN
- VALUE = ABL$DEF[CRNT$LSPD]; # DEFAULT ABL IN VALUE #
- END
- ELSE # CURRENT LSPEED IS UNKNOWN #
- BEGIN
- IF XAUTO$REC # IF XAUTO WAS SPECIFIED #
- THEN
- BEGIN
- VALUE = ABL$DEF[LSPD"$600"]; # DEFAULT ABL (FOR 600 BAUD) #
- END
- ELSE
- BEGIN
- VALUE = ABL$DEF[LSPD"$300"]; # DEFAULT ABL (FOR 300 BAUD) #
- END
- END
- DEVFNFV(FN"ABL",VALUE);
- END
- IF NOT DBZ$USED # IF DBZ NOT SPECIFIED #
- THEN # DEFAULT DBZ BY LINE SPEED #
- BEGIN
- IF CRNT$LSPD NQ LSPD"UNKNOWN" # CURRENT LSPEED IS KNOWN #
- THEN
- BEGIN
- VALUE = DBZ$DEF[CRNT$LSPD]; # DEFAULT DBZ IN VALUE #
- END
- ELSE # CURRENT LSPEED IS UNKNOWN #
- BEGIN
- IF CRNT$TSPD NQ LSPD"UNKNOWN"
- THEN # IF TSPEED WAS SPECIFIED #
- BEGIN
- VALUE = DBZ$DEF[CRNT$TSPD];# DEFAULT DBZ IN VALUE #
- END
- ELSE # TSPEED WAS NOT SPECIFIED #
- BEGIN
- VALUE = DBZ$DEF[LSPD"$300"]; # DEFAULT DBZ (FOR 300 BAUD) #
- END
- END
- J = B<44,8>VALUE; # MSB OF DBZ VALUE #
- DEVFNFV(FN"DBZ$MSB",J);
- J = B<52,8>VALUE; # LSB OF DBZ VALUE #
- DEVFNFV(FN"DBZ$LSB",J);
- END
- IF NOT DBL$USED # IF DBL NOT SPECIFIED #
- THEN # DEFAULT DBL #
- BEGIN
- DEVFNFV(FN"DBL",DBL$DEF);
- END
- IF NOT UBL$USED # IF UBL NOT SPECIFIED #
- THEN # DEFAULT UBL #
- BEGIN
- DEVFNFV(FN"UBL",UBL$DEF);
- END
- IF NOT UBZ$USED # IF UBZ NOT SPECIFIED #
- THEN
- BEGIN
- DEVFNFV(FN"UBZ",UBZ$DEF); # DEFAULT UBZ #
- END
- IF NOT XBZ$USED # IF XBZ WAS NOT SPECIFIED #
- THEN # DEFAULT XBZ BY LINE SPEED #
- BEGIN
- IF CRNT$LSPD NQ LSPD"UNKNOWN" # CURRENT LSPEED IS SET #
- THEN
- BEGIN
- VALUE = DBZ$DEF[CRNT$LSPD]; # DEFAULT XBZ IN VALUE #
- END
- ELSE # LSPEED WAS NOT SPECIFIED #
- BEGIN
- IF CRNT$TSPD NQ LSPD"UNKNOWN"
- THEN # IF TSPEED WAS SPECIFIED #
- BEGIN
- VALUE = DBZ$DEF[CRNT$TSPD]; # DEFAULT XBZ IN VALUE #
- END
- ELSE # TPSEED WAS NOT SPECIFIED #
- BEGIN
- VALUE = DBZ$DEF[LSPD"$300"];# DEFAULT XBZ (FOR 300 BAUD) #
- END
- END
- J = B<44,8>VALUE; # MSB OF XBZ VALUE #
- DEVFNFV(FN"XBZ$MSB",J);
- J = B<52,8>VALUE; # LSB OF XBZ VALUE #
- DEVFNFV(FN"XBZ$LSB",J);
- END
- IF NOT PL$USED AND # IF PL NOT SPECIFIED #
- CRNT$DT EQ DT"LP" # AND DEVICE TYPE IS LINEPRINTER #
- THEN
- BEGIN
- DEVFNFV(FN"PL",PL$DEF);
- END
- IF CRNT$STIP NQ STIP"UNKNOWN" OR
- CRNT$TC NQ TC"UNKNOWN"
- THEN # IF STIP OR TC NOT UNKNOWN #
- BEGIN # CHECK FOR UNIQUENESS #
- FOR I=CC"B1" STEP 1 UNTIL CC"EBX"
- DO
- BEGIN
- IF CRNT$CC[CC"AB"] EQ CRNT$CC[I]
- THEN
- BEGIN # FLAG ERROR -- VALUES NOT UNIQUE #
- NDLEM2(ERR132,STLNUM[0]," ");
- END
- END
- FOR I=CC"CN" STEP 1 UNTIL CC"BS"
- DO
- BEGIN
- FOR J=I+1 STEP 1 UNTIL CC"EBX"
- DO
- BEGIN
- IF CRNT$CC[I] EQ CRNT$CC[J]
- THEN
- BEGIN # FLAG ERROR -- VALUES NOT UNIQUE #
- NDLEM2(ERR132,STLNUM[0]," ");
- END
- END
- END
- END
- RETURN; # **** RETURN **** #
- END # ASYDEV #
- CONTROL EJECT;
- PROC BSCDEV;
- BEGIN
- *IF,DEF,IMS
- #
- ** BSCDEV - CHECK BISYNC DEVICE PARAMETER.
- *
- * D.K. ENDO 81/11/02
- *
- * THIS PROCEDURE CHECKS PARAMETERS THAT ARE APPLICABLE TO BISYNC
- * DEVICES.
- *
- * PROC BSCDEV
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION IN ENTRY,
- * SELECT CASE THAT APPLIES,
- * CASE 1(DI,PRI,P90 THRU P99,PW):
- * CALL GENDEV TO CHECK GENERAL PARAMETER.
- * CASE 2(DBL):
- * CALL FLOWDEV TO CHECK FLOW CONTROL PARAMETER.
- * CASE 3 (UBL):
- * IF DT IS CONSOLE AND RANGE OF UBL WITHIN 1 TO 7
- * CALL FLOWDEV TO CHECK FLOW CONTROL PARAMETER.
- * CASE 4(HN,AUTOLOG,AUTOCON,CT):
- * IF DT IS CONSOLE
- * THEN
- * CALL CONDEV TO CHECK CONSOLE PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- PARAM NOT ALLOWED WITH DT SPECIFIED.
- * CASE 5(TA):
- * IF DT IS CARD PUNCH,
- * THEN,
- * IF STIP IS 3780 OR UNKNOWN,
- * THEN,
- * CALL MBDEV TO CHECK MODE4/BSC PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- INVALID FOR 2780 DEVICES.
- * OTHERWISE,
- * FLAG ERROR -- VALID FOR CARD PUNCH ONLY.
- * CASE 6(SDT):
- * IF DT IS LINE PRINTER OR CARD READER,
- * THEN,
- * CALL BTCHDEV TO CHECK PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- INVALID WITH DT SPECIFIED.
- * CASE 7(DO,STREAM,AB,BR,BS,B1,B2,CI,CN,DLC,DLTO,DLX,EP,IN,LI,
- * OP,PA,PG,PL,SE,FA,XLC,XLX,XLTO,ELO,ELX,ELR,EBO,EBR,CP,
- * IC,OC,LK,EBX,HD,XLY):
- * FLAG ERROR -- INVALID FOR BISYNC DEVICES.
- * CASE 8(ABL):
- * IF DT IS CONSOLE,
- * THEN,
- * CALL FLOWDEV TO CHECK PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- VALID FOR CONSOLES ONLY.
- * CASE 9(DBZ):
- * IF DT IS NOT CARD READER,
- * THEN,
- * CALL FLOWDEV TO CHECK PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- INVALID FOR CARD READERS.
- * CASE 10(UBZ):
- * IF DT IS CONSOLE OR CARD READER
- * OR LINEPRINTER OR CARD PUNCH,
- * THEN,
- * CALL FLOWDEV TO CHECK PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- INVALID WITH DT SPECIFIED.
- * IF ABL WAS NOT SPECIFIED AND DT IS CONSOLE,
- * DEFAULT ABL VALUE.
- * IF DBL OR UBL NOT SPECIFIED,
- * DEFAULT VALUE BY DEVICE TYPE.
- * IF DBZ NOT SPECIFIED AND DT IS NOT CARD READER.
- * IF TC IS NOT -USER- OR UNKNOWN,
- * THEN,
- * DEFAULT DBZ BY TC.
- * OTHERWISE,
- * IF STIP IS NOT UNKNOWN,
- * DEFAULT DBZ BY STIP.
- * IF UBZ NOT SPECIFIED AND DT IS -CON- OR -CR-,
- * DEFAULT UBZ VALUE.
- * IF XBZ NOT SPECIFIED,
- * IF TC IS NOT -USER- OR UNKNOWN,
- * THEN,
- * DEFAULT XBZ VALUE BY TC.
- * OTHERWISE,
- * IF STIP IS NOT UNKNOWN
- * DEFAULT XBZ VALUE BY STIP.
- * IF TA NOT SPECIFIED AND DT IS CARD PUNCH AND
- * STIP IS -3780- AND LINE IS AUTO-REC,
- * FLAG ERROR -- REQUIRED PARAMETER MISSING.
- * IF MREC WAS SPECIFIED,
- * PUT MREC VALUE IN DEVICE ENTRY.
- * IF STIP OR TC IS -2780-
- * PUT BCF VALUE IN DEVICE ENTRY.
- * IF DT IS NOT CONSOLE OR USER,
- * PUT DO VALUE IN DEVICE ENTRY.
- *
- #
- *ENDIF
- #
- **** PROC BSCDEV - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRIES IN PASS 2 ERROR FILE #
- FUNC XCDD C(10); # CONVERTS INTEGER TO CHARACTER #
- END
- #
- ****
- #
- DEF ABL$DEF # 2 #;
- DEF DO$DEF # 1 #; # DEFAULT -DO- VALUE #
- DEF UBL$DEF # 7 #; # DEFAULT ABL VALUE #
- ITEM CHARVAL C(10); # SCRATCH CHARACTER VARIABLE #
- ITEM I; # SCRATCH ITEM #
- ITEM ITEMP; # INTEGER TEMPORARY #
- ITEM VALUE; # INTEGER VALUE TEMPORARY #
- ITEM VALUE2; # INTEGER VALUE TEMPORARY #
- DEF MXDT # 4 #;
- ARRAY DBL$TABLE [1:MXDT] S(1);
- BEGIN
- ITEM DBL$DEF (0,0,60) = [2, # CONSOLE -- DEFAULT DBL #
- 2, # CARD READER #
- 1, # LINE PRINTER #
- 1 # CARD PUNCH #
- ];
- END
- DEF MXTC # 17 #;
- ARRAY DBZ$TC$TBL [16:MXTC,1:MXDT] S(1);
- BEGIN
- ITEM DBZ$DEF (0,0,60) = [[400, # 2780 -- CON DEFAULT DBZ #
- 512 # 3780 #
- ]
- [ 0, # 2780 -- CR DEFAULT DBZ (N/A) #
- 0 # 3780 #
- ]
- [ 1, # 2780 -- LP DEFAULT DBZ #
- 1 # 3780 #
- ]
- [ 1, # 2780 -- CP DEFAULT DBZ #
- 1 # 3780 #
- ]];
- END
- DEF MXSTIP # 11 #;
- ARRAY DBZ$STIP$TBL [10:MXSTIP,1:MXDT] S(1);
- BEGIN
- ITEM DBZ$STIP$DEF (0,0,60) = [[400, # 2780 -- CON DEFAULT #
- 512 # 3780 #
- ]
- [ 0, # 2780 -- CR DEFAULT (N/A) #
- 0 # 3780 #
- ]
- [ 1, # 2780 -- LP DEFAULT #
- 1 # 3780 #
- ]
- [ 1, # 2780 -- CP DEFAULT #
- 1 # 3780 #
- ]];
- END
- ARRAY UBZ$TBL [1:MXDT] S(1);
- BEGIN
- ITEM UBZ$DEF (0,0,60) = [1, # CONSOLE -- DEFAULT UBZ #
- 1, # CARD READER #
- 0, # LINE PRINTER (N/A) #
- 0, # CARD PUNCH (N/A) #
- ];
- END
- ARRAY XBZ$TC$TBL [16:MXTC] S(1);
- BEGIN
- ITEM XBZ$DEF (0,0,60) = [400, # 2780 -- CON DEFAULT XBZ #
- 512 # 3780 #
- ];
- END
- ARRAY XBZ$STIP$TBL [10:MXSTIP] S(1);
- BEGIN
- ITEM XBZ$STIP$DEF (0,0,60) = [400, # 2780 -- CON DEFAULT XBZ #
- 512 # 3780 #
- ];
- END
- SWITCH BSCDJUMP , , # UNK , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , GEN$PARAM , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- , , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , , # AUTO , SL ,#
- , , # LSPEED , DFL ,#
- , , # FRAME , RTIME ,#
- , , # RCOUNT , NSVC ,#
- , , # PSN , DCE ,#
- , , # DTEA , ,#
- , , # , ,#
- , , # , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- , NEXT$BSC , # , DT ,#
- SDT , MB$PARAM , # SDT , TA ,#
- ABL , DBZ , # ABL , DBZ ,#
- UBZ$UBL , FLOW$PARAM , # UBZ , DBL ,#
- UBZ$UBL , FLOW$PARAM , # UBL , XBZ ,#
- ILLEGAL , ILLEGAL , # DO , STREAM ,#
- CON$PARAM , , # HN , AUTOLOG ,#
- CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
- GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
- GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
- GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
- GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
- GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
- ILLEGAL , ILLEGAL , # AB , BR ,#
- ILLEGAL , ILLEGAL , # BS , B1 ,#
- ILLEGAL , ILLEGAL , # B2 , CI ,#
- ILLEGAL , CON$PARAM , # CN , CT ,#
- ILLEGAL , ILLEGAL , # DLC , DLTO ,#
- ILLEGAL , ILLEGAL , # DLX , EP ,#
- ILLEGAL , ILLEGAL , # IN , LI ,#
- ILLEGAL , ILLEGAL , # OP , PA ,#
- ILLEGAL , ILLEGAL , # PG , PL ,#
- GEN$PARAM , ILLEGAL , # PW , SE ,#
- ILLEGAL , ILLEGAL , # FA , XLC ,#
- ILLEGAL , ILLEGAL , # XLX , XLTO ,#
- ILLEGAL , ILLEGAL , # ELO , ELX ,#
- ILLEGAL , ILLEGAL , # ELR , EBO ,#
- ILLEGAL , ILLEGAL , # EBR , CP ,#
- ILLEGAL , ILLEGAL , # IC , OC ,#
- ILLEGAL , ILLEGAL , # LK , EBX ,#
- , GEN$PARAM , # , MC ,#
- ILLEGAL , , # XLY , EOF ,#
- , ILLEGAL , # PAD , RTS #
- ILLEGAL , ILLEGAL ; # MCI , MLI #
- CONTROL EJECT;
- # #
- # BSCDEV CODE BEGINS HERE #
- # #
- FOR I=3 STEP 1 UNTIL STWC[0] # CHECK EACH VALUE-DEC ENTRY #
- DO
- BEGIN
- GOTO BSCDJUMP[STKWID[I]]; # GOTO APPROPRIATE PARAGRAPH #
- GEN$PARAM:
- GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETER #
- TEST I;
- FLOW$PARAM:
- FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETER #
- TEST I;
- CON$PARAM:
- IF CRNT$DT EQ DT"CON" # IF CURRENT DT IS CONSOLE #
- THEN
- BEGIN
- CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
- END
- ELSE # DT IS NOT CONSOLE #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- MB$PARAM:
- IF CRNT$DT EQ DT"CP" # IF DT IS CARD PUNCH #
- THEN
- BEGIN # IF STIP IS 3780 OR UNKNOWN #
- IF CRNT$STIP EQ STIP"$3780" OR
- CRNT$STIP EQ STIP"UNKNOWN"
- THEN
- BEGIN # CHECK MODE4/BSC PARAMETER #
- MBDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # STIP MUST BE 2780 #
- BEGIN # FLAG ERROR -- INVALID WITH STIP SPEC #
- NDLEM2(ERR135,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- END
- ELSE # DT IS NOT CARD PUNCH #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- SDT:
- IF CRNT$DT EQ DT"LP" OR # IF DT IS LINE PRINTER OR #
- CRNT$DT EQ DT"CR" OR # CARD READER #
- STVALNAM[I] EQ "SDT12" OR # IF USER SDT12 THROUGH SDT15 #
- STVALNAM[I] EQ "SDT13" OR
- STVALNAM[I] EQ "SDT14" OR
- STVALNAM[I] EQ "SDT15"
- THEN
- BEGIN # CHECK PASSIVE DEVICE PARAMETER#
- BTCHDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS NOT LP OR CR #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- ILLEGAL: # ALL OTHER PARAMETERS FLAG AS INVALID #
- IF NOT TT$USED # IF THIS IS AN AUTO-SYNC LINE #
- THEN
- BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
- NDLEM2(ERR135,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
- BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
- NDLEM2(ERR106,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- ABL:
- IF CRNT$DT EQ DT"CON" # IF CURRNT DT IS CONSOLE #
- THEN
- BEGIN # CHECK FLOW CONTROL PARAMETER #
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS NOT CONSOLE #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- DBZ:
- IF CRNT$DT NQ DT"CR" # IF DT IS NOT CARD READER #
- THEN
- BEGIN # CHECK FLOW CONTROL PARAMETER #
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS CARD READER #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- UBZ$UBL: # IF DT IS CONSOLE, CARD READER, LINE #
- # PRINTER, OR CARD PUNCH #
- IF CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"CR" OR
- CRNT$DT EQ DT"LP" OR CRNT$DT EQ DT"CP"
- THEN
- BEGIN
- IF STKWID[I] EQ KID"UBZ" # IF UBZ PARAMETER #
- THEN
- BEGIN
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE
- BEGIN # ELSE, UBL PARAMETER #
- IF (CRNT$DT NQ "CON") AND
- (STVALNUM[I] GQ 1 AND STVALNUM[I] LQ 7)
- THEN
- BEGIN # PASSIVE DEVICES: 1 <= UBL <= 7#
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE
- BEGIN # PARAMETER VALUE OUT OF RANGE #
- CHARVAL=XCDD(STVALNUM[I]);
- NDLEM2(ERR100,STLNUM[0],CHARVAL);
- END
- END
- END
- ELSE
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- NEXT$BSC:
- END
- IF NOT ABL$USED AND # IF ABL NOT SPECIFIED AND #
- CRNT$DT EQ DT"CON" # CURRENT DT IS CONSOLE #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(FN"ABL",ABL$DEF);
- END
- IF NOT DBL$USED # IF DBL NOT SPECIFIED #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(FN"DBL",DBL$DEF[CRNT$DT]);
- END
- IF NOT UBL$USED # IF UBL NOT SPECIFIED #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(FN"UBL",UBL$DEF);
- END
- IF NOT DBZ$USED AND # IF DBZ NOT SPECIFIED AND #
- CRNT$DT NQ DT"CR" # CRNT DT IS NOT CARD READER #
- THEN
- BEGIN
- VALUE = 0; # CLEAR VALUE TEMPORARY #
- IF CRNT$TC NQ TC"USER" AND # IF TC IS NOT USER OR UNKNOWN #
- CRNT$TC NQ TC"UNKNOWN"
- THEN
- BEGIN # DEFAULT DBZ BY TC AND DT #
- VALUE = DBZ$DEF[CRNT$TC,CRNT$DT];
- END
- ELSE # TC IS USER OR UNKNOWN #
- BEGIN
- IF CRNT$STIP NQ STIP"UNKNOWN"
- THEN # IF STIP IS NOT UNKNOWN #
- BEGIN # DEFAULT DBZ BY STIP AND DT #
- VALUE = DBZ$STIP$DEF[CRNT$STIP,CRNT$DT];
- END
- END
- IF VALUE NQ 0 # IF DEFAULT DBZ WAS DETERMINED #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY FOR #
- VALUE2 = B<44,8>VALUE; # MSB OF VALUE #
- DEVFNFV(FN"DBZ$MSB",VALUE2);
- VALUE2 = B<52,8>VALUE; # LSB OF VALUE #
- DEVFNFV(FN"DBZ$LSB",VALUE2);
- END
- END
- IF NOT UBZ$USED AND # IF UBZ WAS NOT SPECIFIED #
- (CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"CR")
- THEN
- BEGIN
- DEVFNFV(FN"UBZ",UBZ$DEF[CRNT$DT]); # ENTER DEFAULT UBZ #
- END
- IF NOT XBZ$USED # IF XBZ NOT SPECIFIED #
- THEN
- BEGIN
- VALUE = 0; # CLEAR VALUE TEMPORARY #
- IF CRNT$TC NQ TC"USER" AND # IF TC IS NOT USER OR UNKNOWN #
- CRNT$TC NQ TC"UNKNOWN"
- THEN
- BEGIN # DEFAULT XBZ BY TC AND DT #
- VALUE = XBZ$DEF[CRNT$TC];
- END
- ELSE # TC IS USER OR UNKNOWN #
- BEGIN
- IF CRNT$STIP NQ STIP"UNKNOWN"
- THEN # IF STIP IS NOT UNKNOWN #
- BEGIN # DEFAULT XBZ BY STIP AND DT #
- VALUE = XBZ$STIP$DEF[CRNT$STIP];
- END
- END
- IF VALUE NQ 0 # DEFAULT XBZ VALUE DETERMINED #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY FOR #
- VALUE2 = B<44,8>VALUE; # MSB OF DEFAULT VALUE #
- DEVFNFV(FN"XBZ$MSB",VALUE2);
- VALUE2 = B<52,8>VALUE; # LSB OF DEFAULT VALUE #
- DEVFNFV(FN"XBZ$LSB",VALUE2);
- END
- END
- IF NOT TA$USED AND # IF TA NOT SPECIFIED AND #
- CRNT$DT EQ DT"CP" # DT IS CARD PUNCH #
- THEN
- BEGIN
- IF NOT AUTO$REC AND # IF AUTO-REC LINE AND #
- CRNT$STIP EQ STIP"$3780" # STIP IS 3780 #
- THEN
- BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
- NDLEM2(ERR103,STLNUM[0],"TA");
- END
- END
- IF CRNT$MREC NQ 0 # IF MREC VALUE SPECIFIED #
- THEN
- BEGIN # MAKE FNFV PAIR VALUE #
- DEVFNFV(FN"MREC",CRNT$MREC);
- END
- IF CRNT$STIP EQ STIP"$2780" OR # IF STIP OR TC IS 2780 #
- CRNT$TC EQ TC"$2780"
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY FOR BCF #
- DEVFNFV(FN"BCF",BCF$FLAG);
- END
- IF CRNT$DT NQ DT"CON" AND
- CRNT$DT NQ DT"USER"
- THEN # IF CURRENT DEVICE IS A PASSIVE DEVICE #
- BEGIN
- DEVFNFV(FN"DO$",DO$DEF); # ENTER DEFAULT -DO- INTO ENTRY #
- END
- RETURN; # **** RETURN **** #
- END # BSCDEV #
- CONTROL EJECT;
- PROC BTCHDEV(BDWORD,BDLNUM);
- BEGIN
- *IF,DEF,IMS
- #
- ** BTCHDEV - CHECK BATCH DEVICE PARAMETERS.
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CHECKS THE PARAMETERS THAT ARE USED FOR BATCH OR
- * PASSIVE DEVICES.
- *
- * PROC BTCHDEV(BDWORD,BDLNUM)
- *
- * ENTRY BDWORD = VALUE DECLARATION ENTRY.
- * BDLNUM = CURRENT LINE NUMBER.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * SELECT CASE THAT APPLIES:
- * CASE 1(SDT):
- * IF VALUE IS O.K.,
- * IF VALUE IS NOT -CCP-,
- * MAP NUMERIC VALUE FOR CHARACTER VALUE.
- * PUT NUMERIC VALUE INTO DEVICE ENTRY
- * IF TIPTYPE IS NOT USER OR UNKNOWN AND
- * DT IS NOT USER OR UNKNOWN AND
- * SDT VALUE NOT EQUAL SDT12, SDT13, SDT14, OR SDT15
- * THEN,
- * IF DT AND SDT ARE NOT COMPATIBLE,
- * FLAG ERROR -- VALUE INVALID WITH DT SPECIFIED.
- * CASE 2(DO):
- * IF VALUE IS O.K.,
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * PUT VALUE IN DEVICE ENTRY.
- * IF TIPTYPE IS NOT USER OR UNKNOWN AND
- * DT IS NOT USER OR UNKNOWN,
- * THEN,
- * IF DO VALUE IS NOT UNIQUE FOR DEVICE TYPE,
- * FLAG ERROR -- DUPLICATE DO VALUE.
- * CASE 3(STREAM):
- * IF VALUE IS O.K.,
- * IF VALUE IS -AUTOREC-,
- * THEN,
- * IF LINE IS NOT AUTO-REC,
- * FLAG ERROR -- VALUE INVALID FOR FIXED LINES.
- * OTHERWISE,
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * PUT VALUE IN DEVICE ENTRY.
- * IF TIPTYPE IS NOT USER OR UNKNOWN AND
- * DT IS NOT USER OR UNKNOWN,
- * THEN,
- * IF VALUE IS NOT UNIQUE FOR DEVICE TYPE,
- * THEN,
- * FLAG ERROR -- DUPLICATE STREAM VALUE.
- * OTHERWISE,
- * IF DT IS CARD PUNCH OR PLOTTER,
- * IF VALUE IS NOT UNIQUE,
- * FLAG ERROR -- DUPLICATE STREAM VALUE.
- *
- #
- *ENDIF
- ARRAY BDWORD [0:0] S(1); # VALUE-DECLARATION ENTRY #
- BEGIN
- ITEM BDKWID U(0,0,9); # KEYWORD I.D. #
- ITEM BDVLERR B(0,17,1); # VALUE ERROR FLAG #
- ITEM BDNAME C(0,18,7); # CHARACTER STRING VALUE #
- ITEM BDVAL (0,18,42); # INTEGER VALUE #
- END
- ITEM BDLNUM; # STATEMENT SOURCE LINE NUMBER #
- #
- **** PROC BTCHDEV - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLCKRG; # CHECKS IF VALUE IS WITH RANGE FOR PARAM #
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- DEF SDT$UNKNOWN # 999 #; # CONSTANT USED IF SDT IS UNK #
- ITEM BDSTAT B; # STATUS RETURNED BY NDLCKRG #
- ITEM CRNT$SDT; # POINTER TO SDT TABLE OF CRNT VALUE #
- ITEM I; # SCRATCH ITEM #
- ITEM ITEMP; # INTEGER TEMPORARY FOR STORING WORD COUNT#
- ITEM VALUE; # INTEGER VALUE TEMPORARY #
- DEF MXSDT # 11 #; # MAXIMUM NUMBER OF SDT-S #
- ARRAY SDT$TABLE [1:MXSDT] S(1);
- BEGIN
- ITEM SDT$NAME C(0,0,7) = ["A6", # SDT VALUES #
- "B6",
- "A9",
- "29",
- "26",
- "6BIT",
- "8BIT",
- "SDT12",
- "SDT13",
- "SDT14",
- "SDT15"
- ];
- ITEM SDT$NUMV U(0,42,9) = [0, # A6 - SDT NUMERIC VAL#
- 1, # B6 #
- 2, # A9 #
- 0, # 29 #
- 1, # 26 #
- 0, # 6BIT #
- 1, # 8BIT #
- 12, # SDT12 #
- 13, # SDT13 #
- 14, # SDT14 #
- 15 # SDT15 #
- ];
- ITEM DT$ALLW U(0,51,9) = [DT"LP", # A6 - DT ALLOWED #
- DT"LP", # B6 #
- DT"LP", # A9 #
- DT"CR", # 29 #
- DT"CR", # 26 #
- DT"PL", # 6BIT #
- DT"PL", # 8BIT #
- 0, # SDT12 - NOT CHECKED #
- 0, # SDT13 - NOT CHECKED #
- 0, # SDT14 - NOT CHECKED #
- 0 # SDT15 - NOT CHECKED #
- ];
- END
- SWITCH BTCHJUMP , , # UNK , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- , , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , , # AUTO , SL ,#
- , , # LSPEED , DFL ,#
- , , # FRAME , RTIME ,#
- , , # RCOUNT , NSVC ,#
- , , # PSN , DCE ,#
- , , # DTEA , ,#
- , , # , ,#
- , , # , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- , , # , DT ,#
- SDT$ , , # SDT , TA ,#
- , , # ABL , DBZ ,#
- , , # UBZ , DBL ,#
- , , # UBL , XBZ ,#
- DO$ , STREAM , # DO , STREAM ,#
- , , # HN , AUTOLOG ,#
- , , # AUTOCON , PRI ,#
- , , # P90 , P91 ,#
- , , # P92 , P93 ,#
- , , # P94 , P95 ,#
- , , # P96 , P97 ,#
- , , # P98 , P99 ,#
- , , # AB , BR ,#
- , , # BS , B1 ,#
- , , # B2 , CI ,#
- , , # CN , CT ,#
- , , # DLC , DLTO ,#
- , , # DLX , EP ,#
- , , # IN , LI ,#
- , , # OP , PA ,#
- , , # PG , PL ,#
- , ; # PW , SE #
- CONTROL EJECT;
- # #
- # BTCHDEV CODE BEGINS HERE #
- # #
- GOTO BTCHJUMP[BDKWID[0]]; # GOTO APPROPRIATE PARAGRAPH #
- SDT$:
- IF NOT BDVLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF BDNAME[0] NQ "CCP" # IF VALUE IS NOT -CCP- #
- THEN
- BEGIN
- VALUE = SDT$UNKNOWN; # SET VALUE TO UNKNOWN #
- FOR I=1 STEP 1 UNTIL MXSDT # SEARCH SDT TABLE FOR VALUE #
- DO
- BEGIN # IF VALUE FOUND #
- IF BDNAME[0] EQ SDT$NAME[I]
- THEN
- BEGIN
- VALUE = SDT$NUMV[I]; # SAVE NUMERICAL VALUE #
- CRNT$SDT = I; # SAVE POINTER TO ENTRY #
- END
- END
- IF VALUE NQ SDT$UNKNOWN # IF SDT VALUE WAS FOUND #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY FOR SDT #
- DEVFNFV(FN"SDT",VALUE);
- IF (CRNT$TIP NQ TIP"USER" AND CRNT$TIP NQ TIP"UNKNOWN") AND
- (CRNT$DT NQ DT"USER" AND CRNT$DT NQ DT"UNKNOWN") AND
- (VALUE NQ SDT$12 AND VALUE NQ SDT$13 AND
- VALUE NQ SDT$14 AND VALUE NQ SDT$15)
- THEN # IF TIP IS NOT USER OR UNKNOWN #
- BEGIN # AND DT NOT USER OR UNKNOWN #
- IF CRNT$DT NQ DT$ALLW[CRNT$SDT]
- THEN # IF VALUE NOT ALLOW WITH DT #
- BEGIN # FLAG ERROR -- VALUE INVALID WITH DT SPEC#
- NDLEM2(ERR138,BDLNUM,BDNAME[0]);
- END
- END
- END
- END
- END
- GOTO NEXT$BTCH;
- DO$:
- DO$USED = TRUE; # SET -DO- SPECIFIED FLAG #
- IF NOT BDVLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN # CHECK RANGE #
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(BDVAL[0],USR$WID1,NUM"DEC",BDSTAT); # CHECK RANGE #
- END
- ELSE
- BEGIN
- NDLCKRG(BDKWID[0],BDVAL[0],BDSTAT); # OTHERWISE CHECK NORMAL#
- END
- # RANGE #
- IF BDSTAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(FN"DO$",BDVAL[0]);
- IF (CRNT$TIP NQ TIP"USER" AND CRNT$TIP NQ TIP"UNKNOWN") AND
- (CRNT$DT NQ DT"USER" AND CRNT$DT NQ DT"UNKNOWN")
- THEN # IF TIP IS NOT USER OR UNKNOWN #
- BEGIN # AND DT NOT USER OR UNKNOWN #
- IF B<BDVAL[0],1>DO$MAP[CRNT$DT] NQ 1
- THEN # IF BIT FOR VALUE NOT SET #
- BEGIN # SET IT #
- B<BDVAL[0],1>DO$MAP[CRNT$DT] = 1;
- END
- ELSE # -DO- VALUE ALREADY USED #
- BEGIN # FLAG ERROR -- DO VALUE NOT UNIQUE FOR DT#
- NDLEM2(ERR139,BDLNUM," ");
- END
- END
- END
- END
- GOTO NEXT$BTCH;
- STREAM:
- STREAM$USED = TRUE; # SET STREAM SPECIFIED FLAG #
- IF NOT BDVLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF BDNAME[0] NQ "AUTOREC" # IF VALUE IS NOT -AUTOREC- #
- THEN
- BEGIN # CHECK RANGE #
- IF CRNT$TIP EQ TIP"USER" # IF USER DEFINED TIPTYPES #
- THEN
- BEGIN
- USR$RANGE(BDVAL[0],USR$WID1,NUM"DEC",BDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(BDKWID[0],BDVAL[0],BDSTAT); # CHECK NORMAL RANGE #
- END
- IF BDSTAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN # PUT VALUE IN DEVICE ENTRY #
- DEA2[CRNT$DEV + 2] = BDVAL[0];
- IF (CRNT$TIP NQ TIP"USER" AND CRNT$TIP NQ TIP"UNKNOWN") AND
- (CRNT$DT NQ DT"USER" AND CRNT$DT NQ DT"UNKNOWN")
- THEN # IF TIP AND DT IS NOT USER OR #
- BEGIN # UNKNOWN #
- IF B<BDVAL[0],1>STRM$MAP[CRNT$DT] NQ 1
- THEN # IF BIT FOR VALUE NOT SET #
- BEGIN # SET IT #
- B<BDVAL[0],1>STRM$MAP[CRNT$DT] = 1;
- IF CRNT$DT EQ DT"CP" OR # DT IS CP OR PL #
- CRNT$DT EQ DT"PL"
- THEN
- BEGIN # IF BIT FOR VALUE IS NOT SET #
- IF B<BDVAL[0],1>CP$PL$MAP NQ 1
- THEN
- BEGIN # SET IT #
- B<BDVAL[0],1>CP$PL$MAP = 1;
- END
- ELSE # VALUE ALREADY USED FOR CR AND PL #
- BEGIN # FLAG ERROR -- PL AND CR STREAM VALUE NOT#
- NDLEM2(ERR140,BDLNUM," "); # UNIQUE #
- END
- END
- END
- ELSE # STREAM VALUE ALREADY USED #
- BEGIN # FLAG ERROR -- STREAM VALUE NOT UNIQUE #
- NDLEM2(ERR141,BDLNUM," ");
- END
- END
- END
- END
- ELSE
- BEGIN # VALUE IS -AUTOREC- #
- IF NOT AUTO$REC # IF NOT ON AN AUTO-REC LINE #
- THEN
- BEGIN # FLAG ERROR -- AUTOREC NOT VALID ON FIXED#
- NDLEM2(ERR113,BDLNUM," "); # CONFIGURATION LINES #
- END
- END
- END
- GOTO NEXT$BTCH;
- NEXT$BTCH:
- RETURN; # **** RETURN **** #
- END # BTCHDEV #
- CONTROL EJECT;
- PROC CONDEV(CDWORD,CDLNUM);
- BEGIN
- *IF,DEF,IMS
- #
- ** CONDEV - CHECK DEVICE STATEMENT CONSOLE PARAMETERS.
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CHECKS PARAMETERS THAT ARE ONLY ALLOWED FOR CONSOLE
- * DEVICES.
- *
- * PROC CONDEV(CDWORD,CDLNUM)
- *
- * ENTRY CDWORD = VALUE DECLARATION ENTRY.
- * CDLNUM = CURRENT SOURCE LINE NUMBER.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * IF VALUE IS O.K. AND NOT -CCP-,
- * SELECT CASE THAT APPLIES,
- * CASE 1(AL,BS,B1,B2,CN,CT):
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * PUT VALUE IN DEVICE ENTRY.
- * SAVE VALUE FOR UNIQUENESS TESTING.
- * CASE 2(DLC,CI,DLX,PL,LI,XLY):
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE
- * PUT VALUE IN DEVICE ENTRY.
- * CASE 3(HN):
- * IF VALUE IS NOT -NONE-,
- * CHECK IF VALUE IN RANGE.
- * IF IN RANGE,
- * CHECK IF VALUE IS A LEGAL HOST NODE.
- * IF LEGAL HOST I.D.,
- * THEN,
- * PUT VALUE IN DEVICE ENTRY.
- * OTHERWISE,
- * FLAG ERROR -- INVALID HN VALUE.
- * CASE 4(AUTOCON,AUTOLOG,BR,DLTO,EP,PG,SE):
- * IF VALUE IS -YES-
- * PUT VALUE IN DEVICE ENTRY.
- * CASE 5(PA,OP,IN)
- * MAP NUMERIC VALUE FOR CHARACTER VALUE.
- * PUT NUMERIC VALUE IN DEVICE ENTRY.
- *
- #
- *ENDIF
- ARRAY CDWORD [0:0] S(1); # VALUE DECLARATION ENTRY #
- BEGIN
- ITEM CDKWID U(0,0,9); # KEYWORD I.D. #
- ITEM CDVLERR B(0,17,1); # VALUE ERROR FLAG #
- ITEM CDNAME C(0,18,7); # VALUE NAME #
- ITEM CDVAL (0,18,42); # VALUE NUMBER #
- END
- ITEM CDLNUM; # STATEMENT SOURCE LINE NUMBER #
- #
- **** PROC CONDEV - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLCKRG; # CHECKS IF VALUE IS WITHIN RANGE #
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- FUNC XCDD C(10); # CONVERT INTEGER TO DISPLAY CODE #
- END
- #
- ****
- #
- ITEM CDSTAT B; # RETURNED STATUS FROM NDLCKRG #
- ITEM CTEMP C(10); # CHARACTER TEMPORARY #
- ITEM FOUND B; # FLAG INDICATING ENTRY WAS FOUND #
- ITEM I; # SCRATCH ITEM #
- ITEM ITEMP; # INTEGER TEMPORARY #
- ITEM MAX$ENT; # MAXIMUM ENTRY IN TABLE #
- ITEM VALUE1; # INTEGER TEMPORARY #
- ITEM VALUE2; # INTEGER TEMPORARY #
- DEF MNKWD # 76 #; # MINIMUM KEYWORD I.D. IN TABLE #
- DEF MXKWD # 129 #; # MAXIMUM KEYWORD I.D. IN TABLE #
- ARRAY FN$TABLE [MNKWD:MXKWD] S(1); # FN VALUE FOR KEYWORDS #
- BEGIN
- ITEM CD$FN (0,0,60) = [FN"HN", # HN #
- , # AUTOLOG #
- FN"AUTOCON", # AUTOCON #
- FN"PRI", # PRI #
- ,,,,,,,,,, # P90 THRU P99 #
- FN"AB", # AB #
- FN"BR", # BR #
- FN"BS", # BS #
- FN"B1", # B1 #
- FN"B2", # B2 #
- FN"CI", # CI #
- FN"CN", # CN #
- FN"CT", # CT #
- FN"DLC$MSB", # DLC #
- FN"DLTO", # DLTO #
- FN"DLX", # DLX #
- FN"EP", # EP #
- FN"IN", # IN #
- FN"LI", # LI #
- FN"OP", # OP #
- FN"PA", # PA #
- FN"PG", # PG #
- FN"PL", # PL #
- FN"PW", # PW #
- FN"SE", # SE #
- FN"FA", # FA #
- FN"DLC$MSB", # XLC #
- FN"DLX", # XLX #
- FN"DLTO", # XLTO #
- FN"ELO", # ELO #
- FN"ELX", # ELX #
- FN"ELR", # ELR #
- FN"EBO", # EBO #
- FN"EBR", # EBR #
- FN"CP", # CP #
- FN"IC", # IC #
- FN"OC", # OC #
- FN"LK", # LK #
- FN"EBX", # EBX #
- ,
- FN"MC", # MC #
- FN"XLY", # XLY #
- , # EOF #
- , # PAD #
- FN"RTS" # RTS #
- ];
- END
- DEF MXEBR # 4 #; # MAXIMUM NUMBER OF EBR VALUES #
- ARRAY EBR$TABLE [1:MXEBR] S(1);
- BEGIN
- ITEM EBR$VAL C(0,0,7) = ["NO", # NONE #
- "CR", # CARRIAGE RETURN -- EBR VALUES #
- "LF", # LINE FEED #
- "CL" # CARRIAGE RETURN AND LINE FEED #
- ];
- ITEM EBR$NUMV (0,42,18) = [0, # NONE - NUMERIC VAL #
- 1, # CARRIAGE RETURN - NUMERIC VAL #
- 2, # LINE FEED #
- 3 # CARRIAGE RETURN AND LINE FEED #
- ];
- END
- DEF MXELO # 2 #; # MAXIMUM NUMBER OF ELO/EBO VALUES #
- ARRAY ELO$TABLE [1:MXELO] S(1);
- BEGIN
- ITEM ELO$VAL C(0,0,7) = ["EL", # DEFAULT MODE CHAR - ELO VALUES#
- "EB" # SAME AS EB #
- ];
- ITEM ELO$NUMV (0,42,18) = [1, # DEFAULT MODE CHAR - NUMERIC #
- 2, # SAME AS EB #
- ];
- END
- DEF MXIN # 3 #; # MAXIMUM NUMBER OF IN VALUES #
- ARRAY IN$TABLE [1:MXIN] S(1);
- BEGIN
- ITEM IN$VAL C(0,0,7) = ["KB", # KEY BOARD -- IN VALUES #
- "PT", # PAPER TAPE #
- "BK" # BLOCK MODE #
- ];
- ITEM IN$NUMV (0,42,18) = [0, # KEY BOARD -- NUMERICAL VALUE #
- 1, # PAPER TAPE #
- 2, # BLOCK MODE #
- ];
- END
- DEF MXOP # 3 #; # MAXIMUM NUMBER OF OP VALUES #
- ARRAY OP$TABLE [1:MXOP] S(1);
- BEGIN
- ITEM OP$VAL C(0,0,7) = ["DI", # DISPLAY -- OP VALUES #
- "PR", # PRINTER #
- "PT" # PAPER TAPE #
- ];
- ITEM OP$NUMV (0,42,18) = [1, # DISPLAY -- NUMERICAL VALUE #
- 0, # PRINTER #
- 2 # PAPER TAPE #
- ];
- END
- DEF MXPA # 5 #; # MAXIMUM NUMBER OF PA VALUES #
- ARRAY PA$TABLE [1:MXPA] S(1);
- BEGIN
- ITEM PA$VAL C(0,0,7) = ["Z", # ZERO PARITY -- PA VALUES #
- "O", # ODD PARITY #
- "E", # EVEN PARITY #
- "N" # NO PARITY #
- ,"I" # IGNORE PARITY (ON XPT DELIM) #
- ];
- ITEM PA$NUMV (0,42,18) = [0, # ZERO PARITY -- NUMERICAL VALUE#
- 1, # ODD PARITY #
- 2, # EVEN PARITY #
- 3 # NO PARITY #
- ,4 # IGNORE PARITY (ON XPT DELIM) #
- ];
- END
- BASED ARRAY TABLE [1:1] S(1); # TEMPLATE FOR TABLES(PA,OP,IN) #
- BEGIN
- ITEM VALUE C(0,0,7); # VALUE CHARACTER STRING #
- ITEM NUMV (0,42,18); # NUMERICAL VALUE #
- END
- SWITCH CONDJUMP , , # UNK , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- , , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , , # AUTO , SL ,#
- , , # LSPEED , DFL ,#
- , , # FRAME , RTIME ,#
- , , # RCOUNT , NSVC ,#
- , , # PSN , DCE ,#
- , , # DTEA , ,#
- , , # , ,#
- , , # , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- , , # , DT ,#
- , , # SDT , TA ,#
- , , # ABL , DBZ ,#
- , , # UBZ , DBL ,#
- , , # UBL , XBZ ,#
- , , # DO , STREAM ,#
- HN$ , , # HN , AUTOLOG ,#
- AUTOCON , , # AUTOCON , PRI ,#
- , , # P90 , P91 ,#
- , , # P92 , P93 ,#
- , , # P94 , P95 ,#
- , , # P96 , P97 ,#
- , , # P98 , P99 ,#
- AB$ , YES$NO , # AB , BR ,#
- BS$ , B1$ , # BS , B1 ,#
- B2$ , NUMERIC , # B2 , CI ,#
- CN$ , CT$ , # CN , CT ,#
- DLC$ , DLTO$ , # DLC , DLTO ,#
- DLX$ , YES$NO , # DLX , EP ,#
- IN$ , NUMERIC , # IN , LI ,#
- OP$ , PA$ , # OP , PA ,#
- YES$NO , NUMERIC , # PG , PL ,#
- , YES$NO , # PW , SE ,#
- YES$NO , DLC$ , # FA , XLC ,#
- DLX$ , DLTO$ , # XLX , XLTO ,#
- ELO$ , ELX$ , # ELO , ELX ,#
- EBR$ , ELO$ , # ELR , EBO ,#
- EBR$ , YES$NO , # EBR , CP ,#
- YES$NO , YES$NO , # IC , OC ,#
- YES$NO , EBX$ , # LK , EBX ,#
- , , # , MC ,#
- DLX$ , , # XLY , EOF ,#
- , YES$NO ; # PAD , RTS #
- CONTROL EJECT;
- PROC T$GROUP(TKWID);
- BEGIN
- *IF,DEF,IMS
- #
- **
- *
- *
- * PROCEDURE T$GROUP
- *
- * THIS PROCEDURE CHECKS IF XL'S AND DL'S ON A DEVICE STATEMENT
- * ARE MUTUALLY EXCLUSIVE.
- *
- * Y.C. YIP 82/10/09
- *
- *
- * ENTRY:
- *
- * TKWID = KEYWORD ID.
- *
- * EXIT:
- * TKWID REMAIN UNCHANGED.
- *
- #
- *ENDIF
- ITEM IS$XL B; # BOOLEAN VARIABLE FOR XL'S #
- ITEM TKWID; # KEYWORD ID. #
- IF TKWID GR KID"DLX" # IF KEYWORD ID ABOVE DL'S #
- THEN
- BEGIN
- IS$XL = TRUE; # KEYWORD MUST BE XL'S #
- END
- ELSE
- BEGIN
- IS$XL = FALSE; # KEYWORD MUST BE DL'S #
- END
- IF GR$SET EQ X$D$GROUP"NO" # IF NO XL'S OR DL'S ARE MET YET #
- THEN
- BEGIN
- IF IS$XL
- THEN
- BEGIN # IF KEYWORD IS XL'S #
- GR$SET = S"XG"; # SET TO XL'S GROUP #
- END
- ELSE
- BEGIN
- GR$SET = S"DG"; # SET TO DL'S GROUP #
- END
- END
- ELSE
- BEGIN # IF XL'S OR DL'S WERE USED #
- IF (IS$XL AND (GR$SET EQ X$D$GROUP"DG")) OR
- ( NOT IS$XL AND (GR$SET EQ X$D$GROUP"XG"))
- # IF XL'S USED AND THE PARAMETER IS
- DL'S OR IF DL'S USED AND THE
- PARAMETER IS XL'S. #
- THEN
- BEGIN
- NDLEM2(ERR152,CDLNUM,KWDNAME[TKWID]);
- END
- END
- END # END OF PROC T$GROUP #
- CONTROL EJECT;
- # #
- # CONDEV CODE BEGINS HERE #
- # #
- IF NOT CDVLERR[0] AND # IF VALUE IS O.K. AND NOT -CCP-#
- CDNAME[0] NQ "CCP"
- THEN
- BEGIN
- GOTO CONDJUMP[CDKWID[0]]; # GOTO APPROPRIATE PARAGRAPH #
- AB$:
- IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
- END
- CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
- # CHECK RANGE OF CONTROL CHARACTER #
- IF CDSTAT # IF -AB- VALUE IS IN RANGE #
- THEN
- BEGIN
- CRNT$CC[CC"AB"] = CDVAL[0]; # SAVE -AB- VALUE #
- DEVFNFV(FN"AB",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
- END
- GOTO NEXT$CON;
- BS$:
- IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
- END
- CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
- # CHECK RANGE OF CONTROL CHARACTER #
- IF CDSTAT # IF -BS- VALUE IS IN RANGE #
- THEN
- BEGIN
- CRNT$CC[CC"BS"] = CDVAL[0]; # SAVE -BS- VALUE #
- DEVFNFV(FN"BS",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
- END
- GOTO NEXT$CON;
- B1$:
- IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
- END
- CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
- # CHECK RANGE OF CONTROL CHARACTER #
- IF CDSTAT # IF -B1- VALUE IS IN RANGE #
- THEN
- BEGIN
- CRNT$CC[CC"B1"] = CDVAL[0]; # SAVE -B1- VALUE #
- DEVFNFV(FN"B1",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
- END
- GOTO NEXT$CON;
- B2$:
- IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
- END
- CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
- # CHECK RANGE OF CONTROL CHARACTER #
- IF CDSTAT # IF -B2- VALUE IS IN RANGE #
- THEN
- BEGIN
- CRNT$CC[CC"B2"] = CDVAL[0]; # SAVE -B2- VALUE #
- DEVFNFV(FN"B2",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
- END
- GOTO NEXT$CON;
- CN$:
- IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
- END
- CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
- # CHECK RANGE OF CONTROL CHARACTER #
- IF CDSTAT # IF -CN- VALUE IS IN RANGE #
- THEN
- BEGIN
- CRNT$CC[CC"CN"] = CDVAL[0]; # SAVE -CN- VALUE #
- DEVFNFV(FN"CN",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
- END
- GOTO NEXT$CON;
- CT$:
- IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
- END
- CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
- # CHECK RANGE OF CONTROL CHARACTER #
- IF CDSTAT # IF -CT- VALUE IS IN RANGE #
- THEN
- BEGIN
- CRNT$CC[CC"CT"] = CDVAL[0]; # SAVE -CT- VALUE #
- DEVFNFV(FN"CT",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
- END
- GOTO NEXT$CON;
- ELX$:
- IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
- END
- CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
- # CHECK RANGE OF CONTROL CHARACTER #
- IF CDSTAT # IF VALUE IS IN RANGE #
- THEN
- BEGIN
- CRNT$CC[CC"ELX"] = CDVAL[0]; # SAVE -ELX- VALUE #
- DEVFNFV(FN"ELX",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
- END
- GOTO NEXT$CON;
- EBX$:
- IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
- END
- CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
- # CHECK RANGE OF CONTROL CHARACTER #
- IF CDSTAT # IF VALUE IS IN RANGE #
- THEN
- BEGIN
- CRNT$CC[CC"EBX"] = CDVAL[0]; # SAVE -EBX- VALUE #
- DEVFNFV(FN"EBX",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
- END
- GOTO NEXT$CON;
- DLC$:
- IF CRNT$TIP NQ TIP"USER"
- THEN
- BEGIN
- T$GROUP(CDKWID[0]); # CHECK IF ANY MUTUALLY
- EXCLUSIVE KEYWORD WERE USED #
- END
- IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(CDVAL[0],USR$WID2,NUM"HEX",CDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CHECK NORMAL RANGE #
- END
- IF CDSTAT # IF -DLC- VALUE IS IN RANGE #
- THEN
- BEGIN
- VALUE1 = CDVAL[0]; # MAKE FNFV PAIR ENTRY FOR #
- VALUE2 = B<44,8>VALUE1; # MSB OF -DLC- VALUE #
- DEVFNFV(FN"DLC$MSB",VALUE2);
- VALUE2 = B<52,8>VALUE1; # LSB OF -DLC- VALUE #
- DEVFNFV(FN"DLC$LSB",VALUE2);
- END
- GOTO NEXT$CON;
- DLTO$:
- IF CRNT$TIP NQ TIP"USER"
- THEN
- BEGIN
- T$GROUP(CDKWID[0]); # CHECK IF MUTUALLY EXCLUSIVE KEYWORDS #
- END
- # WERE USED #
- GOTO YES$NO;
- DLX$:
- IF CRNT$TIP NQ TIP"USER"
- THEN
- BEGIN
- T$GROUP(CDKWID[0]); # CHECK IF MUTUALLY EXCLUSIVE KEYWORD ARE
- USED #
- END
- NUMERIC:
- IF CDKWID[0] EQ KID"PL" # IF PAGE LENGTH SPECIFIED #
- THEN
- BEGIN
- PL$USED = TRUE; # SET PL USED FLAG #
- END
- IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- IF CDKWID[0] EQ KID"DLX" OR
- CDKWID[0] EQ KID"XLX" OR
- CDKWID[0] EQ KID"XLY"
- THEN
- BEGIN
- USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
- END
- ELSE
- BEGIN
- USR$RANGE(CDVAL[0],USR$WID1,NUM"DEC",CDSTAT);
- END
- END
- ELSE
- BEGIN
- NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CHECK NORMAL RANGE #
- END
- IF CDSTAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(CD$FN[CDKWID[0]],CDVAL[0]);
- END
- GOTO NEXT$CON;
- HN$:
- IF CDNAME[0] NQ "NONE" # IF VALUE IS NOT -NONE- #
- THEN
- BEGIN
- HN$USED = TRUE; # SET HN SPECIFIED FLAG #
- IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(CDVAL[0],USR$WID1,NUM"DEC",CDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CHECK NORMAL RANGE #
- END
- IF CDSTAT # IF VALUE IS WITHIN RANGE #
- THEN # CHECK LLT FOR ENTRY #
- BEGIN
- FOUND = FALSE; # SEARCH LLT UNTIL FOUND #
- FOR I=1 STEP LLTENTSZ WHILE NOT FOUND AND
- I LQ LLTENT[0]
- DO
- BEGIN # IF LOGICAL LINK EXISTS BETWEEN#
- IF CDVAL[0] EQ LLTHNID[I] AND # NPU AND HN NODE #
- CRNT$NID EQ LLTNID[I]
- THEN
- BEGIN
- FOUND = TRUE; # SET FLAG INDICATING SO #
- END
- END
- IF FOUND # IF ENTRY FOUND #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY FOR HN #
- DEVFNFV(FN"HN",CDVAL[0]);
- END
- ELSE # ENTRY NOT FOUND #
- BEGIN # FLAG ERROR -- INVALID HN VALUE #
- CTEMP = XCDD(CDVAL[0]);
- NDLEM2(ERR136,CDLNUM,CTEMP);
- END
- END
- END
- GOTO NEXT$CON;
- AUTOCON:
- IF CDNAME[0] EQ "YES" # IF VALUE IS -YES- #
- THEN
- BEGIN
- AUTOCON$FLAG = TRUE; # SET AUTO-CONNECT FLAG #
- DEVFNFV(FN"AUTOCON",TRUE); # MAKE FNFV PAIR ENTRY #
- END
- ELSE # AUTOCON VALUE MUST BE -NO- #
- BEGIN
- AUTOCON$NO = TRUE; # SET AUTOCON = NO FLAG #
- END
- GOTO NEXT$CON;
- YES: # FOR STAND-ALONE KEYWORDS #
- IF CDNAME[0] EQ "YES" # IF VALUE IS -YES- #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(CD$FN[CDKWID[0]],TRUE);
- END
- GOTO NEXT$CON;
- YES$NO: # FOR KEYWORDS REQUIRING YES/NO VALUE #
- IF CDNAME[0] EQ "YES" # IF VALUE IS -YES- #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY WITH VALUE -YES- #
- DEVFNFV(CD$FN[CDKWID[0]],TRUE);
- END
- ELSE # VALUE MUST BE -NO- #
- BEGIN # MAKE FNFV PAIR ENTRY WITH VALUE -NO- #
- DEVFNFV(CD$FN[CDKWID[0]],FALSE);
- END
- GOTO NEXT$CON;
- PA$:
- P<TABLE> = LOC(PA$TABLE); # POINT TO TABLE OF PA VALUES #
- MAX$ENT = MXPA; # SAVE MAXIMUM ENTRY COUNT #
- GOTO MAP$NUM;
- OP$:
- P<TABLE> = LOC(OP$TABLE); # POINT TO TABLE OF OP VALUES #
- MAX$ENT = MXOP; # SAVE MAXIMUM ENTRY COUNT #
- GOTO MAP$NUM;
- IN$:
- P<TABLE> = LOC(IN$TABLE); # POINT TO TABLE OF IN VALUES #
- MAX$ENT = MXIN; # SAVE MAXIMUM ENTRY COUNT #
- GOTO MAP$NUM;
- ELO$:
- P<TABLE> = LOC(ELO$TABLE); # POINT TABLE TO ELO/EBO VALUES #
- MAX$ENT = MXELO; # SAVE MAXIMUM ENTRY VALUES #
- GOTO MAP$NUM;
- EBR$:
- P<TABLE> = LOC(EBR$TABLE); # POINT TABLE TO EBR VALUES #
- MAX$ENT = MXEBR; # SAVE MAXIMUM ENTRY VALUES #
- MAP$NUM:
- FOR I=1 STEP 1 UNTIL MAX$ENT # SEARCH TABLE FOR VALUE #
- DO
- BEGIN
- IF CDNAME[0] EQ VALUE[I] # IF VALUE FOUND #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(CD$FN[CDKWID[0]],NUMV[I]);
- END
- END
- NEXT$CON:
- END
- RETURN; # **** RETURN **** #
- END # CONDEV #
- CONTROL EJECT;
- PROC COUNT$LK;
- BEGIN
- *IF,DEF,IMS
- #
- **
- *
- *
- * COUNT$LK - COUNTS NUMBER OF LOGICAL LINKS TERMINATING AT A NPU.
- *
- * Y.C. YIP 11/22/1982
- *
- * THIS PROCEDURE COUNTS NUMBER OF LOGICAL LINKS TERMINATING AT
- * THE SAME NPU, AND CHECK IF THE HOST NAMES ARE THE SAME.
- *
- * PROC COUNT$LK
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * METHOD
- *
- * THE LOGICAL LINK TABLE IS SEARCHED, THE NUMBER OF LOGICAL
- * LINKS TERMINATING AT THE CRNT$NPU IS CHECKED.
- * SAVE$ENTRY IS SET TO THE LAST ENTRY OF THE SET OF LOGICAL
- * LINKS WITH THE SAME HOST NAME DEFINED ON A PARTICULAR NPU.
- * IF ONE OR MORE THAN ONE HOST NAMES ARE DIFFERENT THEN
- * SAVE$ENTRY IS SET TO -1. INITIALLY,SAVE$ENTRY IS SET TO
- * 0.
- *
- #
- *ENDIF
- ITEM I; # LOOP INDIX #
- CONTROL EJECT;
- # COUNT$LK CODE BEGINS HERE #
- LL$CNT = 0; # SETTING LINK COUNT TO 0 #
- SAVE$ENTRY = 0; # SETTING SAVE$ENTRY TO 0 #
- FOR I=1 STEP 1 UNTIL LLTENT[0]
- DO
- BEGIN # COUNT NUMBER OF LOGICAL LINKS #
- IF LLTNID[I] EQ CRNT$NID # TO THIS NPU #
- THEN
- BEGIN
- IF SAVE$ENTRY EQ 0 # IF FIRST ENTRY #
- THEN
- BEGIN
- SAVE$ENTRY = I; # SAVE ENTRY NUMBER #
- END
- ELSE # NOT FIRST ENTRY #
- BEGIN
- IF SAVE$ENTRY NQ NO$MATCH # NO MATCH FLAG IS SET #
- THEN
- BEGIN
- IF LLTHNAME[SAVE$ENTRY] NQ LLTHNAME[I] # IF HOS NAMES DIF#
- THEN
- BEGIN
- SAVE$ENTRY = NO$MATCH;# SET SAVE$ENTRY TO -1 #
- END
- ELSE
- BEGIN
- SAVE$ENTRY = I; # SAVE LAST ENTRY #
- END
- END
- END
- LL$CNT = LL$CNT + 1; # BUMP LINK COUNT #
- LLT$PNTR = I; # SAVE ENTRY #
- END
- END
- END # END OF PROC COUNT$LK #
- CONTROL EJECT;
- PROC DEVFNFV(FN$VAL,FV$VAL);
- BEGIN
- *IF,DEF,IMS
- #
- ** DEVFNFV - STORE FNFV PAIR IN DEVICE ENTRY.
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE PACKS A GIVEN FNFV PAIR INTO THE CURRENT DEVICE
- * ENTRY A INCREMENTS THE FNFV PAIR COUNT.
- *
- * PROC DEVFNFV(FN$VAL,FV$VAL)
- *
- * ENTRY FN$VAL = FIELD NUMBER VALUE.
- * FV$VAL = VALUE FOR FIELD SPECIFIED BY FN$VAL.
- *
- * EXIT NONE.
- *
- * METHOD:
- *
- * INCREMENT FNFV COUNT IN CURRENT DEVICE ENTRY.
- * SET CURRENT STATE TO ZERO.
- * ENTER STATE TABLE:
- *E
- * ***STATE I 0 I 1 I 2 I
- * *** I I I I
- * STIM ***I STORE FN I STORE FV I EXIT I
- * ---------+-----------------+-----------------+-----------------+
- * I I I I
- * I I I I
- * I PUT VAL IN WORD I PUT VAL IN WORD I I
- * BIT @ 52 I STATE=STATE+1 I STATE=STATE+1 I EXIT STATE TABLEI
- * I BIT=BIT+8 I BIT=BIT+8 I I
- * I I I I
- * I I I I
- * ---------+-----------------+-----------------+-----------------+
- * I I I I
- * I INCR WORD COUNT I INCR WORD COUNT I I
- * I BIT = 0 I BIT = 0 I I
- * BIT \ 60 I PUT VAL IN WORD I PUT VAL IN WORD I EXIT STATE TABLEI
- * I STATE=STATE+1 I STATE=STATE+1 I I
- * I BIT=BIT+8 I BIT=BIT+8 I I
- * I I I I
- * ---------+-----------------+-----------------+-----------------+
- * I PUT FIRST 4 BITSI PUT FIRST 4 BITSI I
- * I IN WORD I IN WORD I I
- * I INCR WORD COUNT I INCR WORD COUNT I I
- * BIT = 56 I BIT = 0 I BIT = 0 I EXIT STATE TABLEI
- * I PUT LAST 4 BITS I PUT LAST 4 BITS I I
- * I STATE=STATE+1 I STATE=STATE+1 I I
- * I BIT=BIT+4 I BIT=BIT+4 I I
- * ---------+-----------------+-----------------+-----------------+
- *
- #
- *ENDIF
- ITEM FN$VAL; # FIELD NUMBER TO BE STORED #
- ITEM FV$VAL; # FIELD VALUE TO BE STORED #
- DEF STATE0 # 0 #; # INITIAL STATE -- STORE FN VALUE #
- DEF STIM1 # 1 #; # REPRESENTS BIT POSITION @ 52 #
- DEF STIM2 # 2 #; # REPRESENTS BIT POSITION \ 60 #
- DEF STIM3 # 3 #; # REPRESENTS BIT POSITION = 56 #
- STATUS JUMP NEXT$WORD, # INCREMENT TO NEXT WORD BEFORE STORING #
- STORE$VAL, # STORE VALUE AND MOVE CRNT BIT POSITION #
- STOR$HALF, # STORE HALF VALUE IN CRNT AND NEXT WORD #
- EXIT$PROC; # EXIT PROCEDURE -- FNFV PAIR STORED #
- ITEM CRNT$STIM; # CURRENT STIMULUS #
- ITEM STATE; # CURRENT STATE #
- ARRAY FNFV$VALUE [0:0] S(1);
- BEGIN # TEMPORARY FOR FN/FV VALUE #
- ITEM VALUE (0,0,60);
- ITEM FRST$HALF U(0,52,4); # FIRST HALF OF VALUE #
- ITEM SCND$HALF U(0,56,4); # SECOND HALF OF VALUE #
- END
- DEF MXSTATE # 2 #; # MAXIMUM STATE #
- DEF MXSTIM # 3 #; # MAXIMUM NUMBER OF STIMULUS #
- ARRAY STATE$TABLE [0:MXSTATE,1:MXSTIM] S(1);
- BEGIN
- ITEM STATE$TBL (0,0,60) =
- # STATE * STORE FN * STORE FV * EXIT #
- # STIMULUS * * * #
- # #
- # BIT$POS @ 52 #[[JUMP"STORE$VAL",JUMP"STORE$VAL",JUMP"EXIT$PROC"]
- # #
- # BIT$POS \ 60 # [JUMP"NEXT$WORD",JUMP"NEXT$WORD",JUMP"EXIT$PROC"]
- # #
- # BIT$POS = 56 # [JUMP"STOR$HALF",JUMP"STOR$HALF",JUMP"EXIT$PROC"]
- ];
- END
- SWITCH FNFVJUMP NEW$WORD, # 0 -- NEXT$WORD #
- PUT$VALUE, # 1 -- STORE$VAL #
- PUT$HALF, # 2 -- STOR$HALF #
- EXIT; # 3 -- EXIT$PROC #
- CONTROL EJECT;
- # #
- # DEVFNFV CODE BEGINS HERE #
- # #
- STATE = STATE0; # INITIALIZE CURRENT STATE #
- VALUE[0] = FN$VAL; # PUT FN VALUE IN TEMPORARY #
- # INCREMENT FNFV PAIR COUNT #
- DEFNFV[CRNT$DEV + 1] = DEFNFV[CRNT$DEV + 1] + 1;
- START$STATE:
- IF BIT$POS LQ 52 # IF NET POSITION LESS THAN OR EQUAL TO 56#
- THEN
- BEGIN
- CRNT$STIM = STIM1; # SET CURRENT STIMULUS TO TYPE 1 #
- END
- ELSE # BIT POS NOT LESS THAN OR EQUAL TO 56 #
- BEGIN
- IF BIT$POS GQ 60 # IF BIT POS GREATER THAN OR EQUAL TO 60 #
- THEN
- BEGIN
- CRNT$STIM = STIM2; # SET CURRENT STIMULUS TO TYPE 2 #
- END
- ELSE # BIT POSITION MUST BE 56 #
- BEGIN
- CRNT$STIM = STIM3; # SET CURRENT STIMULUS TO TYPE 3 #
- END
- END
- # JUMP ACCORDING TO STATE TABLE #
- GOTO FNFVJUMP[STATE$TBL[STATE,CRNT$STIM]];
- # #
- NEW$WORD:
- LRWC[1] = LRWC[1] + 1; # INCREMENT WORD COUNT #
- LRWORD[LRWC[1]] = 0; # CLEAR THE NEXT WORD #
- BIT$POS = 0; # INITIALIZE BIT POSITION #
- PUT$VALUE:
- B<BIT$POS,8>LRWORD[LRWC[1]] = VALUE[0]; # STORE VALUE #
- STATE = STATE + 1; # SET TO NEXT STATE #
- VALUE[0] = FV$VAL; # PUT FV VALUE IN TEMPORARY #
- BIT$POS = BIT$POS + 8; # RESET CURRENT BIT POSITION #
- GOTO START$STATE;
- PUT$HALF: # STORE 1ST HALF OF VALUE #
- B<BIT$POS,4>LRWORD[LRWC[1]] = FRST$HALF[0];
- LRWC[1] = LRWC[1] + 1; # INCREMENT WORD COUNT #
- LRWORD[LRWC[1]] = 0; # CLEAR THE NEXT WORD #
- BIT$POS = 0; # INITIALIZE BIT POSITION #
- B<BIT$POS,4>LRWORD[LRWC[1]] = SCND$HALF[0]; # STORE 2ND HALF #
- BIT$POS = 4; # MOVE BIT POSITION #
- VALUE[0] = FV$VAL; # PUT FV VALUE IN TEMPORARY #
- STATE = STATE + 1; # SET TO NEXT STATE #
- GOTO START$STATE;
- EXIT:
- RETURN; # **** RETURN **** #
- END # DEVFNFV #
- CONTROL EJECT;
- PROC FLOWDEV(FDWORD,FDLNUM);
- BEGIN
- *IF,DEF,IMS
- #
- ** FLOWDEV - CHECK FLOW CONTROL PARAMETERS ON DEVICE STMT.
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CHECKS THE PARAMETERS WHICH ARE USED FOR FLOW
- * CONTROL.
- *
- * PROC FLOWDEV(FDWORD,FDLNUM)
- *
- * ENTRY FDWORD = VALUE DECLARATION ENTRY.
- * FDLNUM = CURRENT SOURCE LINE NUMBER.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * SELECT CASE THAT APPLIES,
- * CASE 1(ABL,DBL,UBL,XBZ):
- * IF VALUE IS O.K.,
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * PUT VALUE INTO DEVICE ENTRY.
- * CASE 2(DBZ):
- * IF VALUE IS O.K.
- * IF DT IS BATCH DEVICE,
- * THEN,
- * DIVIDE VALUE BY PRU SIZE.
- * PUT CONVERTED VALUE INTO DEVICE ENTRY.
- * OTHERWISE,
- * PUT VALUE INTO DEVICE ENTRY.
- * CASE 3(UBZ):
- * IF VALUE IS O.K.,
- * IF DT IS CONSOLE,
- * THEN,
- * IF VALUE IS WITHIN 0 AND 2000,
- * THEN,
- * DIVIDE VALUE BY 200.
- * PUT CONVERTED VALUE INTO DEVICE ENTRY.
- * OTHERWISE,
- * FLAG ERROR -- VALUE OUT OF RANGE.
- * OTHERWISE,
- * IF DT IS NOT USER OR UNKNOWN,
- * THEN,
- * IF VALUE IS WITHIN 1 AND 2043,
- * THEN,
- * DIVIDE VALUE BY PRU SIZE.
- * PUT CONVERTED VALUE INTO DEVICE ENTRY.
- * OTHERWISE,
- * FLAG ERROR -- VALUE OUT OF RANGE.
- * OTHERWISE,
- * IF VALUE IS LESS THAN 256,
- * PUT VALUE INTO DEVICE ENTRY.
- *
- #
- *ENDIF
- ARRAY FDWORD [0:0] S(1); # VALUE DECLARATION ENTRY #
- BEGIN
- ITEM FDKWID U(0,0,9); # KEYWORD I.D. #
- ITEM FDVLERR B(0,17,1); # VALUE ERROR FLAG #
- ITEM FDNAME C(0,18,7); # CHARACTER STRING VALUE #
- ITEM FDVAL U(0,18,42); # INTEGER VALUE #
- END
- ITEM FDLNUM; # STATEMENT SOURCE LINE NUMBER #
- #
- **** PROC FLOWDEV - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLCKRG; # CHECK IF VALUE IS WITHIN RANGE #
- PROC NDLEM2; # MAKE ENTRY IN PASS 2 ERROR FILE #
- FUNC XCDD C(10); # CONVERTS INTEGER TO DECIMAL DISPLAY CODE#
- FUNC XCHD C(10); # CONERTS INTEGER TO HEX DISPLAY CODE #
- END
- #
- ****
- #
- DEF CONVERT1 # 3 #; # SWITCH VALUE -- CONVERT AND ENTER 1 FNFV#
- DEF CONVERT2 # 4 #; # SWITCH VALUE -- CONVERT AND ENTER 2 FNFV#
- DEF DIRECT1 # 1 #; # SWITCH VALUE -- DIRECT ENTRY WITH 1 FNFV#
- DEF DIRECT2 # 2 #; # SWITCH VALUE -- DIRECT ENTRY WITH 2 FNFV#
- DEF $NEXT # 0 #; # SWITCH VALUE -- GOTO NEXT VALUE-DEC #
- DEF MAX$PRU # 1920 #; # NUMBER OF CHARACTERS IN THREE PRU-S #
- DEF MAX$UBZ$CON # 1950 #; # MAX CHAR COUNT FOR UBZ CONSOLE#
- ITEM CTEMP C(10); # CHARACTER TEMPORARY #
- ITEM FDSTAT B; # STATUS RETURNED BY NDLCKRG #
- ITEM I; # SCRATCH ITEM #
- ITEM ITEMP; # INTEGER TEMPORARY -- FOR STORING WC #
- ITEM JMP$INDX; # JUMP INDEX FOR SWITCH #
- ITEM MAX$SZ; # MAXIMUM SIZE FOR VALUE #
- ITEM MULTIPLE; # MULTIPLE BY WHICH TO CALCULATE NEW VALUE#
- ITEM VALUE; # INTEGER VALUE TEMPORARY #
- ITEM VALUE2; # INTEGER VALUE TEMPORARY #
- ARRAY ERROR$WORD [0:0] S(1); # BUFFER WORD FOR ERROR MSG #
- BEGIN
- ITEM PARAM C(0,0,4) = [" "]; # PARAMETER #
- ITEM SLASH C(0,24,1) = ["/"];
- ITEM PVALUE C(0,30,5) = [" "]; # VALUE #
- END
- DEF MNFLW # 68 #;
- DEF MXFLW # 73 #;
- ARRAY FN$TABLE [MNFLW:MXFLW] S(1);
- BEGIN
- ITEM FD$FN (0,0,60) = [FN"ABL", # ABL -- FIELD NUMBER #
- FN"DBZ$MSB", # DBZ(MSB) #
- FN"UBZ", # UBZ #
- FN"DBL", # DBL #
- FN"UBL", # UBL #
- FN"XBZ$MSB", # XBZ(MSB) #
- ];
- END
- SWITCH CHKJUMP NEXT, # GO TO NEXT PARAMETER(EXIT) #
- D$ENTRY1, # MAKE DIRECT ENTRY W/O CONVERT #
- D$ENTRY2, # MAKE DIRECT ENTRY WITH 2 FNFV #
- C$ENTRY1, # CONVERT VALUE -- ENTRY 1 FNFV #
- C$ENTRY2; # CONVERT VALUE -- ENTRY 2 FNFV #
- SWITCH FLOWJUMP , , # UNK , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- , , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , , # AUTO , SL ,#
- , , # LSPEED , DFL ,#
- , , # FRAME , RTIME ,#
- , , # RCOUNT , NSVC ,#
- , , # PSN , DCE ,#
- , , # DTEA , ,#
- , , # , ,#
- , , # , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- , , # , DT ,#
- , , # SDT , TA ,#
- $ABL , $DBZ , # ABL , DBZ ,#
- $UBZ , $DBL , # UBZ , DBL ,#
- $UBL , $XBZ , # UBL , XBZ ,#
- , , # DO , STREAM ,#
- , , # HN , AUTOLOG ,#
- , , # AUTOCON , PRI ,#
- , , # P90 , P91 ,#
- , , # P92 , P93 ,#
- , , # P94 , P95 ,#
- , , # P96 , P97 ,#
- , , # P98 , P99 ,#
- , , # AB , BR ,#
- , , # BS , B1 ,#
- , , # B2 , CI ,#
- , , # CN , CT ,#
- , , # DLC , DLTO ,#
- , , # DLX , EP ,#
- , , # IN , LI ,#
- , , # OP , PA ,#
- , , # PG , PL ,#
- , ; # PW , SE #
- CONTROL EJECT;
- # #
- # FLOWDEV CODE BEGINS HERE #
- # #
- JMP$INDX = $NEXT; # SET JUMP FOR SWITCH TO -NEXT- #
- GOTO FLOWJUMP[FDKWID[0]]; # GOTO APPROPRIATE PARAGRAPH #
- $ABL:
- ABL$USED = TRUE; # SET ABL SPECIFIED FLAG #
- IF NOT FDVLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- JMP$INDX = DIRECT1; # SET JUMP FOR DIRECT ENTRY #
- END
- GOTO CHECK;
- $DBL:
- DBL$USED = TRUE; # SET DBL SPECIFIED FLAG #
- IF NOT FDVLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- JMP$INDX = DIRECT1; # SET JUMP FOR DIRECT ENTRY #
- END
- GOTO CHECK;
- $DBZ:
- DBZ$USED = TRUE; # SET DBZ SPECIFIED FLAG #
- IF NOT FDVLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF CRNT$DT EQ DT"CON" OR # IF DT IS CONSOLE, USER, OR #
- CRNT$DT EQ DT"USER" OR # UNKNOWN #
- CRNT$DT EQ DT"UNKNOWN"
- OR CRNT$TIP EQ TIP"USER" # USER DEFINED TIPTYPES #
- THEN
- BEGIN # SET JUMP TO MAKE DIRECT ENTRY #
- JMP$INDX = DIRECT2;
- END
- ELSE # DT MUST BE A PASSIVE DEVICE #
- BEGIN
- MULTIPLE = PRU$SZ; # SET MULTIPLE TO PRU SIZE #
- MAX$SZ = MAX$PRU; # SET MAXIMUM SIZE FOR VALUE #
- JMP$INDX = CONVERT2; # SET JUMP TO CONVERT DBZ VALUE #
- END
- END
- GOTO CHECK;
- $UBL:
- UBL$USED = TRUE; # SET UBL SPECIFIED FLAG #
- IF NOT FDVLERR[0] # VALUE IS O.K. #
- THEN
- BEGIN
- JMP$INDX = DIRECT1; # SET JUMP TO MAKE DIRECT ENTRY #
- END
- GOTO CHECK;
- $UBZ:
- UBZ$USED = TRUE; # SET UBZ SPECIFIED FLAG #
- IF NOT FDVLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF CRNT$DT EQ DT"CON" # IF DT IS A CONSOLE #
- AND CRNT$TIP NQ TIP"USER" # AND TIPTYPE NOT USER DEFINED #
- THEN
- BEGIN
- IF FDVAL[0] LS 0 OR
- FDVAL[0] GR 2000 # IF VALUE IS OUT OF RANGE #
- THEN
- BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
- CTEMP = XCDD(FDVAL[0]);
- NDLEM2(ERR100,FDLNUM,CTEMP);
- FDSTAT = FALSE; # SET STATUS TO NO GOOD #
- END
- ELSE # VALUE IS WITHIN RANGE #
- BEGIN
- FDSTAT = TRUE; # SET STATUS TO O.K. #
- END
- MULTIPLE = UBZ$CON; # SET MULTIPLE TO UBZ CONSOLE #
- MAX$SZ = MAX$UBZ$CON; # SET MAXIMUM SIZE TO UBZ CON #
- JMP$INDX = CONVERT1; # SET JUMP TO CONVERT UBZ VALUE #
- END
- ELSE # DT IS NOT A CONSOLE #
- BEGIN
- IF CRNT$DT NQ DT"USER" AND # IF DT IS PASSIVE #
- CRNT$DT NQ DT"UNKNOWN"
- AND CRNT$TIP NQ TIP"USER" # AND NOT USER DEFINED TIPTYPE #
- THEN
- BEGIN
- IF FDVAL[0] LS 1 OR
- FDVAL[0] GR 2043 # IF VALUE IS OUT OF RANGE #
- THEN
- BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
- CTEMP = XCDD(FDVAL[0]);
- NDLEM2(ERR100,FDLNUM,CTEMP);
- FDSTAT = FALSE; # SET STATUS TO NO GOOD #
- END
- ELSE # VALUE IS WITHIN RANGE #
- BEGIN
- FDSTAT = TRUE; # SET STATUS TO O.K. #
- END
- MULTIPLE = PRU$SZ; # SET MULTIPLE TO PRU SIZE #
- MAX$SZ = MAX$PRU; # SET MAXIMUM SIZE IS CHARACTERS#
- JMP$INDX = CONVERT1; # SET JUMP TO CONVERT UBZ VALUE #
- END
- ELSE # DT MUST BE USER OR UNKNOWN #
- BEGIN
- IF FDVAL[0] LS 256 # VALUE MUST BE LESS THAN 256 #
- THEN
- BEGIN
- JMP$INDX = DIRECT1; # SET JUMP TO MAKE DIRECT ENTRY #
- END
- ELSE # VALUE IS TOO BIG #
- BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
- CTEMP = XCDD(FDVAL[0]);
- NDLEM2(ERR100,FDLNUM,CTEMP);
- END
- END
- END
- END
- GOTO CHECK;
- $XBZ:
- XBZ$USED = TRUE; # SET XBZ SPECIFIED FLAG #
- IF NOT FDVLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- JMP$INDX = DIRECT2; # SET JUMP TO MAKE DIRECT ENTRY #
- END
- GOTO CHECK;
- # #
- CHECK:
- GOTO CHKJUMP[JMP$INDX]; # JUMP TO TYPE OF ENTRY #
- D$ENTRY1: # SPECIFIED ABOVE #
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(FDVAL[0],USR$WID1,NUM"DEC",FDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(FDKWID[0],FDVAL[0],FDSTAT); # CHECK FOR NORMAL RANGE #
- END
- IF FDSTAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(FD$FN[FDKWID[0]],FDVAL[0]);
- END
- GOTO NEXT$FLW;
- D$ENTRY2:
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(FDVAL[0],USR$WID2,NUM"DEC",FDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(FDKWID[0],FDVAL[0],FDSTAT); # CHECK FOR NORMAL RANGE #
- END
- IF FDSTAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY FOR #
- VALUE = FDVAL[0];
- VALUE2 = B<44,8>VALUE; # MSB OF VALUE #
- DEVFNFV(FD$FN[FDKWID[0]],VALUE2);
- VALUE2 = B<52,8>VALUE; # LSB OF VALUE #
- DEVFNFV(FD$FN[FDKWID[0]]+1,VALUE2);
- END
- GOTO NEXT$FLW;
- C$ENTRY1:
- IF FDSTAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN
- IF FDVAL[0] LQ MAX$SZ # IF VALUE IS NOT GREATER THAN #
- THEN # MAXIMUM SIZE #
- BEGIN
- VALUE = FDVAL[0]; # SET VALUE TO BE CONVERTED TO #
- END # VALUE SPECIFIED #
- ELSE # VALUE IS GREATER THAN MAXIMUM #
- BEGIN
- VALUE = MAX$SZ; # SET VALUE TO BE CONVERTED TO #
- END # MAXIMUM SIZE #
- VALUE2 = 0;
- FOR I=VALUE STEP -MULTIPLE WHILE I GR 0
- DO # CONVERT VALUE #
- BEGIN
- VALUE2 = VALUE2 + 1;
- END # MAKE FNFV PAIR ENTRY #
- DEVFNFV(FD$FN[FDKWID[0]],VALUE2);
- GOTO CHK$WARN;
- END
- ELSE # VALUE NOT IN RANGE #
- BEGIN
- GOTO NEXT$FLW;
- END
- C$ENTRY2:
- NDLCKRG(FDKWID[0],FDVAL[0],FDSTAT);
- IF FDSTAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN
- IF FDVAL[0] LQ MAX$SZ # IF VALUE IS NOT GREATER THAN #
- THEN # MAXIMUM SIZE #
- BEGIN
- VALUE = FDVAL[0]; # SET VALUE TO BE CONVERTED TO #
- END # VALUE SPECIFIED #
- ELSE # VALUE IS GREATER THAN MAXIMUM #
- BEGIN
- VALUE = MAX$SZ; # SET VALUE TO BE CONVERTED TO #
- END # MAXIMUM SIZE #
- VALUE2 = 0;
- FOR I=VALUE STEP -MULTIPLE WHILE I GR 0
- DO # CONVERT VALUE #
- BEGIN
- VALUE2 = VALUE2 + 1;
- END # MAKE FNFV PAIR ENTRIES FOR #
- VALUE = B<44,8>VALUE2; # MSB OF CONVERTED VALUE #
- DEVFNFV(FD$FN[FDKWID[0]],VALUE);
- VALUE = B<52,8>VALUE2; # LSB OF CONVERTED VALUE #
- DEVFNFV(FD$FN[FDKWID[0]]+1,VALUE);
- GOTO CHK$WARN;
- END
- ELSE # VALUE NOT IN RANGE #
- BEGIN
- GOTO NEXT$FLW;
- END
- CHK$WARN:
- IF FDVAL[0] NQ (MULTIPLE * VALUE2)
- THEN # IF VALUE IS NOT A MULTIPLE #
- BEGIN # FLAG WARNING -- VALUE WAS ROUNDED #
- PARAM[0] = KWDNAME[FDKWID[0]]; # PUT PARAMETER NAME AND #
- CTEMP = XCDD(MULTIPLE * VALUE2);
- PVALUE[0] = C<5,5>CTEMP; # VALUE IN ERROR FILE #
- NDLEM2(ERR137,FDLNUM,ERROR$WORD);
- END
- NEXT$FLW:
- RETURN; # **** RETURN **** #
- END # FLOWDEV #
- CONTROL EJECT;
- PROC GENDEV(GDWORD,GDLNUM);
- BEGIN
- *IF,DEF,IMS
- #
- ** GENDEV - CHECKS GENERAL PARAMETERS ON THE DEVICE STMT.
- *
- * D.K. ENDO 81/11/20
- *
- * THE PROCEDURE DOES CHECKING OF PARAMETER THAT ARE COMMON TO ALL
- * TIPTYPES.
- *
- * PROC GENDEV(GDWORD,GDLNUM)
- *
- * ENTRY GDWORD = VALUE DECLARATION ENTRY.
- * GDLNUM = CURRENT SOURCE LINE NUMBER.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * IF VALUE IS O.K.,
- * SELECT CASE THAT APPLIES,
- * CASE 1(P90,P91,...,P99):
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * PUT VALUE INTO DEVICE ENTRY.
- * CASE 2(PRI,DI):
- * IF VALUE IS -YES-,
- * PUT VALUE INTO DEVICE ENTRY.
- * CASE 3(PW):
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE
- * PUT VALUE INTO DEVICE ENTRY.
- * CASE 4(MC):
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * PUT VALUE INTO DEVICE ENTRY.
- *
- #
- *ENDIF
- DEF HEX$00 # X"00" #; # VALUE HEX 00 #
- DEF HEX$03 # X"03" #; # VALUE HEX 03 #
- DEF HEX$1F # X"1F" #; # VALUE HEX 1F #
- DEF HEX$21 # X"21" #; # VALUE HEX 21 #
- DEF HEX$2F # X"2F" #; # VALUE HEX 2F #
- DEF HEX$3A # X"3A" #; # VALUE HEX 3A #
- DEF HEX$3C # X"3C" #; # VALUE HEX 3C #
- DEF HEX$3E # X"3E" #; # VALUE HEX 3E #
- DEF HEX$40 # X"40" #; # VALUE HEX 40 #
- DEF HEX$5B # X"5B" #; # VALUE HEX 5B #
- DEF HEX$60 # X"60" #; # VALUE HEX 60 #
- DEF HEX$7B # X"7B" #; # VALUE HEX 7B #
- DEF HEX$7E # X"7E" #; # VALUE HEX 7E #
- ARRAY GDWORD [0:0] S(1); # VALUE DECLARATION ENTRY #
- BEGIN
- ITEM GDKWID U(0,0,9); # KEYWORD I.D. #
- ITEM GDVLERR B(0,17,1); # VALUE ERROR FLAG #
- ITEM GDVAL (0,18,42); # INTEGER VALUE #
- ITEM GDNAME C(0,18,7); # CHARACTER VALUE #
- END
- ITEM GDLNUM; # STATEMENT LINE NUMBER #
- #
- **** PROC GENDEV - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLCKRG; # CHECKS IF VALUE IS WITHIN RANGE #
- FUNC XCDD C(10); # FUNCTION TO CONVERT BINARY TO DISPLAY #
- END
- #
- ****
- #
- ITEM GDSTAT B; # RETURNED STATUS FROM NDLCKRG #
- ITEM ITEMP; # INTEGER TEMPORARY #
- SWITCH GENDJUMP , , # UNK , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , $DI , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- , , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , , # AUTO , SL ,#
- , , # LSPEED , DFL ,#
- , , # FRAME , RTIME ,#
- , , # RCOUNT , NSVC ,#
- , , # PSN , DCE ,#
- , , # , ,#
- , , # DTEA , ,#
- , , # , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- , , # , DT ,#
- , , # SDT , TA ,#
- , , # ABL , DBZ ,#
- , , # UBZ , DBL ,#
- , , # UBL , XBZ ,#
- , , # DO , STREAM ,#
- , , # HN , AUTOLOG ,#
- , PRI , # AUTOCON , PRI ,#
- USR$PARAM , USR$PARAM , # P90 , P91 ,#
- USR$PARAM , USR$PARAM , # P92 , P93 ,#
- USR$PARAM , USR$PARAM , # P94 , P95 ,#
- USR$PARAM , USR$PARAM , # P96 , P97 ,#
- USR$PARAM , USR$PARAM , # P98 , P99 ,#
- , , # AB , BR ,#
- , , # BS , B1 ,#
- , , # B2 , CI ,#
- , , # CN , CT ,#
- , , # DLC , DLTO ,#
- , , # DLX , EP ,#
- , , # IN , LI ,#
- , , # OP , PA ,#
- , , # PG , PL ,#
- PW , , # PW , SE #
- , , # FA , XLC ,#
- , , # XLX , XLTO ,#
- , , # ELO , ELX ,#
- , , # ELR , EBO ,#
- , , # EBR , CP ,#
- , , # IC , OC ,#
- , , # LK , EBX ,#
- , MC , # , MC #
- , , # XLY , EOF ,#
- , , # PAD , RTS ,#
- MCI , MLI ; # MCI , MLI #
- CONTROL EJECT;
- # #
- # GENDEV CODE BEGINS HERE #
- # #
- IF NOT GDVLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- GOTO GENDJUMP[GDKWID[0]];
- USR$PARAM: # CHECK RANGE OF USER PRARMETER #
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(GDVAL[0],USR$WID1,NUM"HEX",GDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(GDKWID[0],GDVAL[0],GDSTAT); # CHECK FOR NORMAL RANGE#
- END
- IF GDSTAT # IF WITHIN RANGE #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(GDKWID[0]+10,GDVAL[0]);
- END
- GOTO NEXT$GEN;
- PRI:
- IF GDNAME[0] EQ "YES" # IF VALUE IS -YES- #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(FN"PRI",TRUE);
- END
- GOTO NEXT$GEN;
- $DI:
- IF GDNAME[0] EQ "YES" # IF VALUE IS -YES- #
- THEN
- BEGIN
- DEST[CRNT$DEV + 2] = TRUE; # SET STATUS FLAG IN ENTRY #
- END
- GOTO NEXT$GEN;
- PW:
- IF GDNAME[0] NQ "CCP" # IF VALUE IS NOT -CCP- #
- THEN
- BEGIN # CHECK RAMGE FOR PW VALUE #
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(GDVAL[0],USR$WID1,NUM"DEC",GDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(GDKWID[0],GDVAL[0],GDSTAT); # CHECK FOR NORMAL #
- # RANGE #
- IF GDSTAT # IF CHECK STATUS IS O.K. #
- THEN
- BEGIN
- IF CRNT$TC EQ TC"$3780" OR # FURTHER CHECK FOR 3780 #
- CRNT$TC EQ TC"$2780" # OR 2780 #
- THEN
- BEGIN
- IF CRNT$DT EQ DT"LP" # IF LINEPRINTER #
- THEN
- BEGIN
- IF GDVAL[0] LS MPW$2780$LP OR
- GDVAL[0] GR MXPW$2780$LP
- THEN
- BEGIN
- NDLEM2(ERR100,STLNUM[0], XCDD(GDVAL[0]));
- GDSTAT = FALSE;
- END
- END
- END
- END
- END
- IF GDSTAT # IF WITHIN RANGE #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(FN"PW",GDVAL[0]);
- END
- END
- GOTO NEXT$GEN;
- MCI:
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(GDVAL[0],USR$WID1,NUM"DEC",GDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(GDKWID[0],GDVAL[0],GDSTAT); # CHECK FOR NORMAL RANGE#
- END
- IF GDSTAT # IF WITHIN RANGE #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(FN"MCI",GDVAL[0]);
- END
- GOTO NEXT$GEN;
- MLI:
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(GDVAL[0],USR$WID1,NUM"DEC",GDSTAT);
- END
- ELSE
- BEGIN
- NDLCKRG(GDKWID[0],GDVAL[0],GDSTAT); # CHECK FOR NORMAL RANGE#
- END
- IF GDSTAT # IF WITHIN RANGE #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(FN"MLI",GDVAL[0]);
- END
- GOTO NEXT$GEN;
- MC:
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYE IS USER #
- THEN
- BEGIN
- USR$RANGE(GDVAL[0],USR$WID1,NUM"HEX",GDSTAT);
- END
- ELSE # IF OTHER TIPTYPE #
- BEGIN
- GDSTAT = TRUE; # PRSET GDSATT TO TRUE #
- IF NOT ((GDVAL[0] EQ HEX$00) OR
- (GDVAL[0] GQ HEX$03 AND GDVAL[0] LQ HEX$1F) OR
- (GDVAL[0] GQ HEX$21 AND GDVAL[0] LQ HEX$2F) OR
- (GDVAL[0] GQ HEX$3A AND GDVAL[0] LQ HEX$3C) OR
- (GDVAL[0] GQ HEX$3E AND GDVAL[0] LQ HEX$40) OR
- (GDVAL[0] GQ HEX$5B AND GDVAL[0] LQ HEX$60) OR
- (GDVAL[0] GQ HEX$7B AND GDVAL[0] LQ HEX$7E)
- )
- THEN
- BEGIN
- GDSTAT = FALSE; # SET GDSTAT FLAG TO FALSE #
- NDLEM2(ERR100,STLNUM[0],XCHD(GDVAL[0])); # PASS ERROR #
- END
- END
- IF GDSTAT # IF STATUS IS O.K. #
- THEN
- BEGIN # PUT VALUE IN DEVICE ENTRY #
- DEVFNFV(FN"MC",GDVAL[0]);
- END
- GOTO NEXT$GEN;
- NEXT$GEN:
- END
- RETURN; # **** RETURN **** #
- END # GENDEV #
- CONTROL EJECT;
- PROC HSPDEV;
- BEGIN
- *IF,DEF,IMS
- #
- ** HSPDEV - CHECK DEVICE STATEMENT FOR PARAMETERS LEGAL FOR HASP TIP.
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CHECKS PARAMETER TO BE VALID FOR HASP DEVICES.
- *
- * PROC HSPDEV
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION,
- * SELECT CASE THAT APPLIES,
- * CASE 1(DI,PRI,PW,P90,P91,...,P99):
- * CHECK GENERAL DEVICE PARAMETER.
- * CASE 2(UBZ,DBL,XBZ):
- * CHECK FLOW CONTROL PARAMETER.
- * CASE 3(HN,AUTOLOG,AUTOCON,B1,B2,CN,CT,PG,PL):
- * IF DT IS CONSOLE,
- * THEN,
- * CHECK CONSOLE PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- PARAMETER INVALID WITH DT SPECIFIED.
- * CASE 4(SDT):
- * IF DT IS NOT CONSOLE OR CARD PUNCH
- * OR SDT VALUE IS SDT12, SDT13, SDT14 OR SDT15,
- * THEN,
- * CHECK BATCH DEVICE PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- PARAMETER INVALID WITH DT SPECIFIED.
- * CASE 5(DO,STREAM):
- * IF DT IS NOT CONSOLE,
- * THEN,
- * CHECK BATCH DEVICE PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- PARAMETER NOT ALLOWED WITH DT SPECIFIED.
- * CASE 6(TA,AL,BR,BS,CI,DLC,DLTO,DLX,EP,IN,LI,OP,PA,SE,XLY):
- * FLAG ERROR -- PARAMETER NOT ALLOWED.
- * CASE 7(ABL):
- * IF DT IS CONSOLE,
- * THEN,
- * CHECK FLOW CONTROL PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- PARAMETER NOT ALLOWED WITH DT SPECIFIED.
- * CASE 8(DBZ):
- * IF DT IS NOT CARD READER,
- * THEN,
- * CHECK FLOW CONTROL PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- PARAMETER NOT ALLOWED WITH DT SPECIFIED.
- * CASE 9(UBL):
- * IF DT IS NOT CONSOLE AND WITHIN RANGE 1-7
- * THEN,
- * CHECK FLOW CONTROL PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- PARAMETER NOT ALLOWED WITH DT SPECIFIED.
- * IF DT IS CONSOLE,
- * THEN,
- * IF ABL WAS NOT SPECIFIED,
- * DEFAULT ABL VALUE INTO DEVICE ENTRY.
- * OTHERWISE,
- * IF DO WAS NOT SPECIFIED,
- * IF THIS IS FIRST DEVICE FOR THIS DT
- * THEN,
- * DEFAULT DO VALUE BY ONE.
- * SET BIT IN BIT MAP FOR DO VALUE.
- * OTHERWISE,
- * FLAG ERROR -- REQUIRED PARAMETER MISSING.
- * IF STREAM WAS NOT SPECIFIED AND LINE IS NOT AUTO-REC,
- * FLAG ERROR -- REQUIRED PARAMETER MISSING.
- * IF DBL,UBZ WAS NOT SPECIFIED,
- * DEFAULT VALUE BY DT.
- * IF UBL WAS NOT SPECIFIED AND DT IS CONSOLE OR CARD READER,
- * DEFAULT UBL VALUE BY DT.
- * IF DBZ WAS NOT SPECIFIED AND DT IS NOT CARD READER,
- * DEFAULT DBZ VALUE BY DT.
- * IF XBZ WAS NOT SPECIFIED,
- * DEFAULT XBZ VALUE INTO DEVICE ENTRY.
- * CHECK IS B1,B2,CN,CT ARE UNIQUE,
- * IF NOT UNIQUE,
- * FLAG ERROR -- B1,B2,CN,CT MUST BE UNIQUE.
- *
- #
- *ENDIF
- #
- **** PROC HSPDEV - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- FUNC XCDD C(10); # CONVERTS INTEGER TO CHARACTER #
- END
- #
- ****
- #
- DEF ABL$DEF # 2 #; # DEFAULT ABL VALUE #
- DEF B1$DEF # X"3A" #; # DEFAULT B1 VALUE #
- DEF B2$DEF # X"29" #; # DEFAULT B2 VALUE #
- DEF CN$DEF # X"28" #; # DEFAULT CN VALUE #
- DEF CT$DEF # X"25" #; # DEFAULT CT VALUE #
- DEF DO$DEF # 1 #; # DEFAULT -DO- VALUE #
- DEF STRM$DEF # 1 #; # DEFAULT STREAM VALUE #
- DEF UBL$DEF # 7 #; # DEFAULT UBL VALUE #
- DEF XBZ$DEF # 400 #; # DEFAULT XBZ VALUE #
- DEF PL$DEF # 64 #; # DEFAULT PAGE LENGTH VALUE #
- ITEM CHARVAL C(10); # SCRATCH CHARACTER VARIABLE #
- ITEM I; # SCRATCH ITEM #
- ITEM ITEMP; # INTEGER TEMPORARY #
- ITEM J; # SCRATCH ITEM #
- ITEM VALUE; # INTEGER VALUE TEMPORARY #
- DEF MXDT # 5 #;
- ARRAY FC$DEF$TABLE [1:MXDT] S(2);
- BEGIN
- ITEM DBL$DEF (0,0,30) = [2, # CONSOLE -- DBL DEFAULT #
- 2, # CARD READER #
- 1, # LINE PRINTER #
- 1, # CARD PUNCH #
- 1, # PLOTTER #
- ];
- ITEM DBZ$DEF (0,30,30) = [400, # CONSOLE -- DEFAULT DBZ #
- 0, # CARD READER (N/A) #
- 1, # LINE PRINTER #
- 1, # CARD PUNCH #
- 1, # PLOTTER #
- ];
- ITEM UBZ$DEF (1,30,30) = [1, # CONSOLE -- UBZ DEFAULT #
- 1, # CARD READER #
- 2, # LINE PRINTER #
- 2, # CARD PUNCH #
- 2 # PLOTTER #
- ];
- END
- SWITCH HSPDJUMP , , # UNK , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , GEN$PARAM , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- , , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , , # AUTO , SL ,#
- , , # LSPEED , DFL ,#
- , , # FRAME , RTIME ,#
- , , # RCOUNT , NSVC ,#
- , , # PSN , DCE ,#
- , , # DTEA , ,#
- , , # , ,#
- , , # , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- , NEXT$HSP , # , DT ,#
- SDT , ILLEGAL , # SDT , TA ,#
- ABL , DBZ , # ABL , DBZ ,#
- UBZ$UBL , FLOW$PARAM , # UBZ , DBL ,#
- UBZ$UBL , FLOW$PARAM , # UBL , XBZ ,#
- ORDINAL , ORDINAL , # DO , STREAM ,#
- CON$PARAM , , # HN , AUTOLOG ,#
- CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
- GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
- GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
- GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
- GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
- GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
- ILLEGAL , ILLEGAL , # AB , BR ,#
- ILLEGAL , CON$PARAM , # BS , B1 ,#
- CON$PARAM , ILLEGAL , # B2 , CI ,#
- CON$PARAM , CON$PARAM , # CN , CT ,#
- ILLEGAL , ILLEGAL , # DLC , DLTO ,#
- ILLEGAL , ILLEGAL , # DLX , EP ,#
- ILLEGAL , ILLEGAL , # IN , LI ,#
- ILLEGAL , ILLEGAL , # OP , PA ,#
- CON$PARAM , PL$PARAM , # PG , PL ,#
- GEN$PARAM , ILLEGAL , # PW , SE ,#
- ILLEGAL , ILLEGAL , # FA , XLC ,#
- ILLEGAL , ILLEGAL , # XLX , XLTO ,#
- ILLEGAL , ILLEGAL , # ELO , ELX ,#
- ILLEGAL , ILLEGAL , # ELR , EBO ,#
- ILLEGAL , ILLEGAL , # EBR , CP ,#
- ILLEGAL , ILLEGAL , # IC , OC ,#
- CON$PARAM , ILLEGAL , # LK , EBX ,#
- CON$PARAM , GEN$PARAM , # HD , MC ,#
- ILLEGAL , , # XLY , EOF ,#
- , ILLEGAL , # PAD , RTS #
- ILLEGAL , ILLEGAL ; # MCI , MLI ,#
- CONTROL EJECT;
- # #
- # HSPDEV CODE BEGINS HERE #
- # #
- CRNT$CC[CC"CN"] = CN$DEF; # CN -- DEFAULT CONTROL CHAR #
- CRNT$CC[CC"B1"] = B1$DEF; # B1 #
- CRNT$CC[CC"B2"] = B2$DEF; # B2 #
- CRNT$CC[CC"CT"] = CT$DEF; # CT #
- FOR I=3 STEP 1 UNTIL STWC[0]
- DO # FOR EACH VALUE-DECLARATION ENTRY #
- BEGIN
- GOTO HSPDJUMP[STKWID[I]]; # GOTO APPROPRIATE PARAGRAPH #
- GEN$PARAM:
- GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETER #
- TEST I;
- FLOW$PARAM:
- FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETER #
- TEST I;
- CON$PARAM:
- IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
- THEN
- BEGIN
- CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
- END
- ELSE # DT IS NOT CONSOLE #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- PL$PARAM:
- IF CRNT$DT EQ DT"CON" OR # IF DT IS CONSOLE #
- CRNT$DT EQ DT"LP" # OF DT IS LINEPRINTER #
- THEN
- BEGIN
- CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
- END
- ELSE # DT IS NOT CONSOLE #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- SDT:
- IF(CRNT$DT NQ DT"CON" AND # IF DT IS NOT CON OR CP #
- CRNT$DT NQ DT"CP" ) OR
- ( STVALNAM[I] EQ "SDT12" OR # IF SDT12 - SDT15 USED #
- STVALNAM[I] EQ "SDT13" OR
- STVALNAM[I] EQ "SDT14" OR
- STVALNAM[I] EQ "SDT15"
- )
- THEN
- BEGIN # CHECK BATCH DEVICE #
- BTCHDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS CONSOLE OR CARD PUNCH #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- ORDINAL:
- IF CRNT$DT NQ DT"CON" # IF DT IS NOT CONSOLE #
- THEN
- BEGIN # CHECK BATCH PARAMETER #
- BTCHDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS CONSOLE #
- BEGIN
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- ILLEGAL: # ALL OTHER PARAMETERS FLAG AS INVALID #
- IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
- THEN
- BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
- NDLEM2(ERR135,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
- BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
- NDLEM2(ERR106,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- ABL:
- IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
- THEN
- BEGIN # CHECK FLOW CONTROL PARAMETER #
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS NOT CONSOLE #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- DBZ:
- IF CRNT$DT NQ DT"CR" # IF DT IS NOT CARD READER #
- THEN
- BEGIN # CHECK FLOW CONTROL PARAMETER #
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS CARD READER #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- UBZ$UBL: # IF DT IS CONSOLE, CARD READER, LINE #
- # PRINTER, CARD PUNCH, OR PLOTTER #
- IF CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"CR" OR
- CRNT$DT EQ DT"LP" OR CRNT$DT EQ DT"CP" OR
- CRNT$DT EQ DT"PL"
- THEN
- BEGIN
- IF STKWID[I] EQ KID"UBZ" # IF UBZ PARAMETER #
- THEN
- BEGIN
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE
- BEGIN # ELSE, UBL PARAMETER #
- IF CRNT$DT EQ DT"CON"
- THEN
- BEGIN # CONSOLE DEVICES 1 <= UBL <=31#
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE
- BEGIN # PASSIVE DEVICE UBL #
- IF (STVALNUM[I] GQ 1 AND STVALNUM[I] LQ 7)
- THEN # 1<= UBL <= 7 #
- BEGIN
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE
- BEGIN
- CHARVAL=XCDD(STVALNUM[I]);
- NDLEM2(ERR100,STLNUM[0],CHARVAL);
- END
- END
- END
- END
- ELSE
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- NEXT$HSP:
- END
- IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
- THEN
- BEGIN
- IF NOT AUTO$REC
- THEN # IF THIS IS NOT ON AN AUTO-REC LINE #
- BEGIN
- DEA2[CRNT$DEV + 2] = STRM$DEF; # DEFAULT STREAM VALUE FOR CON#
- END
- IF NOT ABL$USED # IF ABL NOT SPECIFIED #
- THEN
- BEGIN
- DEVFNFV(FN"ABL",ABL$DEF);
- END
- END
- ELSE # DT IS PASSIVE DEVICE #
- BEGIN
- IF NOT DO$USED # IF -DO- NOT SPECIFIED #
- THEN
- BEGIN
- IF FIRST$DT[CRNT$DT] # IF FIRST DEVICE FOR THIS DT #
- THEN
- BEGIN
- DEVFNFV(FN"DO$",DO$DEF); # PUT DEFAULT DO VALUE FOR DEV #
- FIRST$DT[CRNT$DT] = FALSE; # CLEAR FLAG FOR DT #
- END
- ELSE # NOT FIRST DEVICE FOR THIS DT #
- BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
- NDLEM2(ERR103,STLNUM[0],"DO");
- END
- END
- IF NOT STREAM$USED AND # IF STREAM NOT SPECIFIED #
- NOT AUTO$REC # AND NOT AUTO-REC LINE #
- THEN
- BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
- NDLEM2(ERR103,STLNUM[0],"STREAM");
- END
- END
- IF NOT DBL$USED # IF DBL NOT SPECIFIED #
- THEN
- BEGIN
- DEVFNFV(FN"DBL",DBL$DEF[CRNT$DT]);
- END
- IF NOT UBL$USED # IF UBL NOT SPECIFIED #
- THEN
- BEGIN
- DEVFNFV(FN"UBL",UBL$DEF);
- END
- IF NOT DBZ$USED AND # IF DBZ NOT SPECIFIED AND #
- CRNT$DT NQ DT"CR" # DT IS NOT A CARD READER #
- THEN
- BEGIN
- VALUE = DBZ$DEF[CRNT$DT];
- J = B<44,8>VALUE; # MSB OF DEFAULT DBZ #
- DEVFNFV(FN"DBZ$MSB",J);
- J = B<52,8>VALUE; # LSB OF DEFAULT DBZ #
- DEVFNFV(FN"DBZ$LSB",J);
- END
- IF NOT UBZ$USED AND # IF UBZ NOT SPECIFIED #
- (CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"CR")
- THEN
- BEGIN
- DEVFNFV(FN"UBZ",UBZ$DEF[CRNT$DT]);
- END
- IF NOT XBZ$USED # IF XBZ NOT SPECIFIED #
- THEN
- BEGIN
- VALUE = XBZ$DEF;
- J = B<44,8>VALUE; # MSB OF DEFAULT XBZ #
- DEVFNFV(FN"XBZ$MSB",J);
- J = B<52,8>VALUE; # LSB OF DEFAULT XBZ #
- DEVFNFV(FN"XBZ$LSB",J);
- END
- IF NOT PL$USED AND # IF PL NOT SPECIFIED #
- CRNT$DT EQ DT"LP" # DEVICE IS LINEPRINTER #
- THEN
- BEGIN
- DEVFNFV(FN"PL",PL$DEF);
- END
- FOR I=CC"CN" STEP 1 UNTIL CC"CT" - 1
- DO # CHECK UNIQUENESS OF CHARS #
- BEGIN
- FOR J=I+1 STEP 1 UNTIL CC"CT"
- DO
- BEGIN
- IF CRNT$CC[I] EQ CRNT$CC[J]
- THEN
- BEGIN # FLAG ERROR -- VALUE IS NOT UNIQUE #
- NDLEM2(ERR132,STLNUM[0]," ");
- END
- END
- END
- RETURN; # **** RETURN **** #
- END # HSPDEV #
- CONTROL EJECT;
- PROC MBDEV(MBWORD,MBLNUM);
- BEGIN
- *IF,DEF,IMS
- #
- ** MBDEV - CHECK MODE4/BSC PARAMETER FOR DEVICE STATEMENT.
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CHECKS PARAMETERS THAT ARE COMMON TO MODE4 AND HASP
- * DEVICES.
- *
- * PROC MBDEV(MBWORD,MBLNUM)
- *
- * ENTRY MBWORD = VALUE DECLARATION ENTRY.
- * MBLNUM = CURRENT SOURCE LINE NUMBER.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * IF VALUE IS O.K.
- * IF VALUE IS -AUTOREC-
- * THEN,
- * IF LINE IS NOT AUTO-REC,
- * FLAG ERROR -- VALUE INVALID ON FIXED LINES.
- * OTHERWISE,
- * IF DT IS USER OR UNKNOWN,
- * THEN,
- * PUT VALUE IS DEVICE ENTRY.
- * OTHERWISE,
- * IF TIPTYPE IS BSC,
- * THEN,
- * IF VALUE IS WITHIN RANGE,
- * THEN,
- * PUT VALUE IS DEVICE ENTRY.
- * OTHERWISE,
- * FLAG ERROR -- VALUE OUT OF RANGE.
- * OTHERWISE,
- * IF TIPTYPE IS MODE4,
- * THEN,
- * IF STIP IS M4A,
- * THEN,
- * IF VALUE IS 60 HEX,
- * THEN,
- * PUT VALUE IN DEVICE ENTRY.
- * OTHERWISE,
- * FLAG ERROR -- VALUE OUT OF RANGE.
- * OTHERWISE,
- * IF STIP IS M4C,
- * THEN,
- * IF VALUE IS IN RANGE,
- * THEN,
- * PUT VALUE IN DEVICE ENTRY.
- * IF LINE IS NOT AUTO-REC
- * CHECK IF VALUE IS UNIQUE.
- * IF NOT UNIQUE,
- * FLAG ERROR -- DUPLICATE TA VALUE.
- * OTHERWISE,
- * FLAG ERROR -- VALUE OUT OF RANGE.
- * OTHERWISE,
- * PUT VALUE IN DEVICE ENTRY.
- * OTHERWISE,
- * IF TIPTYPE IS 3270,
- * THEN
- * IF VALUE IS WITHIN RANGE,
- * THEN
- * PUT VALUE IN DEVICE ENTRY.
- * OTHERWISE,
- * PUT VALUE IN DEVICE ENTRY.
- *
- #
- *ENDIF
- ARRAY MBWORD [0:0] S(1); # VALUE DECLARATION ENTRY #
- BEGIN
- ITEM MBKWID U(0,0,9); # KEYWORD I.D. #
- ITEM MBVLERR B(0,17,1); # VALUE ERROR FLAG #
- ITEM MBNAME C(0,18,7); # CHARACTER VALUE #
- ITEM MBVAL (0,18,42); # INTEGER VALUE #
- END
- ITEM MBLNUM; # STATEMENT SOURCE LINE NUMBER #
- #
- **** PROC MBDEV - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- FUNC XCHD C(10); # CONVERTS INTEGER TO HEX DISPLAY CODE #
- END
- #
- ****
- #
- ITEM CTEMP C(10); # CHARACTER TEMPORARY #
- ITEM ITEMP; # INTEGER TEMPORARY #
- CONTROL EJECT;
- # #
- # MBDEV CODE BEGINS HERE #
- # #
- TA$USED = TRUE; # SET TA SPECIFIED FLAG #
- IF NOT MBVLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF MBNAME[0] NQ "AUTOREC" # IF VALUE IS NOT -AUTOREC- #
- THEN
- BEGIN
- IF CRNT$DT NQ DT"USER" AND # IF DT IS NOT USER OR UNKNOWN #
- CRNT$DT NQ DT"UNKNOWN"
- THEN
- BEGIN
- IF CRNT$TIP EQ TIP"BSC" # IF TIPTYPE IS -BSC- #
- THEN
- BEGIN
- IF MBVAL[0] GQ 2 AND # IF TA VALUE IS WITHIN RANGE #
- MBVAL[0] LQ 3
- THEN
- BEGIN # MAKE ENTRY IN LINE RECORD #
- DEA2[CRNT$DEV + 2] = MBVAL[0];
- END
- ELSE # TA VALUE NOT IN RANGE FOR BSC #
- BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
- CTEMP = XCHD(MBVAL[0]);
- NDLEM2(ERR100,MBLNUM,CTEMP);
- END
- END
- ELSE IF CRNT$TIP EQ TIP"MODE4"
- THEN
- BEGIN # IF STIP IS -M4A- #
- IF CRNT$STIP EQ STIP"M4A"
- THEN
- BEGIN # IF TA IS CORRECT VALUE #
- IF MBVAL[0] EQ X"60"
- THEN
- BEGIN # PUT VALUE IN LINE RECORD #
- DEA2[CRNT$DEV + 2] = MBVAL[0];
- END
- ELSE # TA VALUE NOT VALID #
- BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
- CTEMP = XCHD(MBVAL[0]);
- NDLEM2(ERR100,MBLNUM,CTEMP);
- END
- END
- ELSE # STIP IS NOT -M4A- #
- BEGIN # IF STIP IS -M4C- #
- IF CRNT$STIP EQ STIP"M4C"
- THEN
- BEGIN # IF VALUE IS WITHIN RANGE #
- IF MBVAL[0] GQ X"61" AND
- MBVAL[0] LQ X"6F"
- THEN
- BEGIN # PUT VALUE IN LINE RECORD #
- DEA2[CRNT$DEV + 2] = MBVAL[0];
- IF NOT AUTO$REC # IF NOT AUTO-REC LINE #
- THEN # CHECK FOR UNIQUE TA #
- BEGIN
- ITEMP = MBVAL[0] - X"61";
- IF B<ITEMP,1>TA$MAP NQ 1
- THEN
- BEGIN
- B<ITEMP,1>TA$MAP = 1;
- END
- ELSE # TA VALUE NOT UNIQUE #
- BEGIN # FLAG ERROR -- TA NOT UNIQUE #
- NDLEM2(ERR143,MBLNUM," ");
- END
- END
- END
- ELSE # VALUE IS NOT WITHIN RANGE #
- BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
- CTEMP = XCHD(MBVAL[0]);
- NDLEM2(ERR100,MBLNUM,CTEMP);
- END
- END
- ELSE # STIP MUST BE UNKNOWN #
- BEGIN # PUT VALUE IN LINE RECORD #
- DEA2[CRNT$DEV + 2] = MBVAL[0];
- END
- END
- END
- ELSE IF CRNT$TIP EQ TIP"$3270"
- THEN # TIPTYPE IS 3270 #
- BEGIN
- IF MBVAL[0] GQ 0 AND MBVAL[0] LQ X"1F"
- THEN # IF VALUE IS WITHIN RANGE #
- BEGIN
- DEA2[CRNT$DEV+2] = MBVAL[0]; # STORE THE VALUE #
- END
- ELSE # VALUE IS OUT OF RANGE #
- BEGIN
- NDLEM2(ERR100,MBLNUM,XCHD(MBVAL[0]));
- END
- END
- ELSE # TIPTYPE IS USER OR UNKNOWN #
- BEGIN
- DEA2[CRNT$DEV + 2] = MBVAL[0];
- END
- END
- ELSE # DT IS USER OR UNKNOWN #
- BEGIN
- DEA2[CRNT$DEV + 2] = MBVAL[0];
- END
- END
- ELSE # VALUE IS -AUTOREC- #
- BEGIN
- IF NOT AUTO$REC # IF NOT AN AUTO-REC LINE #
- THEN
- BEGIN # FLAG ERROR -- VAL INVALID ON FIXED LINES#
- NDLEM2(ERR113,MBLNUM," ");
- END
- END
- END
- RETURN; # **** RETURN **** #
- END # MBDEV #
- CONTROL EJECT;
- PROC MD4DEV;
- BEGIN
- *IF,DEF,IMS
- #
- ** MD4DEV - CHECK DEVICE STATEMENT PARAMETERS LEGAL FOR MODE4.
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CHECK PARAMETER TO BE ALLOW FOR MODE4 DEVICES.
- *
- * PROC MD4DEV
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION,
- * SELECT CASE THAT APPLIES,
- * CASE 1(PRI,DI,PW,P90,P91,...,P99):
- * CHECK GENERAL PARAMETER.
- * CASE 2(TA):
- * CHECK MODE4/BSC PARAMETER.
- * CASE 3(DBL,XBZ):
- * CHECK FLOW CONTROL PARAMETER.
- * CASE 4(B1,B2,CN,CT,PG,PL,HN,AUTOLOG,AUTOCON):
- * IF DT IS CONSOLE,
- * THEN,
- * CHECK CONSOLE PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- PARAM NOT ALLOWED WITH DT SPECIFIED.
- * CASE 5(SDT):
- * IF DT IS LINEPRINTER OR SDT VALUE SPECIFIED
- * IS SDT12, SDT13, SDT14, SDT15,
- * THEN,
- * CHECK BATCH DEVICE PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- PARAM NOT ALLOWED WITH DT SPECIFIED.
- * CASE 6(DO):
- * IF DT IS LINE PRINTER,
- * THEN,
- * IF STIP IS M4C OR UNKNOWN,
- * THEN,
- * CHECK BATCH DEVICE PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- PARAM INVALID WITH STIP SPECIFIED.
- * OTHERWISE,
- * IF DT IS CARD READER,
- * THEN,
- * FLAG ERROR -- PARAM INVALID WITH M4A DEVICES.
- * OTHERWISE,
- * FLAG ERROR -- PARAM INVALID WITH CONSOLE DEVICES.
- * CASE 7(ABL):
- * IF DT IS CONSOLE,
- * THEN,
- * CHECK FLOW CONTROL PARAMETER
- * OTHERWISE,
- * FLAG ERROR -- INVALID WITH DT SPECIFIED.
- * CASE 8(DBZ):
- * IF DT IS NOT CARD READER,
- * THEN,
- * CHECK FLOW CONTROL PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- INVALID WITH DT SPECIFIED.
- * CASE 9(UBZ):
- * IF DT IS CONSOLE OR CARD READER OR LINEPRINTER,
- * THEN,
- * CHECK FLOW CONTROL PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- INVALID WITH DT SPECIFIED.
- * CASE 10(UBL):
- * IF DT IS NOT CONSOLE AND UBL WITHIN RANGE 1-7,
- * CALL FLOWDEV TO CHECK FLOW CONTROL PARAMETERS.
- * IF DBL NOT SPECIFIED,
- * DEFAULT VALUE BY DEVICE TYPE.
- * IF UBL NOT SPECIFIED,
- * DEFAULT UBL VALUE.
- * IF DT IS CON AND ABL WAS NOT SPECIFIED,
- * DEFAULT ABL VALUE.
- * IF DT IS NOT CARD READER AND DBZ WAS NOT SPECIFIED,
- * IF TC IS NOT USER OR UNKNOWN,
- * THEN,
- * DEFAULT VALUE BY DT AND TC.
- * OTHERWISE,
- * IF STIP IS NOT UNKNOWN,
- * DEFAULT VALUE BY DT AND STIP.
- * IF DT IS NOT LINE PRINTER AND UBZ WAS NOT SPECIFIED,
- * IF TC IS NOT USER OR UNKNOWN,
- * THEN,
- * DEFAULT VALUE BY DT AND TC.
- * OTHERWISE,
- * IF STIP IS NOT UNKNOWN,
- * DEFAULT VALUE BY DT AND STIP.
- * IF XBZ WAS NOT SPECIFIED,
- * IF TC IS NOT USER OR UNKNOWN,
- * THEN
- * DEFAULT VALUE BY DT AND TC.
- * OTHERWISE,
- * IF STIP IS NOT UNKNOWN,
- * DEFAULT VALUE BY DT AND STIP.
- * IF DO WAS NOT SPECIFIED AND DT IS NOT CONSOLE,
- * IF STIP IS M4A OR UNKNOWN,
- * THEN,
- * DEFAULT DO VALUE TO ONE.
- * OTHERWISE,
- * IF THIS DEVICE IS FIRST LINE PRINTER,
- * THEN,
- * DEFAULT DO VALUE TO ONE.
- * OTHERWISE,
- * FLAG ERROR -- REQUIRED PARAMETER MISSING
- * IF TA WAS NOT SPECIFIED AND LINE IS NOT AUTO-REC,
- * FLAG ERROR -- REQUIRED PARAMETER MISSING.
- * CHECK CN,B1,B2,CT TO BE UNIQUE.
- * IF NOT UNIQUE,
- * FLAG ERROR -- CN,B1,B2,CT MUST BE UNIQUE.
- *
- #
- *ENDIF
- #
- **** PROC MD4DEV - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- FUNC XCDD C(10); # CONVERTS INTEGER TO CHARACTER #
- END
- #
- ****
- #
- DEF ABL$DEF # 2 #; # DEFAULT ABL VALUE #
- DEF B1$DEF # X"3A" #; # DEFAULT B1 VALUE #
- DEF B2$DEF # X"29" #; # DEFAULT B2 VALUE #
- DEF CN$DEF # X"28" #; # DEFAULT CN VALUE #
- DEF CT$DEF # X"25" #; # DEFAULT CT VALUE #
- DEF DO$DEF # 1 #; # DEFAULT DO VALUE #
- DEF UBL$DEF # 7 #; # DEFAULT UBL VALUE #
- DEF PL$DEF # 64 #; # DEFAULT PL VALUE #
- ITEM CHARVAL C(10); # SCRATCH CHARACTER VARIABLE #
- ITEM I; # SCRATCH ITEM #
- ITEM ITEMP; # INTEGER TEMPORARY #
- ITEM J; # SCRATCH ITEM #
- ITEM VALUE; # INTEGER VALUE TEMPORARY #
- DEF MXDT # 3 #;
- ARRAY DBL$TABLE [1:MXDT] S(1);
- BEGIN
- ITEM DBL$DEF (0,0,60) = [2, # CONSOLE -- DEFAULT DBL #
- 2, # CARD READER #
- 1 # LINE PRINTER #
- ];
- END
- DEF MXTC # 15 #;
- ARRAY DBZ$TC$TBL [10:MXTC,1:MXDT] S(1);
- BEGIN
- ITEM DBZ$TC$DEF (0,0,60) = [[1040, # 200UT -- CONSOLE #
- 1280, # 714X #
- 1280, # 711 #
- 1280, # 714 #
- 0, # HPRE(N/A) #
- 1040 # 734 #
- ]
- [ 0, # 200UT -- CARD READER(N/A)#
- 0, # 714X(N/A) #
- 0, # 711(N/A) #
- 0, # 714(N/A) #
- 0, # HPRE(N/A) #
- 0 # 734(N/A) #
- ]
- [ 1, # 200UT -- LINE PRINTER #
- 1, # 714X #
- 0, # 711(N/A) #
- 1, # 714 #
- 0, # HPRE(N/A) #
- 1 # 734 #
- ]];
- END
- ARRAY UBZ$TC$TBL [10:MXTC,1:MXDT] S(1);
- BEGIN
- ITEM UBZ$TC$DEF (0,0,60) = [[1, # 200UT -- CONSOLE #
- 1, # 714X #
- 1, # 711 #
- 1, # 714 #
- 0, # HPRE(N/A) #
- 1 # 734 #
- ]
- [1, # 200UT -- CARD READER #
- 0, # 714X(N/A) #
- 0, # 711(N/A) #
- 0, # 714(N/A) #
- 0, # HPRE(N/A) #
- 1 # 734 #
- ]
- [0, # 200UT(N/A) -- LINE PRINTER #
- 0, # 714X(N/A) #
- 0, # 711(N/A) #
- 0, # 714(N/A) #
- 0, # HPRE(N/A) #
- 0 # 734(N/A) #
- ]];
- END
- ARRAY XBZ$TC$TBL [10:MXTC,1:MXDT] S(1);
- BEGIN
- ITEM XBZ$TC$DEF (0,0,60) = [[1040, # 200UT -- CONSOLE #
- 1280, # 714X #
- 1280, # 711 #
- 1280, # 714 #
- 0, # HPRE(N/A) #
- 1040 # 734 #
- ]
- [1040, # 200UT -- CARD READER #
- 0, # 714X(N/A) #
- 0, # 711(N/A) #
- 0, # 714(N/A) #
- 0, # HPRE(N/A) #
- 1040 # 734 #
- ]
- [1000, # 200UT -- LINE PRINTER #
- 1280, # 714X #
- 0, # 711(N/A) #
- 240, # 714 #
- 0, # HPRE(N/A) #
- 1000 # 734 #
- ]];
- END
- DEF MXSTIP # 2 #;
- ARRAY DBZ$STIP$TBL [1:MXSTIP,1:MXDT] S(1);
- BEGIN
- ITEM DBZ$STIP$DEF (0,0,60) = [[1040,# M4A -- CONSOLE #
- 1280 # M4C #
- ]
- [ 0, # M4A -- CARD READER(N/A) #
- 0 # M4C(N/A) #
- ]
- [ 1,# M4A -- LINE PRINTER #
- 1 # M4C #
- ]];
- END
- ARRAY UBZ$STIP$TBL [1:MXSTIP,1:MXDT] S(1);
- BEGIN
- ITEM UBZ$STIP$DEF (0,0,60) = [[1, # M4C -- CONSOLE #
- 1 # M4C #
- ]
- [1, # M4A -- CARD READER #
- 0 # M4C(N/A) #
- ]
- [0, # M4A(N/A) -- LINE PRINTER #
- 0 # M4C(N/A) #
- ]];
- END
- ARRAY XBZ$STIP$TBL [1:MXSTIP,1:MXDT] S(1);
- BEGIN
- ITEM XBZ$STIP$DEF (0,0,60) = [[1040,# M4A -- CONSOLE #
- 1280 # M4C #
- ]
- [1040,# M4A -- CARD READER #
- 0 # M4C(N/A) #
- ]
- [1000,# M4A -- LINE PRINTER #
- 240 # M4C #
- ]];
- END
- SWITCH MD4DJUMP , , # UNK , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , GEN$PARAM , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- , , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , , # AUTO , SL ,#
- , , # LSPEED , DFL ,#
- , , # FRAME , RTIME ,#
- , , # RCOUNT , NSVC ,#
- , , # PSN , DCE ,#
- , , # DTEA , ,#
- , , # , ,#
- , , # , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- , NEXT$MD4 , # , DT ,#
- SDT , MB$PARAM , # SDT , TA ,#
- ABL , DBZ , # ABL , DBZ ,#
- UBZ$UBL , FLOW$PARAM , # UBZ , DBL ,#
- UBZ$UBL , FLOW$PARAM , # UBL , XBZ ,#
- $DO , ILLEGAL , # DO , STREAM ,#
- CON$PARAM , , # HN , AUTOLOG ,#
- CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
- GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
- GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
- GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
- GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
- GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
- ILLEGAL , ILLEGAL , # AB , BR ,#
- ILLEGAL , CON$PARAM , # BS , B1 ,#
- CON$PARAM , ILLEGAL , # B2 , CI ,#
- CON$PARAM , CON$PARAM , # CN , CT ,#
- CON$PARAM , ILLEGAL , # DLC , DLTO ,#
- CON$PARAM , ILLEGAL , # DLX , EP ,#
- ILLEGAL , ILLEGAL , # IN , LI ,#
- ILLEGAL , ILLEGAL , # OP , PA ,#
- CON$PARAM , PL$PARAM , # PG , PL ,#
- GEN$PARAM , ILLEGAL , # PW , SE ,#
- CON$PARAM , CON$PARAM , # FA , XLC ,#
- ILLEGAL , ILLEGAL , # XLX , XLTO ,#
- CON$PARAM , ILLEGAL , # ELO , ELX ,#
- CON$PARAM , ILLEGAL , # ELR , EBO ,#
- ILLEGAL , ILLEGAL , # EBR , CP ,#
- ILLEGAL , ILLEGAL , # IC , OC ,#
- CON$PARAM , ILLEGAL , # LK , EBX ,#
- , GEN$PARAM , # , MC ,#
- ILLEGAL , , # XLY , EOF ,#
- , ILLEGAL , # PAD , RTS ,#
- ILLEGAL , ILLEGAL ; # MCI , MLI #
- CONTROL EJECT;
- # #
- # MD4DEV CODE BEGINS HERE #
- # #
- CRNT$CC[CC"CN"] = CN$DEF; # DEFAULT CN AS CURRENT VALUE #
- CRNT$CC[CC"B1"] = B1$DEF; # DEFAULT B1 AS CURRENT VALUE #
- CRNT$CC[CC"B2"] = B2$DEF; # DEFAULT B2 AS CURRENT VALUE #
- CRNT$CC[CC"CT"] = CT$DEF; # DEFAULT CT AS CURRENT VALUE #
- CRNT$CC[CC"BS"] = -1; # SET BS TO -NOT APPLICABLE- #
- FOR I=3 STEP 1 UNTIL STWC[0]
- DO # FOR EACH VALUE DEC ENTRY #
- BEGIN
- GOTO MD4DJUMP[STKWID[I]]; # GO TO APPROPRIATE PROC #
- GEN$PARAM:
- GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETER #
- TEST I;
- MB$PARAM:
- MBDEV(STWORD[I],STLNUM[0]); # CHECK MODE4/BSC PARAMETER #
- TEST I;
- FLOW$PARAM:
- FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETER #
- TEST I;
- ILLEGAL: # ALL OTHER PARAMETERS FLAG AS INVALID #
- IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
- THEN
- BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
- NDLEM2(ERR135,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
- BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
- NDLEM2(ERR106,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- CON$PARAM:
- IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
- THEN
- BEGIN
- CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
- END
- ELSE # DT IS NOT CONSOLE #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- PL$PARAM:
- IF CRNT$DT EQ DT"CON" OR # IF DT IS CONSOLE #
- CRNT$DT EQ DT"LP" # OR DT IS LINEPRINTER #
- THEN
- BEGIN
- CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
- END
- ELSE # DT IS NOT CONSOLE #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- SDT:
- IF CRNT$DT EQ DT"LP" OR # IF DT IS LINE PRINTER #
- STVALNAM[I] EQ "SDT12" OR # IF SDT12 - SDT15 USED #
- STVALNAM[I] EQ "SDT13" OR
- STVALNAM[I] EQ "SDT14" OR
- STVALNAM[I] EQ "SDT15"
- THEN
- BEGIN # CHECK BATCH PARAMETER #
- BTCHDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS CONSOLE OR CARD READER #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- $DO:
- IF CRNT$DT EQ DT"LP" # IF DT IS LINE PRINTER #
- THEN
- BEGIN # AND STIP IS M4C OR UNKNOWN #
- IF CRNT$STIP EQ STIP"M4C" OR
- CRNT$STIP EQ STIP"UNKNOWN"
- THEN
- BEGIN # CHECK BATCH PARAMETER #
- BTCHDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # STIP IS M4A #
- BEGIN # FLAG ERROR -- INVALID FOR M4A DEVICES #
- NDLEM2(ERR134,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- END
- ELSE # DT IS CARD READER OR CONSOLE #
- BEGIN
- IF CRNT$DT EQ DT"CR" # IF CURRENT DT IS CR #
- THEN
- BEGIN # FLAG ERROR -- INVALID FOR M4A DEVICES #
- NDLEM2(ERR134,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- ELSE # DT MUST BE CONSOLE #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- END
- TEST I;
- ABL:
- IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
- THEN
- BEGIN # CHECK FLOW CONTROL PARAMETER #
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS LP OR CR #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- DBZ:
- IF CRNT$DT NQ DT"CR" # IF DT IS NOT A CARD READER #
- THEN
- BEGIN # CHECK FLOW CONTROL PARAMETER #
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS CARD READER #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- UBZ$UBL: # IF DT IS CONSOLE, CARD READER, OR #
- # LINE PRINTER #
- IF CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"CR" OR
- CRNT$DT EQ DT"LP"
- THEN
- BEGIN
- IF STKWID[I] EQ KID"UBZ" # IF UBZ PARAMETER #
- THEN
- BEGIN
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE
- BEGIN # ELSE, UBL PARAMETER #
- IF (CRNT$DT NQ "CON") AND
- (STVALNUM[I] GQ 1 AND STVALNUM[I] LQ 7)
- THEN
- BEGIN # PASSIVE DEVICES: 1 <= UBL <= 7#
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE
- BEGIN # PARAMETER VALUE OUT OF RANGE #
- CHARVAL=XCDD(STVALNUM[I]);
- NDLEM2(ERR100,STLNUM[0],CHARVAL);
- END
- END
- END
- ELSE
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- NEXT$MD4:
- END
- IF NOT ABL$USED AND # IF ABL NOT SPECIFIED AND DT IS CONSOLE #
- CRNT$DT EQ DT"CON"
- THEN
- BEGIN
- DEVFNFV(FN"ABL",ABL$DEF);
- END
- IF NOT DBL$USED # IF DBL NOT SPECIFIED #
- THEN
- BEGIN
- VALUE = DBL$DEF[CRNT$DT]; # DEFAULT DBL IN VALUE #
- DEVFNFV(FN"DBL",VALUE);
- END
- IF NOT UBL$USED # IF UBL NOT SPECIFIED #
- THEN
- BEGIN
- VALUE = UBL$DEF; # DEFAULT UBL IN VALUE #
- DEVFNFV(FN"UBL",VALUE);
- END
- IF NOT DBZ$USED AND # IF DBZ NOT SPECIFIED #
- CRNT$DT NQ DT"CR"
- THEN
- BEGIN
- VALUE = 0; # CLEAR VALUE TEMPORARY #
- IF CRNT$TC NQ TC"USER" AND # IF TC IS NOT USER OR UNKNOWN #
- CRNT$TC NQ TC"UNKNOWN"
- THEN
- BEGIN # DEFAULT DBZ BY TC AND DT #
- VALUE = DBZ$TC$DEF[CRNT$TC,CRNT$DT];
- END
- ELSE # TC IS USER OR UNKNOWN #
- BEGIN # IF STIP IS NOT UNKNOWN #
- IF CRNT$STIP NQ STIP"UNKNOWN"
- THEN
- BEGIN # DEFAULT DBZ BY STIP AND DT #
- VALUE = DBZ$STIP$DEF[CRNT$STIP,CRNT$DT];
- END
- END
- IF VALUE NQ 0 # IF DEFAULT VALUE IS DETERMINED#
- THEN
- BEGIN
- J = B<44,8>VALUE; # MSB OF VALUE #
- DEVFNFV(FN"DBZ$MSB",J);
- J = B<52,8>VALUE; # LSB OF VALUE #
- DEVFNFV(FN"DBZ$LSB",J);
- END
- END
- IF NOT UBZ$USED AND # IF UBZ NOT SPECIFIED #
- (CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"CR")
- THEN
- BEGIN
- VALUE = 0; # CLEAR VALUE TEMPORARY #
- IF CRNT$TC NQ TC"USER" AND # IF TC IS NOT USER OR UNKNOWN #
- CRNT$TC NQ TC"UNKNOWN"
- THEN
- BEGIN # DEFAULT UBZ BY TC AND DT #
- VALUE = UBZ$TC$DEF[CRNT$TC,CRNT$DT];
- END
- ELSE # TC IS USER OR UNKNOWN #
- BEGIN # IF STIP IS NOT UNKNOWN #
- IF CRNT$STIP NQ STIP"UNKNOWN"
- THEN
- BEGIN # DEFAULT UBZ BY STIP AND DT #
- VALUE = UBZ$STIP$DEF[CRNT$STIP,CRNT$DT];
- END
- END
- IF VALUE NQ 0 # IF DEFAULT VALUE IS DETERMINED#
- THEN
- BEGIN
- DEVFNFV(FN"UBZ",VALUE);
- END
- END
- IF NOT XBZ$USED # IF XBZ NOT SPECIFIED #
- THEN
- BEGIN
- VALUE = 0; # CLEAR VALUE TEMPORARY #
- IF CRNT$TC NQ TC"USER" AND # IF TC IS NOT USER OR UNKNOWN #
- CRNT$TC NQ TC"UNKNOWN"
- THEN
- BEGIN # DEFAULT XBZ BY TC AND DT #
- VALUE = XBZ$TC$DEF[CRNT$TC,CRNT$DT];
- END
- ELSE # TC IS USER OR UNKNOWN #
- BEGIN # IF STIP IS NOT UNKNOWN #
- IF CRNT$STIP NQ STIP"UNKNOWN"
- THEN
- BEGIN # DEFAULT XBZ BY STIP AND DT #
- VALUE = XBZ$STIP$DEF[CRNT$STIP,CRNT$DT];
- END
- END
- IF VALUE NQ 0 # IF DEFAULT VALUE IS DETERMINED#
- THEN
- BEGIN
- J = B<44,8>VALUE; # MSB OF VALUE #
- DEVFNFV(FN"XBZ$MSB",J);
- J = B<52,8>VALUE; # LSB OF VALUE #
- DEVFNFV(FN"XBZ$LSB",J);
- END
- END
- IF NOT DO$USED AND # IF DO IS NOT SPECIFIED #
- CRNT$DT NQ DT"CON" # AND DT IS NOT CONSOLE #
- THEN
- BEGIN
- IF CRNT$STIP EQ STIP"M4A" OR # IF STIP IS M4A OR UNKNOWN #
- CRNT$STIP EQ STIP"UNKNOWN"
- THEN
- BEGIN
- DEVFNFV(FN"DO$",DO$DEF); # PUT DO VALUE IN FOR RBF #
- END
- ELSE # STIP MUST BE M4C #
- BEGIN
- IF FIRST$DT[DT"LP"] # IF THIS IS FIRST LP #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- DEVFNFV(FN"DO$",DO$DEF);
- B<DO$DEF,1>DO$MAP[DT"LP"] = 1; # SET BIT FOR DEFAULT #
- FIRST$DT[DT"LP"] = FALSE; # CLEAR FLAG FOR DT #
- END
- ELSE # NOT FIRST LINE PRINTER #
- BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
- NDLEM2(ERR103,STLNUM[0],"DO");
- END
- END
- END
- IF NOT TA$USED AND # IF TA NOT SPECIFIED AND NOT AUTO-REC #
- NOT AUTO$REC
- THEN
- BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
- NDLEM2(ERR103,STLNUM[0],"TA");
- END
- DEVFNFV(FN"EOF",CRNT$EOF); # PUT EOF ENTRY IN NCB #
- IF NOT PL$USED AND # IF PL NOT SPECIFIED #
- CRNT$DT EQ DT"LP" # AND DEVICE IS LINEPRINTER #
- THEN
- BEGIN
- DEVFNFV(FN"PL",PL$DEF);
- END
- FOR I=CC"CN" STEP 1 UNTIL CC"CT"
- DO # CHECK CONTROL CHAR FOR UNIQUENESS #
- BEGIN
- FOR J=I+1 STEP 1 UNTIL CC"ELX"
- DO
- BEGIN
- IF CRNT$CC[I] EQ CRNT$CC[J]
- THEN
- BEGIN # FLAG ERROR -- VALUE NOT UNIQUE #
- NDLEM2(ERR132,STLNUM[0]," ");
- END
- END
- END
- RETURN; # **** RETURN **** #
- END # MD4DEV #
- CONTROL EJECT;
- PROC USRDEV;
- *IF,DEF,IMS
- #
- ** USERDEV - CHECK DEVICE STATEMENT PARAMETERS FOR USER TIP.
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
- * ON THE STATEMENT.
- *
- * PROC USERDEV
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION,
- * SELECT CASE THAT APPLIES,
- * CASE 1(DI,PRI,PW,P90,P91,...,P99):
- * CHECK GENERAL PARAMETER.
- * CASE 2(HN,AUTOCON,AUTOLOG,AB,BR,BS,B1,B2,CI,CN,CT,DLC,DLTO,
- * DLX,EP,IN,LI,OP,PA,PG,PL,SE,XLY):
- * CHECK CONSOLE PARAMETER.
- * CASE 3(SDT,DO,STREAM):
- * CHECK BATCH DEVICE PARAMETER.
- * CASE 4(TA):
- * CHECK MODE4/BSC PARAMETER.
- * CASE 5(ABL,DBL,DBZ,UBL,UBZ,XBZ):
- * CHECK FLOW CONTROL PARAMETER.
- * IF W SPECIFIED,
- * ENTER FNFV ENTRY FOR CURRENT VALUE OF W.
- * IF NCIR SPECIFIED,
- * ENTER FNFV ENTRY FOR NCIR
- * ENTER FNFV ENTRY FOR NEN.
- * PUT NCIR VALUE IN DEVICE CROSS-REFERENCE TABLE
- * IF EOF SPECIFIED,
- * ENTER FNFV VALUE FOR EOF.
- * IF BCF,CTYP,MREC,NCIR,NEN,W,RIC WAS SPECIFIED
- * PUT VALUE IN DEVICE ENTRY.
- *
- #
- *ENDIF
- BEGIN
- ITEM I; # SCRATCH ITEM #
- ITEM CTEMP C(10); # CHARACTER TEMP #
- SWITCH USRDJUMP , , # UNK , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , GEN$PARAM , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- , , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , , # AUTO , SL ,#
- , , # LSPEED , DFL ,#
- , , # FRAME , RTIME ,#
- , , # RCOUNT , NSVC ,#
- , , # PSN , DCE ,#
- , , # DTEA , ,#
- , , # , ,#
- , , # , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- , NEXT$USR , # , DT ,#
- BTCH$PARAM , MB$PARAM , # SDT , TA ,#
- FLOW$PARAM , FLOW$PARAM , # ABL , DBZ ,#
- FLOW$PARAM , FLOW$PARAM , # UBZ , DBL ,#
- FLOW$PARAM , FLOW$PARAM , # UBL , XBZ ,#
- BTCH$PARAM , BTCH$PARAM , # DO , STREAM ,#
- CON$PARAM , , # HN , AUTOLOG ,#
- CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
- GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
- GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
- GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
- GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
- GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
- CON$PARAM , CON$PARAM , # AB , BR ,#
- CON$PARAM , CON$PARAM , # BS , B1 ,#
- CON$PARAM , CON$PARAM , # B2 , CI ,#
- CON$PARAM , CON$PARAM , # CN , CT ,#
- CON$PARAM , CON$PARAM , # DLC , DLTO ,#
- CON$PARAM , CON$PARAM , # DLX , EP ,#
- CON$PARAM , CON$PARAM , # IN , LI ,#
- CON$PARAM , CON$PARAM , # OP , PA ,#
- CON$PARAM , CON$PARAM , # PG , PL ,#
- GEN$PARAM , CON$PARAM , # PW , SE ,#
- CON$PARAM , CON$PARAM , # FA , XLC ,#
- CON$PARAM , CON$PARAM , # XLX , XLTO ,#
- CON$PARAM , CON$PARAM , # ELO , ELX ,#
- CON$PARAM , CON$PARAM , # ELR , EBO ,#
- CON$PARAM , CON$PARAM , # EBR , CP ,#
- CON$PARAM , CON$PARAM , # IC , OC ,#
- CON$PARAM , CON$PARAM , # LK , EBX ,#
- , GEN$PARAM , # , MC ,#
- CON$PARAM , , # XLY , EOF ,#
- , CON$PARAM , # PAD , RTS ,#
- GEN$PARAM , GEN$PARAM ; # MCI , MLI #
- CONTROL EJECT;
- # #
- # USRDEV CODE BEGINS HERE #
- # #
- FOR I=3 STEP 1 UNTIL STWC[0] # CHECK EACH VALUE-DEC ENTRY #
- DO
- BEGIN
- GOTO USRDJUMP[STKWID[I]];
- GEN$PARAM:
- GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETER #
- TEST I;
- CON$PARAM:
- CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
- TEST I;
- BTCH$PARAM:
- BTCHDEV(STWORD[I],STLNUM[0]); # CHECK BATCH/PASSIVE DEV PARAM #
- TEST I;
- MB$PARAM:
- MBDEV(STWORD[I],STLNUM[0]); # CHECK MODE4/BSC PARAMETER #
- TEST I;
- FLOW$PARAM:
- FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETER #
- TEST I;
- NEXT$USR:
- END
- CTEMP = "ABL";
- C$USR$PRM1(ABL$USED,CTEMP); # CHECK IF ABL IS USED #
- CTEMP = "DT";
- C$USR$PRM2(CRNT$DT,CTEMP); # CHECK CURRENT DEVICE TYPE USED #
- CTEMP ="DBZ";
- C$USR$PRM1(DBZ$USED,CTEMP); # CHECK IF DBZ USED #
- CTEMP = "DBL";
- C$USR$PRM1(DBL$USED,CTEMP); # CHECK IF DBL USED #
- CTEMP = "UBZ";
- C$USR$PRM1(UBZ$USED,CTEMP); # CHECK IF UBZ USED #
- CTEMP = "UBL";
- C$USR$PRM1(UBL$USED,CTEMP); # CHECK IF UBL USED #
- CTEMP = "XBZ";
- C$USR$PRM1(XBZ$USED,CTEMP); # CHECK IF XBZ USED #
- IF (CRNT$DT EQ DT"CR") OR (CRNT$DT EQ DT"CP") OR
- (CRNT$DT EQ DT"LP") OR (CRNT$DT EQ DT"PL")
- THEN # VALID ONLY FOR PASSIVE DEVICES #
- BEGIN
- CTEMP = "DO";
- C$USR$PRM1(DO$USED,CTEMP);# CHECK IF DO IS SPECIFIED #
- END
- CTEMP = "AUTOCON";
- C$USR$PRM1((AUTOCON$FLAG OR AUTOCON$NO),CTEMP); # CHECK AUTOCON #
- CTEMP = "HN";
- C$USR$PRM1(HN$USED,CTEMP); # CHECK HN #
- IF CTYP$USED # IF CTYPE SPECIFIED #
- THEN
- BEGIN
- DEVFNFV(FN"CTYP",CRNT$CTYP); # MAKE FNFV ENTRY #
- END
- IF W$USED # IF W SPECIFIED #
- THEN
- BEGIN
- DEVFNFV(FN"W",CRNT$W); # MAKE FNFV ENTRY #
- END
- IF NCIR$USED # IF NCIR IS SPECIFIED #
- THEN
- BEGIN
- DEVFNFV(FN"NCIR",CRNT$NCIR); # MAKE FNFV ENTRY FOR NCIR #
- DCNCIR[DCWC[1]] = CRNT$NCIR; # PUT NCIR VALUE IN DEVICE XREF #
- DEVFNFV(FN"NEN",CRNT$NEN); # MAKE FNFV ENTRY FOR NEN #
- END
- IF EOF$USED # IF EOF SPECIFIED #
- THEN
- BEGIN
- DEVFNFV(FN"EOF",CRNT$EOF); # MAKE FNFV ENTRY FOR EOF #
- END
- RETURN; # **** RETURN **** #
- END # USRDEV #
- CONTROL EJECT;
- PROC X25DEV;
- BEGIN
- *IF,DEF,IMS
- #
- ** X25DEV - CHECK DEVICE STATEMENT PARAMETERS LEGAL FOR X.25
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CHECKS PARAMETER TO BE LEGAL FOR X.25 CIRCUITS.
- *
- * PROC X25DEV
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION,
- * SELECT CASE THAT APPLIES,
- * CASE 1(PW,P90,P91,...,P99,PRI):
- * CHECK GENERAL DEVICE PARAMETER.
- * CASE 2(HN,AUTOLOG,AUTOCON,BS,B1,B2,CI,CN,CT,DLX,LI,
- * PA,PG,PL,XLY,IN):
- * CHECK CONSOLE DEVICE PARAMETER.
- * CASE 3(ABL,DBZ,DBL,UBL):
- * CHECK FLOW CONTROL PARAMETER.
- * CASE 4(DI,TA,DO,STREAM,AB,BR,DLC,DLTO,EP,OP,SE):
- * FLAG ERROR -- PARAMETER NOT ALLOW.
- * CASE 5(SDT):
- * IF SDT VALUE IS SDT12, SDT13, SDT14, OR SDT15,
- * CALL BATCH DEVICE PROCESSOR.
- * IF ABL,DBL,UBL NOT SPECIFIED,
- * PUT DEFAULT VALUE INTO DEVICE ENTRY.
- * IF DBZ OR UBZ NOT SPECIFIED
- * PERFORM FNFV ENTRY DEPENDING ON DEVICE TYPE.
- * PUT CTYP VALUE INTO DEVICE ENTRY.
- * IF CTYP IS SVC,
- * PUT NCIR AND NEN VALUES INTO DEVICE ENTRY.
- * CHECK BS,CN,B1,B2,CT FOR UNIQUENESS.
- * IF NOT UNIQUE,
- * FLAG ERROR -- VALUE NOT UNIQUE.
- #
- *ENDIF
- #
- **** PROC X25DEV - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- DEF ABL$DEF # 2 #; # DEFAULT ABL VALUE #
- DEF BS$DEF # X"08" #; # DEFAULT BS VALUE #
- DEF B1$DEF # X"10" #; # DEFAULT B1 VALUE #
- DEF B2$DEF # X"14" #; # DEFAULT B2 VALUE #
- DEF CN$DEF # X"18" #; # DEFAULT CN VALUE #
- DEF CT$DEF # X"1B" #; # DEFAULT CT VALUE #
- DEF EBX$DEF # X"04" #; # DEFAULT EBX VALUE #
- DEF ELX$DEF # X"0D" #; # DEFAULT ELX VALUE #
- DEF DBL$DEF # 2 #; # DEFAULT DBL VALUE #
- DEF DBZ$DEF # 225 #; # DEFAULT DBZ VALUE #
- DEF DBZ$AP$DEF # 128 #; # DEFAULT DBZ VALUE FOR DT=AP #
- DEF UBZ$AP$DEF # 2 #; # DEFAULT UBZ VALUE FOR DT=AP #
- DEF UBL$DEF # 7 #; # DEFAULT UBL VALUE #
- DEF UBZ$DEF # 1 #; # DEFAULT UBZ VALUE #
- DEF PL$DEF # 64 #; # DEFAULT PL VALUE #
- ITEM I; # SCRATCH ITEM #
- ITEM ITEMP; # INTEGER TEMPORARY #
- ITEM J; # SCRATCH ITEM #
- ITEM VALUE; # INTEGER VALUE TEMPORARY #
- SWITCH X25DJUMP , , # UNK , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , ILLEGAL , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- , , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , , # AUTO , SL ,#
- , , # LSPEED , DFL ,#
- , , # FRAME , RTIME ,#
- , , # RCOUNT , NSVC ,#
- , , # PSN , DCE ,#
- , , # DTEA , ,#
- , , # , ,#
- , , # , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- , NEXT$X25 , # , DT ,#
- SDT , ILLEGAL , # SDT , TA ,#
- FLOW$PARAM , FLOW$PARAM , # ABL , DBZ ,#
- FLOW$PARAM , FLOW$PARAM , # UBZ , DBL ,#
- FLOW$PARAM , ILLEGAL , # UBL , XBZ ,#
- ILLEGAL , ILLEGAL , # DO , STREAM ,#
- CON$PARAM , , # HN , AUTOLOG ,#
- CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
- GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
- GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
- GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
- GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
- GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
- CON$PARAM , CON$PARAM , # AB , BR ,#
- CON$PARAM , CON$PARAM , # BS , B1 ,#
- CON$PARAM , CON$PARAM , # B2 , CI ,#
- CON$PARAM , CON$PARAM , # CN , CT ,#
- CON$PARAM , CON$PARAM , # DLC , DLTO ,#
- CON$PARAM , CON$PARAM , # DLX , EP ,#
- IN , CON$PARAM , # IN , LI ,#
- CON$PARAM , CON$PARAM , # OP , PA ,#
- CON$PARAM , CON$PARAM , # PG , PL ,#
- GEN$PARAM , ILLEGAL , # PW , SE ,#
- CON$PARAM , CON$PARAM , # FA , XLC ,#
- CON$PARAM , CON$PARAM , # XLX , XLTO ,#
- CON$PARAM , CON$PARAM , # ELO , ELX ,#
- CON$PARAM , CON$PARAM , # ELR , EBO ,#
- CON$PARAM , CON$PARAM , # EBR , CP ,#
- CON$PARAM , CON$PARAM , # IC , OC ,#
- CON$PARAM , CON$PARAM , # LK , EBX ,#
- , GEN$PARAM , # , MC ,#
- CON$PARAM , , # XLY , EOF ,#
- , ILLEGAL , # PAD , RTS ,#
- GEN$PARAM , GEN$PARAM ; # MCI , MLI #
- CONTROL EJECT;
- # #
- # X25DEV CODE BEGINS HERE #
- # #
- CRNT$CC[CC"CN"] = CN$DEF; # CN -- DEFAULT CONTROL CHAR #
- CRNT$CC[CC"B1"] = B1$DEF; # B1 #
- CRNT$CC[CC"B2"] = B2$DEF; # B2 #
- CRNT$CC[CC"CT"] = CT$DEF; # CT #
- CRNT$CC[CC"BS"] = BS$DEF; # BS #
- CRNT$CC[CC"ELX"] = ELX$DEF; # ELX #
- CRNT$CC[CC"EBX"] = EBX$DEF; # EBX #
- FOR I=3 STEP 1 UNTIL STWC[0] # CHECK EACH VALUE-DEC ENTRY #
- DO
- BEGIN
- GOTO X25DJUMP[STKWID[I]]; # GOTO APPROPRIATE PARAGRAPH #
- GEN$PARAM:
- IF STKWID[I] EQ KID"MCI" OR # IF -MCI- OR -MLI- USED #
- STKWID[I] EQ KID"MLI"
- THEN
- BEGIN
- IF CRNT$STIP EQ STIP"PAD" # IF STIP IS PAD #
- THEN
- BEGIN
- GENDEV(STWORD[I],STLNUM[0]);
- END
- ELSE
- BEGIN # XAA STIP #
- NDLEM2(ERR135,STLNUM[0],KWDNAME[STKWID[I]]);
- END # PARAMETER NOT ALLOWED FOR XAA #
- END
- ELSE
- BEGIN
- GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETER #
- END
- TEST I;
- SDT:
- IF STVALNAM[I] EQ "SDT12" OR # IF SDT12 - SDT15 USED #
- STVALNAM[I] EQ "SDT13" OR
- STVALNAM[I] EQ "SDT14" OR
- STVALNAM[I] EQ "SDT15"
- THEN
- BEGIN
- BTCHDEV(STWORD[I],STLNUM[0]); # CALL BATCH DEVICE PROCESSOR #
- END
- ELSE
- BEGIN
- GOTO ILLEGAL;
- END
- TEST I;
- IN:
- IF CRNT$TIP EQ TIP"X25" AND
- STVALNAM[I] EQ "PT"
- THEN # IN=PT NOT ALLOWED FOR X.25 #
- BEGIN # FLAG ERROR -- VALUE INVALID WITH TIPTYPE#
- NDLEM2(ERR112,STLNUM[0],STVALNAM[I]);
- TEST I; # GET NEXT VALUE DECLARATION #
- END
- CON$PARAM:
- CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
- TEST I;
- FLOW$PARAM:
- FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETER #
- TEST I;
- ILLEGAL: # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
- IF STKWID[I] EQ KID"DI"
- THEN # IF PARAMETER IS -DI- #
- BEGIN
- NDLEM2(ERR106,STLNUM[0],"DI"); # PUT -DI- IN MESSAGE #
- END
- ELSE # PARAMETER IS NOT -DI- #
- BEGIN
- NDLEM2(ERR106,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- NEXT$X25:
- END
- IF NOT ABL$USED # IF ABL NOT SPECIFIED #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY FOR DEFAULT ABL #
- DEVFNFV(FN"ABL",ABL$DEF);
- END
- IF NOT DBL$USED # IF DBL NOT SPECIFIED #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY FOR DEFAULT DBL #
- DEVFNFV(FN"DBL",DBL$DEF);
- END
- IF NOT DBZ$USED # IF DBZ NOT SPECIFIED #
- THEN
- BEGIN
- IF CRNT$DT EQ DT"AP" # IF A-A DEVICE TYPE #
- THEN
- BEGIN
- VALUE = DBZ$AP$DEF; # MAKE FNFV PAIR ENTRY FOR #
- END
- ELSE
- BEGIN # ALL OTHER DEVICE TYPE #
- VALUE = DBZ$DEF;
- END
- J = B<44,8>VALUE; # MSB OF DEFAULT DBZ #
- DEVFNFV(FN"DBZ$MSB",J);
- J = B<52,8>VALUE; # LSB OF DEFAULT DBZ #
- DEVFNFV(FN"DBZ$LSB",J);
- END
- IF NOT UBL$USED # IF UBL NOT SPECIFIED #
- THEN
- BEGIN # MAKE FNFV ENTRY WITH DEFAULT UBL #
- DEVFNFV(FN"UBL",UBL$DEF);
- END
- IF NOT UBZ$USED # IF UBZ NOT SPECIFIED #
- THEN
- BEGIN
- IF CRNT$DT EQ DT"AP" # IF DEVICE TYPE IS AP #
- THEN
- BEGIN
- DEVFNFV(FN"UBZ",UBZ$AP$DEF);
- END
- ELSE
- BEGIN
- DEVFNFV(FN"UBZ",UBZ$DEF); # ELSE PASS REGULAR DEFAULT #
- END
- END
- IF COLLECT$USED # IF COLLECT WAS SPECIFIED #
- THEN
- BEGIN # PUT VALUE IN ENTRY #
- DEVFNFV(FN"COLLECT",COLLECT$FLAG);
- END
- IF NOT PL$USED AND # IF PL NOT SPECIFIED #
- CRNT$DT EQ DT"LP" # AND DEVICE IS LINEPRINTER #
- THEN
- BEGIN
- DEVFNFV(FN"PL",PL$DEF);
- END
- # MAKE FNFV PAIR ENTRIES FOR CTYP,NEN,NCIR,W#
- DEVFNFV(FN"CTYP",CRNT$CTYP);
- DEVFNFV(FN"W",CRNT$W);
- IF CRNT$CTYP EQ CTYP"SVC" # IF CURRENT CTYP IS -SVC- #
- THEN
- BEGIN
- DEVFNFV(FN"NCIR",CRNT$NCIR); # PUT FNFV PAIR FOR NCIR #
- DEVFNFV(FN"NEN",CRNT$NEN); # PUT FNFV PAIR FOR NEN #
- DCNCIR[DCWC[1]] = CRNT$NCIR; # PUT NCIR VALUE IN DEVICE XREF #
- END
- # CHECK UNIQUENESS OF CONTROL CHARS #
- FOR I=CC"CN" STEP 1 UNTIL CC"BS"
- DO
- BEGIN
- FOR J=I+1 STEP 1 UNTIL CC"EBX"
- DO
- BEGIN
- IF CRNT$CC[I] EQ CRNT$CC[J]
- THEN
- BEGIN # FLAG ERROR -- CONTROL CHAR NOT UNIQUE #
- NDLEM2(ERR132,STLNUM[0]," ");
- END
- END
- END
- RETURN; # **** RETURN **** #
- END # X25DEV #
- CONTROL EJECT;
- PROC $3270DEV;
- BEGIN
- *IF,DEF,IMS
- #
- ** $3270DEV - CHECK DEVICE STATEMENT PARAMETERS LEGAL FOR 3270.
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CHECK PARAMETER TO BE ALLOW FOR MODE4 DEVICES.
- *
- * PROC $3270DEV
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION,
- * SELECT CASE THAT APPLIES,
- * CASE 1(PRI,DI,PW,P90,P91,...,P99):
- * CHECK GENERAL PARAMETER.
- * CASE 2(TA):
- * CHECK MODE4/BSC PARAMETER.
- * CASE 3(DBL,DBZ,XBZ):
- * CHECK FLOW CONTROL PARAMETER.
- * CASE 4(B1,B2,CN,CT,PG,PL,HN,AUTOLOG,AUTOCON):
- * IF DT IS CONSOLE,
- * THEN,
- * CHECK CONSOLE PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- PARAM NOT ALLOWED WITH DT SPECIFIED.
- * CASE 5(ABL):
- * IF DT IS CONSOLE,
- * THEN,
- * CHECK FLOW CONTROL PARAMETER
- * OTHERWISE,
- * FLAG ERROR -- INVALID WITH DT SPECIFIED.
- * CASE 6(UBZ):
- * IF DT IS CONSOLE OR CARD READER OR LINEPRINTER,
- * THEN,
- * CHECK FLOW CONTROL PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- INVALID WITH DT SPECIFIED.
- * CASE 7(UBL):
- * IF DT IS NOT CONSOLE AND UBL WITHIN RANGE 1-7,
- * CALL FLOWDEV TO CHECK FLOW CONTROL PARAMETERS.
- * CASE 8(XBZ):
- * IF DT IS LP OR USER,
- * CALL FLOWDEV TO CHECK FLOW CONTROL PARAMETERS.
- * OTHERWISE,
- * FLAG ERROR -- INVALID WITH DT SPECIFIED.
- * IF DBL NOT SPECIFIED,
- * DEFAULT VALUE BY DEVICE TYPE.
- * IF UBL NOT SPECIFIED,
- * DEFAULT UBL VALUE.
- * IF DT IS CON AND ABL WAS NOT SPECIFIED,
- * DEFAULT ABL VALUE.
- * IF DBZ WAS NOT SPECIFIED,
- * DEFAULT VALUE BY DEVICE TYPE.
- * IF DT IS A CONSOLE AND UBZ WAS NOT SPECIFIED,
- * DEFAULT UBZ VALUE.
- * IF DT IS LP AND XBZ WAS NOT SPECIFIED,
- * DEFAULT XBZ VALUE.
- * CHECK CN,B1,B2,CT TO BE UNIQUE.
- * IF NOT UNIQUE,
- * FLAG ERROR -- CN,B1,B2,CT MUST BE UNIQUE.
- *
- #
- *ENDIF
- #
- **** PROC $3270DEV - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- FUNC XCDD C(10); # CONVERTS INTEGER TO CHARACTER #
- END
- #
- ****
- #
- DEF ABL$DEF # 2 #; # DEFAULT ABL VALUE #
- DEF B1$DEF # X"3A" #; # DEFAULT B1 VALUE #
- DEF B2$DEF # X"29" #; # DEFAULT B2 VALUE #
- DEF CN$DEF # X"28" #; # DEFAULT CN VALUE #
- DEF CT$DEF # X"25" #; # DEFAULT CT VALUE #
- DEF DBL$DEF$CON # 2 #; # DEFAULT DBL VALUE FOR CONSOLES #
- DEF DBL$DEF$LP # 1 #; # DEFAULT DBL VALUE FOR LINE PRINTERS #
- DEF DBZ$DEF$CON # 1280 #; # DEFAULT DBZ VALUE FOR CONSOLES#
- DEF DBZ$DEF$LP # 1 #; # DEFAULT DBZ VALUE FOR LINE PRINTERS #
- DEF DO$DEF # 1 #; # DEFAULT DO VALUE #
- DEF UBL$DEF # 7 #; # DEFAULT UBL VALUE #
- DEF UBZ$DEF # 1 #; # DEFAULT UBZ VALUE #
- DEF XBZ$DEF # 400 #; # DEFAULT XBZ VALUE #
- DEF PL$DEF # 64 #; # DEFAULT PL VALUE #
- ITEM CHARVAL C(10); # SCRATCH CHARACTER VARIABLE #
- ITEM I; # SCRATCH ITEM #
- ITEM ITEMP; # INTEGER TEMPORARY #
- ITEM J; # SCRATCH ITEM #
- ITEM VALUE; # INTEGER VALUE TEMPORARY #
- SWITCH $3270JMP , , # UNK , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , GEN$PARAM , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- , , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , , # AUTO , SL ,#
- , , # LSPEED , DFL ,#
- , , # FRAME , RTIME ,#
- , , # RCOUNT , NSVC ,#
- , , # PSN , DCE ,#
- , , # DTEA , ,#
- , , # , ,#
- , , # , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- , NEXT$3270 , # , DT ,#
- SDT , MB$PARAM , # SDT , TA ,#
- ABL , FLOW$PARAM , # ABL , DBZ ,#
- UBZ$UBL , FLOW$PARAM , # UBZ , DBL ,#
- UBZ$UBL , XBZ , # UBL , XBZ ,#
- $DO , ILLEGAL , # DO , STREAM ,#
- CON$PARAM , , # HN , AUTOLOG ,#
- CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
- GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
- GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
- GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
- GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
- GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
- ILLEGAL , ILLEGAL , # AB , BR ,#
- ILLEGAL , CON$PARAM , # BS , B1 ,#
- CON$PARAM , ILLEGAL , # B2 , CI ,#
- CON$PARAM , CON$PARAM , # CN , CT ,#
- CON$PARAM , ILLEGAL , # DLC , DLTO ,#
- CON$PARAM , ILLEGAL , # DLX , EP ,#
- ILLEGAL , ILLEGAL , # IN , LI ,#
- ILLEGAL , ILLEGAL , # OP , PA ,#
- CON$PARAM , PL$PARAM , # PG , PL ,#
- GEN$PARAM , ILLEGAL , # PW , SE ,#
- CON$PARAM , CON$PARAM , # FA , XLC ,#
- ILLEGAL , ILLEGAL , # XLX , XLTO ,#
- CON$PARAM , ILLEGAL , # ELO , ELX ,#
- CON$PARAM , ILLEGAL , # ELR , EBO ,#
- ILLEGAL , ILLEGAL , # EBR , CP ,#
- ILLEGAL , ILLEGAL , # IC , OC ,#
- CON$PARAM , ILLEGAL , # LK , EBX ,#
- , GEN$PARAM , # , MC ,#
- ILLEGAL , , # XLY , EOF ,#
- , ILLEGAL , # PAD , RTS ,#
- ILLEGAL , ILLEGAL ; # MCI , MLI #
- CONTROL EJECT;
- # #
- # $3270DEV CODE BEGINS HERE #
- # #
- CRNT$CC[CC"CN"] = CN$DEF; # DEFAULT CN AS CURRENT VALUE #
- CRNT$CC[CC"B1"] = B1$DEF; # DEFAULT B1 AS CURRENT VALUE #
- CRNT$CC[CC"B2"] = B2$DEF; # DEFAULT B2 AS CURRENT VALUE #
- CRNT$CC[CC"CT"] = CT$DEF; # DEFAULT CT AS CURRENT VALUE #
- CRNT$CC[CC"BS"] = -1; # SET BS TO -NOT APPLICABLE- #
- FOR I=3 STEP 1 UNTIL STWC[0]
- DO # FOR EACH VALUE DEC ENTRY #
- BEGIN
- GOTO $3270JMP[STKWID[I]]; # GO TO APPROPRIATE PROC #
- GEN$PARAM:
- GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETER #
- TEST I;
- MB$PARAM:
- MBDEV(STWORD[I],STLNUM[0]); # CHECK MODE4/BSC PARAMETER #
- TEST I;
- FLOW$PARAM:
- FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETER #
- TEST I;
- ILLEGAL: # ALL OTHER PARAMETERS FLAG AS INVALID #
- IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
- THEN
- BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
- NDLEM2(ERR135,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
- BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
- NDLEM2(ERR106,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- CON$PARAM:
- IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
- THEN
- BEGIN
- CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
- END
- ELSE # DT IS NOT CONSOLE #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- PL$PARAM:
- IF CRNT$DT EQ DT"CON" OR # IF DT IS CONSOLE #
- CRNT$DT EQ DT"LP" # DT IS LINEPRINTER #
- THEN
- BEGIN
- CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
- END
- ELSE # DT IS NOT CONSOLE #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- SDT:
- IF CRNT$DT EQ DT"LP" OR # IF DT IS LINE PRINTER #
- STVALNAM[I] EQ "SDT12" OR # IF SDT12 - SDT15 USED #
- STVALNAM[I] EQ "SDT13" OR
- STVALNAM[I] EQ "SDT14" OR
- STVALNAM[I] EQ "SDT15"
- THEN
- BEGIN # CHECK BATCH PARAMETER #
- BTCHDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS CONSOLE OR CARD READER #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- $DO:
- IF CRNT$DT EQ DT"LP" # IF DT IS LINE PRINTER #
- THEN
- BEGIN # CHECK BATCH PARAMETER #
- BTCHDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS NOT LP OR CON #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- ABL:
- IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
- THEN
- BEGIN # CHECK FLOW CONTROL PARAMETER #
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE # DT IS LP OR CR #
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- UBZ$UBL: # IF DT IS CONSOLE, USER, OR LINE PRINTER #
- IF CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"LP" OR
- CRNT$DT EQ DT"USER"
- THEN
- BEGIN
- IF STKWID[I] EQ KID"UBZ" # IF UBZ PARAMETER #
- THEN
- BEGIN
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE
- BEGIN # ELSE, UBL PARAMETER #
- IF (CRNT$DT EQ DT"CON") OR (CRNT$DT EQ DT"USER") OR
- (STVALNUM[I] GQ 1 AND STVALNUM[I] LQ 7)
- THEN
- BEGIN # PASSIVE DEVICES: 1 <= UBL <= 7#
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE
- BEGIN # PARAMETER VALUE OUT OF RANGE #
- CHARVAL=XCDD(STVALNUM[I]);
- NDLEM2(ERR100,STLNUM[0],CHARVAL);
- END
- END
- END
- ELSE
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- XBZ:
- IF CRNT$DT EQ DT"LP" OR
- CRNT$DT EQ DT"USER"
- THEN
- BEGIN
- FLOWDEV(STWORD[I],STLNUM[0]);
- END
- ELSE
- BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
- NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
- END
- TEST I;
- NEXT$3270:
- END
- IF NOT ABL$USED AND # IF ABL NOT SPECIFIED AND DT IS CONSOLE #
- CRNT$DT EQ DT"CON"
- THEN
- BEGIN
- DEVFNFV(FN"ABL",ABL$DEF);
- END
- IF NOT DBL$USED # IF DBL NOT SPECIFIED #
- THEN
- BEGIN
- IF CRNT$DT EQ DT"LP"
- THEN
- VALUE = DBL$DEF$LP; # DEFAULT DBL VALUE FOR LP #
- ELSE
- VALUE = DBL$DEF$CON; # DEFAULT DBL VALUE FOR CON/USER#
- DEVFNFV(FN"DBL",VALUE);
- END
- IF NOT UBL$USED # IF UBL NOT SPECIFIED #
- THEN
- BEGIN
- VALUE = UBL$DEF; # DEFAULT UBL IN VALUE #
- DEVFNFV(FN"UBL",VALUE);
- END
- IF NOT DBZ$USED # IF DBZ NOT SPECIFIED #
- THEN
- BEGIN
- IF CRNT$DT EQ DT"LP"
- THEN
- VALUE = DBZ$DEF$LP; # DEFAULT DBZ VALUE FOR LP #
- ELSE
- VALUE = DBZ$DEF$CON; # DEFAULT DBZ VALUE FOR CON/USER#
- J = B<44,8>VALUE; # MSB OF VALUE #
- DEVFNFV(FN"DBZ$MSB",J);
- J = B<52,8>VALUE; # LSB OF VALUE #
- DEVFNFV(FN"DBZ$LSB",J);
- END
- IF NOT UBZ$USED AND # IF UBZ NOT SPECIFIED #
- (CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"USER")
- THEN
- BEGIN
- VALUE = UBZ$DEF;
- DEVFNFV(FN"UBZ",VALUE);
- END
- IF NOT XBZ$USED AND # IF XBZ NOT SPECIFIED #
- CRNT$DT EQ DT"LP"
- THEN
- BEGIN
- VALUE = XBZ$DEF;
- J = B<44,8>VALUE; # MSB OF VALUE #
- DEVFNFV(FN"XBZ$MSB",J);
- J = B<52,8>VALUE; # LSB OF VALUE #
- DEVFNFV(FN"XBZ$LSB",J);
- END
- IF NOT DO$USED AND # IF DO IS NOT SPECIFIED #
- CRNT$DT EQ DT"LP" # AND DT IS LINE PRINTER #
- THEN
- BEGIN
- DEVFNFV(FN"DO$",DO$DEF); # PUT DO VALUE IN FOR RBF #
- END
- IF NOT PL$USED AND # IF PL NOT SPECIFIED #
- CRNT$DT EQ DT"LP" # AND DT IS LINE PRINTER #
- THEN
- BEGIN
- DEVFNFV(FN"PL",PL$DEF);
- END
- FOR I=CC"CN" STEP 1 UNTIL CC"CT"
- DO # CHECK CONTROL CHAR FOR UNIQUENESS #
- BEGIN
- FOR J=I+1 STEP 1 UNTIL CC"ELX"
- DO
- BEGIN
- IF CRNT$CC[I] EQ CRNT$CC[J]
- THEN
- BEGIN # FLAG ERROR -- VALUE NOT UNIQUE #
- NDLEM2(ERR132,STLNUM[0]," ");
- END
- END
- END
- RETURN; # **** RETURN **** #
- END # $3270DEV #
- CONTROL EJECT;
- # #
- # DEVPR CODE BEGINS HERE #
- # #
- ABL$USED = FALSE; # INITIALIZE FLAGS AND VALUES #
- AUTOCON$FLAG = FALSE;
- AUTOCON$NO = FALSE;
- BIT$POS = FIRST$POS;
- CRNT$DT = DT"UNKNOWN";
- DBL$USED = FALSE;
- DBZ$USED = FALSE;
- DO$USED = FALSE;
- HN$USED = FALSE;
- STREAM$USED = FALSE;
- TA$USED = FALSE;
- UBL$USED = FALSE;
- UBZ$USED = FALSE;
- XBZ$USED = FALSE;
- PL$USED = FALSE;
- GR$SET = S"NO"; # GR$SET INITIALISED TO NO #
- # #
- IF LRWC[1]+MXDVENT GQ LR$LENG
- THEN # IF THERE IS NOT ENOUGH ROOM FOR ENTRY #
- BEGIN
- SSTATS(P<LINE$RECORD>,MXDVENT); # ALLOC MORE SPACE #
- END
- CRNT$DEV = LRWC[1] + 1; # SET POINTER TO CURRENT DEVICE #
- LRWORD[CRNT$DEV] = 0; # CLEAR 1ST WORD OF ENTRY #
- DE$IDENT[CRNT$DEV] = "DEV"; # SET DEVICE ENTRY IDENTIFIER #
- DEWC[CRNT$DEV] = 3; # INITIALIZE ENTRY WORD COUNT #
- LRWC[1] = LRWC[1] + 3; # INCREMENT LINE RECORD WORD CNT#
- LRWORD[CRNT$DEV + 1] = 0; # CLEAR 2ND WORD IN ENTRY #
- LRWORD[CRNT$DEV + 2] = 0; # CLEAR 3RD WORD IN ENTRY #
- DEVCNT = DEVCNT + 1; # INCREMENT DEVICE COUNT #
- IF NOT STLBERR[1] # IF LABEL IS O.K. #
- THEN
- BEGIN
- DENAME[CRNT$DEV + 1] = STLABEL[1]; # PUT LABEL IN DEVICE ENTRY#
- IF LCNI[0] GR 0 # IF GROUP COUNT GREATER THAN ZERO #
- THEN
- BEGIN # FOR EACH GENERATED NAME PUT IN DEV XREF #
- IF DCWC[1]+LCNI[0] GQ DC$LENG
- THEN # IF NEED MORE TABLE SPACE FOR ENTRIES #
- BEGIN
- SSTATS(P<DEVICE$XREF>,LCNI[0]+1); # ALLOCATE MORE SPACE #
- END
- FOR I=STLBPNTR[1] STEP 1 UNTIL (STLBPNTR[1] + LCNI[0]) - 1
- DO
- BEGIN
- DCWC[1] = DCWC[1] + 1; # INCREMENT WORD COUNT #
- DCWORD[DCWC[1]] = 0; # CLEAR ENTRY WORD #
- DCNAME[DCWC[1]] = LABLNAM[I]; # PUT NAME IN ENTRY #
- DCPORT[DCWC[1]] = LABLPORT[I]; # PUT PORT NUMBER #
- DCNID[DCWC[1]] = CRNT$NID; # PUT NPU NODE I.D. #
- END
- IF LCNI[0] EQ 1
- THEN
- BEGIN
- DENAME[CRNT$DEV + 1] = LABLNAM[STLBPNTR[1]];
- END
- END
- ELSE # NO GENERATED NAME FOR DEVICE #
- BEGIN
- DCWC[1] = DCWC[1] + 1; # INCREMENT WORD COUNT #
- IF DCWC[1] GQ DC$LENG
- THEN # IF NEED MORE SPACE FOR ENTRY #
- BEGIN
- SSTATS(P<DEVICE$XREF>,100); # ALLOCATE MORE TABLE SPACE #
- END
- DCWORD[DCWC[1]] = 0; # CLEAR ENTRY WORD #
- DCNAME[DCWC[1]] = STLABEL[1]; # PUT NAME IN ENTRY #
- DCPORT[DCWC[1]] = LCPORT[1]; # PUT PORT NUMBER #
- DCNID[DCWC[1]] = CRNT$NID; # PUT NPU NODE I.D. #
- IF LTYPE EQ "X25" # IF LINE IS X25 #
- THEN
- BEGIN
- IF CRNT$CTYP EQ CTYP"SVC" # IF CURRENT CTYP IS -SVC- #
- THEN
- BEGIN
- DCSVC[DCWC[1]] = TRUE; # SET SVC FLAG IN DEVICE XREF #
- END
- END
- END
- END
- IF STORD1[2] NQ 0 # IF DT IS SPECIFIED #
- THEN
- BEGIN
- IF NOT STVLERR[STORD1[2]] # IF VALUE IS O.K. #
- THEN
- BEGIN
- FOR I=1 STEP 1 UNTIL MXDT # MAP DT TO NUMERICAL VALUE #
- DO
- BEGIN # IF VALUE FOUND IN TABLE #
- IF STVALNAM[STORD1[2]] EQ DTNAME[I]
- THEN
- BEGIN
- CRNT$DT = DT$STAT[I]; # SET CURRENT DEVICE TYPE #
- DEDT[CRNT$DEV + 2] = DT$NUMV[I]; # PUT NUM VALUE IN ENTRY#
- END
- END
- IF CRNT$TIP NQ TIP"USER" AND
- CRNT$DT NQ DT"USER" # IF TIPTYPE AND DT NOT USER #
- THEN
- BEGIN
- IF CRNT$TC NQ TC"USER" AND
- CRNT$TC NQ TC"UNKNOWN"
- THEN # IF TC IS NOT USER OR UNKNOWN #
- BEGIN
- IF B<CRNT$TC,1>DT$TC$MAP[CRNT$DT] NQ 1
- THEN # IF TC AND DT NOT COMPATIBLE #
- BEGIN # FLAG ERROR -- INVALID WITH TC SPECIFIED #
- NDLEM2(ERR110,STLNUM[0],DTNAME[CRNT$DT]);
- CRNT$DT = DT"UNKNOWN"; # CLEAR CURRENT DEVICE TYPE #
- END
- END
- ELSE # TC IS USER OR UNKNOWN #
- BEGIN # IF STIP IS NOT UNKNOWN #
- IF CRNT$STIP NQ STIP"UNKNOWN"
- THEN
- BEGIN # IF STIP AND DT NOT COMPATIBLE #
- IF B<CRNT$STIP,1>DT$STIP$MAP[CRNT$DT] NQ 1
- THEN
- BEGIN # FLAG ERROR -- INVALID WITH STIP SPEC #
- NDLEM2(ERR111,STLNUM[0],DTNAME[CRNT$DT]);
- CRNT$DT = DT"UNKNOWN"; # CLEAR CURRENT DT #
- END
- END
- ELSE # STIP IS UNKNOWN #
- BEGIN # IF TIPTYPE IS NOT UNKNOWN #
- IF CRNT$TIP NQ TIP"UNKNOWN"
- THEN
- BEGIN # IF TIPTYPE AND DT NOT COMPAT #
- IF B<CRNT$TIP,1>DT$TIP$MAP[CRNT$DT] NQ 1
- THEN
- BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
- NDLEM2(ERR112,STLNUM[0],DTNAME[CRNT$DT]);
- CRNT$DT = DT"UNKNOWN"; # CLEAR CURRENT DT #
- END
- END
- END
- END
- END
- END
- END
- ELSE # DT WAS NOT SPECIFIED #
- BEGIN
- IF CRNT$TIP NQ TIP"USER" # IF TIP IS NOT USER #
- THEN
- BEGIN
- IF CRNT$TIP EQ TIP"X25" AND CRNT$STIP EQ STIP"XAA"
- THEN # IF X25 TIP AND XAA STIP #
- BEGIN
- CRNT$DT = DT"AP"; # DEFAULT TO AP #
- DEDT[CRNT$DEV + 2] = DT$NUMV[DT"AP"];
- END
- ELSE
- BEGIN
- CRNT$DT = DT"CON"; # ELSE CONSOLE IS THE DEFAULT #
- END
- END
- END
- IF DEVCNT GR MAXDEV # MAXIMUM NUMBER OF DEVICE STMTS EXCEEDED #
- THEN
- BEGIN # FLAG ERROR -- MAX DEVICE STMTS EXCEEDED #
- NDLEM2(ERR116,STLNUM[0]," ");
- END
- IF CRNT$TIP NQ TIP"USER" AND
- CRNT$TIP NQ TIP"UNKNOWN" AND
- CRNT$DT NQ DT"UNKNOWN" AND
- NOT AUTO$REC # IF TIP IS NOT USER OR UNKNOWN #
- THEN # AND DT IS NOT UNKNOWN #
- BEGIN # AND NOT AN AUTO-REC LINE #
- DT$CNT[CRNT$DT] = DT$CNT[CRNT$DT] + 1; # INCR COUNT FOR DT #
- IF DT$CNT[CRNT$DT] GR DT$MAX[CRNT$DT]
- THEN # IF COUNT EXCEEDS MAX FOR DT #
- BEGIN # FLAG ERROR -- MAX DT EXCEEDED #
- NDLEM2(ERR142,STLNUM[0],DTNAME[CRNT$DT]);
- END
- IF CRNT$TIP EQ TIP"HASP" AND # IF CURRENT TIPTYPE IS HASP #
- (CRNT$DT EQ DT"CP" OR CRNT$DT EQ DT"PL")
- THEN
- BEGIN # -CP- PLUS -PL- MUST NOT EXCEED MAXIMUM #
- ITEMP = DT$CNT[DT"CP"] + DT$CNT[DT"PL"];
- IF ITEMP GR DT$MAX[DT"CP"] # IF SUM EXCEEDS MAXIMUM #
- THEN
- BEGIN # FLAG ERROR - MAX NUM OF DEV EXCEEDED #
- NDLEM2(ERR142,STLNUM[0],DTNAME[CRNT$DT]);
- END
- END
- END
- IF (CRNT$TIP NQ TIP"USER" AND CRNT$TIP NQ TIP"UNKNOWN") AND
- (CRNT$DT NQ DT"USER" AND CRNT$DT NQ DT"UNKNOWN")
- THEN
- BEGIN # IF TIP AND DT NOT USER OR UNKNOWN #
- GOTO DEVPJUMP[CRNT$TIP]; # JUMP TO APPROPRIATE PARAGRAPH #
- ASYNC:
- ASYDEV; # CHECK FOR ASYNC DEVICES #
- GOTO NEXT;
- MODE4:
- MD4DEV; # CHECK FOR MODE4 DEVICES #
- GOTO NEXT;
- HASP:
- HSPDEV; # CHECK FOR HASP DEVICES #
- GOTO NEXT;
- X25:
- X25DEV; # CHECK FOR X25 DEVICES #
- GOTO NEXT;
- BSC:
- BSCDEV; # CHECK FOR BSC DEVICES #
- GOTO NEXT;
- $3270:
- $3270DEV; # CHECK FOR 3270 DEVICES #
- GOTO NEXT;
- NEXT:
- END
- ELSE # TIP OR DT IS USER OR UNKNOWN #
- BEGIN
- USRDEV; # CHECK USER DEVICES #
- END
- COUNT$LK; # CALL LOGLINK COUNTER #
- IF CRNT$TIP NQ TIP"USER" AND # IF TIP IS NOT USER #
- CRNT$DT EQ DT"CON" # AND DT IS CONSOLE #
- THEN
- BEGIN
- IF NOT HN$USED # IF HN WAS NOT SPECIFIED #
- THEN
- BEGIN
- IF LL$CNT EQ 1 # IF ONLY ONE LOGLINK TO THIS NPU #
- THEN
- BEGIN # DEFAULT HN VALUE #
- DEVFNFV(FN"HN",LLTHNID[LLT$PNTR]);
- IF NOT AUTOCON$FLAG AND # IF NOT ALREADY SPEC AS -YES- #
- NOT AUTOCON$NO # AND NOT SPECIFIEC AS -NO- #
- THEN
- BEGIN
- DEVFNFV(FN"AUTOCON",TRUE);# DEFAULT AUTO CONNECT #
- END
- END
- ELSE # NONE OR MORE THAN ONE LOGLINK #
- BEGIN
- IF AUTOCON$FLAG
- # IF AUTO CONNECT SPECIFIED #
- THEN
- BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
- NDLEM2(ERR103,STLNUM[0],"HN");
- END
- ELSE
- BEGIN
- IF SAVE$ENTRY GR 0
- # IF MORE THAN ONE LOGLINK IS FOUND
- AND HOST NAMES ARE THE SAME #
- THEN
- BEGIN
- DEVFNFV(FN"HN",LLTHNID[SAVE$ENTRY]);
- # DEFAULT TO THE LAST MATCH FOUND #
- IF NOT AUTOCON$FLAG AND NOT AUTOCON$NO
- THEN # IF AUTOCON NOT SPECIFIED AS YES OR NO #
- BEGIN
- DEVFNFV(FN"AUTOCON",TRUE); # DEFAULT TO AUTOCON YES #
- END
- END
- END
- END
- END
- END
- DEVFNFV(FN"RIC",RIC$FLAG);
- # NUMBER OF 8-BIT PAD ENTRIES #
- DEPAD[CRNT$DEV + 1] = CRNT$DEPAD;
- FOR I = 0 STEP 1 UNTIL CRNT$DEPAD-1
- DO
- BEGIN # ASSIGN PAD VALUES FOR THIS DEVICE #
- PWI = I*8/60 + 1; # PAD WORD INDEX (1-RELATIVE)#
- PDI=I*8 -(PWI-1)*60; # PAD WORD DISPLACEMENT INDEX (0-RELATIVE)#
- IF PDI LS 56
- THEN
- BEGIN # 8-BIT ENTRIES DO NOT CROSS WORD BOUNDARY#
- ITEMP = B<PDI,8>CRNT$PAD[PWI];
- END
- ELSE
- BEGIN # NEW WORD BOUNDARY #
- B<52,4>ITEMP = B<PDI,4>CRNT$PAD[PWI]; # FIRST 4-BIT NIBBLE #
- B<56,4>ITEMP = B<0,4>CRNT$PAD[PWI+1]; # SECOND " " #
- END
- # PAD FNS ASSIGNED IN CONSEC. SEQ., STARTING FROM PAD$FN$FIRST #
- DEVFNFV(PAD$FN$FIRST+I,ITEMP);
- # I=10/I DIVIDE BY 0 ERROR: TRAP #
- END
- DEWC[CRNT$DEV] = (LRWC[1] - CRNT$DEV)+ 1;
- TEWC[CRNT$TERM] = TEWC[CRNT$TERM] + DEWC[CRNT$DEV];
- # SET TERM ENTRY WC #
- RETURN; # **** RETURN **** #
- END # DEVPR #
- CONTROL EJECT;
- PROC LINFNFV(FN,FV);
- BEGIN
- *IF,DEF,IMS
- #
- ** LINFNFV - MAKE FNFV ENTRY FOR LINE.
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROC PUTS AN FNFV PAIR INTO THE CURRENT LINE CONFIGURE ENTRY.
- *
- * PROC LINFNFV(FN,FV)
- *
- * ENTRY FN = FIELD NUMBER.
- * FV = FIELD VALUE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * INCREMENT FNFV PAIR COUNT IN CURRENT LINE CONFIGURE ENTRY.
- * INCREMENT ENTRY WORD COUNT.
- * PUT FNFV PAIR IN ENTRY.
- *
- #
- *ENDIF
- ITEM FN; # FIELD NUMBER #
- ITEM FV; # FIELD VALUE #
- # #
- # LINFNFV CODE BEGINS HERE #
- # #
- LCFNFV[3] = LCFNFV[3] + 1; # INCREMENT FNFV COUNT #
- LCWC[0] = LCWC[0] + 1; # INCREMENT WORD COUNT OF TABLE #
- LCFN[LCWC[0]] = FN; # PUT FIELD NUMBER IN ENTRY ONE #
- LCFV[LCWC[0]] = FV; # PUT FIELD VALUE IN ENTRY ONE #
- RETURN; # **** RETURN **** #
- END # LINFNFV #
- CONTROL EJECT;
- PROC LINGRPR;
- BEGIN
- *IF,DEF,IMS
- #
- ** LINGRPR - LINE/GROUP STATEMENT PROC
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CHECKS PARAMETERS ON LINE AND GROUP STATEMENTS.
- *
- * PROC LINGRPR
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * CLEAR AND INITIALIZE FLAG AND VALUES.
- * CLEAR LINE CONFIG ENTRY BUFFER.
- * IF LABEL IS O.K.,
- * PUT LABEL FROM STMT ENTRY INTO LINE XREF TABLE.
- * PUT LABEL IN LINE RECORD.
- * IF CURRENT STMT IS -GROUP-,
- * DEFAULT GROUP COUNT IN LINE RECORD.
- * DEFAULT NI VALUE IN LINE CONFIG ENTRY.
- * PUT LABEL FROM LABEL TABLE INTO LINE XREF TABLE.
- * PUT PORT VALUE FROM LABEL TABLE INTO LINE XREF TABLE.
- * PUT CURRENT NODE I.D. INTO LINE XREF TABLE.
- * PUT CURRENT NODE I.D. INTO LINE RECORD.
- * IF LTYPE WAS SPECIFIED,
- * THEN,
- * IF VALUE IS O.K.
- * MAP NUMERIC VALUE FOR LTYPE
- * PUT NUMERIC VALUE FOR LTYPE INTO LINE CONFIG ENTRY.
- * OTHERWISE,
- * FLAG ERROR REQUIRED PARAMETER MISSING.
- * SET CURRENT LTYPE TO UNKNOWN.
- * IF TIPTYPE WAS SPECIFIED,
- * THEN,
- * IF VALUE IS O.K.
- * MAP NUMERIC VALUE FOR TIPTYPE
- * IF TIPTYPE IS USER,
- * THEN,
- * SET CURRENT TIPTYPE TO USER
- * PUT NUMERIC VALUE INTO LINE CONFIG ENTRY.
- * OTHERWISE,
- * SET CURRENT TIPTYPE
- * PUT NUMERIC VALUE INTO LINE CONFIG ENTRY.
- * IF LTYPE IS NOT UNKNOWN,
- * IF LTYPE IS NOT COMPATIBLE WITH TIPTYPE,
- * FLAG ERROR -- LTYPE AND TIPTYPE NOT COMPATIBLE.
- * OTHERWISE,
- * SET CURRENT TIPTYPE TO UNKNOWN.
- * IF AUTO OR XAUTO WAS SPECIFIED,
- * IF CURRENT TIPTYPE IS -X25-,
- * THEN
- * FLAG ERROR -- PARAMETER NOT ALLOWED WITH TIPTYPE SPECIFIED.
- * OTHERWISE,
- * IF VALUE IS -YES-
- * SET AUTO-REC FLAG IN LINE CONFIG ENTRY.
- * SET AUTO-REC FLAG IN LINE RECORD.
- * IF XAUTO IS SPECIFIED
- * SET HIGH SPEED FLAG IN LINE CONFIG ENTRY.
- * FOR EACH VALUE DECLARATION,
- * SELECT CASE THAT APPLIES,
- * CASE 1(AL,PORT,NI,DI,SL,P90,P91,...,P99):
- * CHECK GENERAL LINE PARAMETER.
- * CASE 2(DFL,FRAME,RTIME,RCOUNT,NSVC,PSN,DCE,DTEA):
- * IF TIPTYPE IS X25 OR LTYPE IS X.25 AND TIPTYPE IS USER,
- * THEN,
- * CHECK X.25 PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- PARAMETER NOT ALLOWED WITH TIPTYPE SPECIFIED
- * CASE 3(LSPEED):
- * IF TIPTYPE NOT ASYNC OR USER,
- * THEN,
- * FLAG ERROR -- LSPEED ALLOWED ON ASYNC NON-AUTO REC LINES.
- * OTHERWISE,
- * IF TIPTYPE IS ASYNC AND LINE IS AUTO-REC,
- * THEN,
- * FLAG ERROR -- ALLOWED ON ASYNC NON-AUTO REC LINES ONLY.
- * OTHERWISE,
- * MAP NUMERIC VALUE FOR LSPEED.
- * PUT VALUE IS LINE CONFIG ENTRY.
- * CASE 4(ARSPEED):
- * CHECK ASYNC PARAMETERS.
- * IF PORT WAS NOT SPECIFIED,
- * FLAG ERROR -- REQUIRED PARAMETER MISSING.
- * IF AL WAS NOT SPECIFIED,
- * MAKE FNFV ENTRY FOR DEFAULT AL.
- * IF AESPEED NOT SPECIFIED,
- * IF TIPTYPE IS ASYNC AND EITHER AUTO OR XAUTO IS SET TO YES,
- * SET ARSPEED FLAG TO TRUE IN LINE CONFIGURATION RECORD.
- * IF TIPTYPE IS ASYNC,
- * IF LSPEED WAS NOT SPECIFIED AND LINE IS NON-AUTO REC.
- * DEFAULT LSPEED IN LINE CONFIG ENTRY.
- * IF TIPTYPE IS X.25,
- * IF DFL,FRAME,RTIME,PSN NOT SPECIFIED,
- * FLAG ERROR -- REQUIRED PARAMETER MISSING.
- * IF RCOUNT,DCE,ACCTYPE NOT SPECIFIED,
- * PUT DEFAULT VALUE IN LINE CONFIG ENTRY.
- * IF TIPTYPE IS X.25 OR LTYPE IS X.25 AND TIPTYPE IS USER,
- * IF NSVC WAS NOT SPECIFIED
- * DEFAULT NSVC VALUE INTO LINE CONFIG ENTRY.
- * IF LINE NOT AUTO-REC,
- * DEFAULT MAXIMUM TERMINAL STATEMENTS BY TIPTYPE.
- *
- #
- *ENDIF
- #
- **** PROC LINGRPR - XREF LIST BEGIN.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKE ENTRIES IN ERROR-2-FILE #
- END
- #
- ****
- #
- DEF DEF$DCE # 0 #; # DEFAULT VALUE FOR DCE #
- DEF DEF$LSPD # 4 #; # DEFAULT VALUE FOR LSPEED #
- DEF DEF$RCNT # 15 #; # DEFAULT VALUE FOR RCOUNT #
- DEF LC$FIX$ENT # 3 #; # LENGTH OF FIXED PORTION OF LC ENTRY #
- DEF MXDTEA # 2 #; # MAXIMUM LENGTH OF DTEA VALUE ALLOWED #
- DEF ZERO # O"33" #; # DISPLAY CODE VALUE FOR ZERO #
- ITEM DCEUSED B; # DCE DECLARED FLAG #
- ITEM DCE$FLG B; # SET IF DCE WAS SPECIFIED -YES- #
- ITEM DFLUSED B; # DFL DECLARED FLAG #
- ITEM DTEAUSED B; # DTEA SPECIFIED FLAG #
- ITEM FRMUSED B; # FRAME DECLARED FLAG #
- ITEM I; # SCRATCH ITEM #
- ITEM J; # SCRATCH ITEM #
- ITEM LSPDUSED B; # LSPEED DECLARED FLAG #
- ITEM ARSUSED B; # ARSPEED DECLARED FLAG #
- ITEM NSVCUSED B; # NSVC DECLARED FLAG #
- ITEM PORTUSED B; # PORT DECLARED FLAG #
- ITEM PSNUSED B; # PSN DECLARED FLAG #
- ITEM RCNTUSED B; # RCOUNT DECLARED FLAG #
- ITEM RTMUSED B; # RTIME DECLARED FLAG #
- ITEM AL$USED B; # AL DECLARED FLAG #
- ARRAY DTEA$VALUE [0:0] S(1);
- BEGIN
- ITEM DTEA$VL1 U(00,00,04); # 1ST DIGIT OF DTEA VALUE #
- ITEM DTEA$VL2 U(00,04,04); # 2ND DIGIT OF DTEA VALUE #
- ITEM DTEA$VAL U(00,00,08); # DTEA VALUE #
- END
- DEF MXLTYPE # 9 #; # MAXIMUM NUMBER OF LINE TYPES #
- ARRAY LTYPE$TABLE [1:MXLTYPE] S(2); # LINE TYPE TABLE #
- BEGIN
- ITEM LT$VAL C(0,0,7) = ["S1", # LTYPE VALUES #
- "S2",
- "S3",
- "S4",
- "A1",
- "A2",
- "A6",
- "H1",
- "H2"
- ];
- ITEM LT$NUMV (0,42,18) = [1, # S1 LTYPE NUMERICAL VALUES#
- 2, # S2 #
- 3, # S3 #
- 11, # S4 #
- 6, # A1 #
- 7, # A2 #
- 9, # A6 #
- 10, # H1 #
- 12 # H2 #
- ];
- ITEM LT$CAT C(1,0,10) = ["SYNC", # S1 LINE TYPE CATEGORY #
- "SYNC", # S2 #
- "SYNC", # S3 #
- "SYNC", # S4 #
- "ASYNC", # A1 #
- "ASYNC", # A2 #
- "ASYNC", # A6 #
- "X25", # H1 #
- "X25" # H2 #
- ];
- END
- DEF MXTTYPE # 9 #; # MAXIMUM NUMBER OF TIP-TYPES #
- ARRAY TIPTYPE$TABL [1:MXTTYPE] S(1); # TIPTYPE TABLE #
- BEGIN
- ITEM TT$VAL C(0,0,7) = ["ASYNC", # TIPTYPE VALUES #
- "MODE4",
- "HASP",
- "X25",
- "BSC",
- "TT12",
- "TT13",
- "TT14",
- "3270"
- ];
- ITEM TT$NUMV (0,42,18) = [1, # ASYNC TIPTYPE NUMERICAL VALUE#
- 2, # MODE4 #
- 3, # HASP #
- 4, # X25 #
- 5, # BSC #
- 12, # USER -- TT12 #
- 13, # USER -- TT13 #
- 14, # USER -- TT13 #
- 15 # 3270 #
- ];
- END
- DEF MXLSPD # 11 #; # MAXIMUM NUMBER OF LINE SPEEDS #
- ARRAY LSPD$TABLE [1:MXLSPD] S(1); # LINE SPEED TABLE #
- BEGIN
- ITEM LST$VAL C(0,0,7) = ["110",# LINE SPEED VALUES #
- "134",
- "150",
- "300",
- "600",
- "1200",
- "2400",
- "4800",
- "9600",
- "19200",
- "38400"
- ];
- ITEM LST$NUMV (0,42,18) = [1, # 110 LSPEED NUMERICAL VALUES #
- 2, # 134 #
- 3, # 150 #
- 4, # 300 #
- 5, # 600 #
- 6, # 1200 #
- 7, # 2400 #
- 8, # 4800 #
- 9, # 9600 #
- 10, # 19200 #
- 11 # 38400 #
- ];
- END
- ARRAY X25$PARAMS [KID"DFL":KID"W"] S(1);
- BEGIN
- ITEM X25$PNAM C(00,00,10) = ["DFL", # X25 PARAM NAMES #
- "FRAME",
- "RTIME",
- "RCOUNT",
- "NSVC",
- "PSN",
- "DCE",
- "DTEA",
- ,
- "LCN",
- ,,,,,,,,,,,,
- "W",
- ];
- END
- SWITCH LINJUMP NEXT , , # UNKNOWN , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , GEN$PARAM , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- GEN$PARAM , GEN$PARAM , # NI , PORT ,#
- NEXT , NEXT , # LTYPE , TIPTYPE ,#
- NEXT , GEN$PARAM , # AUTO , AL ,#
- ASY$PARAM , X25$PARAM , # LSPEED , DFL ,#
- X25$PARAM , X25$PARAM , # FRAME , RTIME ,#
- X25$PARAM , X25$PARAM , # RCOUNT , NSVC ,#
- X25$PARAM , X25$PARAM , # PSN , DCE ,#
- X25$PARAM , ASY$PARAM , # DTEA , ARSPEED ,#
- X25$PARAM , GEN$PARAM , # LCN , IMDISC ,#
- GEN$PARAM , , # RC , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- NEXT , , # XAUTO , DT ,#
- , , # SDT , TA ,#
- , , # ABL , DBZ ,#
- , , # UBZ , DBL ,#
- , , # UBL , XBZ ,#
- , , # DO , STREAM ,#
- , , # HN , AUTOLOG ,#
- , , # AUTOCON , PI ,#
- GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
- GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
- GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
- GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
- GEN$PARAM , GEN$PARAM ; # P98 , P99 #
- CONTROL EJECT;
- PROC GENLINE;
- BEGIN
- *IF,DEF,IMS
- #
- ** GENLINE - CHECK GENERAL LINE PARAMETERS.
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CHECKS PARAMETERS WHICH ARE COMMON TO ALL TIPTYPES.
- *
- * PROC GENLINE
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * SELECT THE CASE THAT APPLIES,
- * CASE 1(PORT):
- * IF VALUE IS O.K.,
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * PUT VALUE IN LINE RECORD.
- * PUT VALUE IN LINE XREF ENTRY.
- * IF STATEMENT IS NOT -GROUP-,
- * PUT VALUE IN LINE RECORD INDEX.
- * CHECK IF PORT VALUE IS UNIQUE FOR CURRENT NPU.
- * CASE 2(DI):
- * IF VALUE IS O.K.
- * IF VALUE IS -YES-,
- * SET STATUS FLAG IN LINE CONFIG ENTRY.
- * CASE 3(NI):
- * IF VALUE IS O.K.
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * PUT THE VALUE MINUS ONE IN THE LINE RECORD
- * PUT VALUE IN LINE CONFIG ENTRY.
- * IF LABEL IS O.K. AND NI VALUE IS GREATER THAN ONE,
- * FOR EACH ITERATION OF PORT
- * INCREMENT LINE XREF TABLE ENTRY COUNT.
- * CLEAR NEXT ENTRY.
- * PUT CURRENT NODE I.D. IN ENTRY.
- * PUT GENERATED NAME FROM LABEL TABLE IN ENTRY.
- * CHECK IF PORT IS IN RANGE.
- * IF IN RANGE,
- * PUT PORT VALUE IN ENTRY.
- * CHECK IF PORT IS UNIQUE FOR CURRENT NPU.
- * CASE 4(AL):
- * IF VALUE IS WITHIN RANGE,
- * MAKE FNFV ENTRY FOR AL SPECIFIED.
- * CASE 5(SL,P90,P91,P92,...,P99):
- * IF VALUE IS O.K.
- * IF VALUE IS NOT -NONE-,
- * CHECK IF VALUE IS IN RANGE,
- * IF IN RANGE,
- * PUT VALUE IN LINE CONFIG ENTRY.
- *
- #
- *ENDIF
- #
- **** PROC GENLINE - XREF LIST BEGIN.
- #
- XREF
- BEGIN
- PROC NDLCKPT; # CHECK UNIQUENESS OF PORT NUMBER #
- PROC NDLCKRG; # CHECK IF VALUE IS IN RANGE #
- END
- #
- ****
- #
- DEF DI$VAL # 1 #; # VALUE FOR DISABLED #
- ITEM GENL$STAT B; # RETURNED STATUS FROM CHECK ROUTINES #
- ITEM J; # SCRATCH ITEM #
- # #
- SWITCH GENLJUMP NEXT$PARAM , , # UNKNOWN , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , DI , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- NI , PORT , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , AL , # AUTO , AL ,#
- , , # LSPEED , DFL ,#
- , , # FRAME , RTIME ,#
- , , # RCOUNT , NSVC ,#
- , , # PSN , DCE ,#
- , , # DTEA , ,#
- , IMDISC , # , IMDISC ,#
- RC , , # RC , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , , # MREC , W ,#
- , , # CTYP , NCIR ,#
- , , # NEN , COLLECT ,#
- , , # , DT ,#
- , , # SDT , TA ,#
- , , # ABL , DBZ ,#
- , , # DBL , UBZ ,#
- , , # UBL , XBZ ,#
- , , # DO , STREAM ,#
- , , # HN , AUTOLOG ,#
- , , # AUTOCON , PRI ,#
- USER$PARAM , USER$PARAM , # P90 , P91 ,#
- USER$PARAM , USER$PARAM , # P92 , P93 ,#
- USER$PARAM , USER$PARAM , # P94 , P95 ,#
- USER$PARAM , USER$PARAM , # P96 , P97 ,#
- USER$PARAM , USER$PARAM ; # P98 , P99 #
- CONTROL EJECT;
- # #
- # GENLINE CODE BEGINS HERE #
- # #
- GOTO GENLJUMP[STKWID[I]]; # JUMP BY KEYWORD I.D. #
- PORT:
- PORTUSED = TRUE; # SET PORT SPECIFIED FLAG #
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(STVALNUM[I],USR$WID1,NUM"DEC",GENL$STAT);
- # MAX USER VALUE #
- END
- ELSE
- BEGIN
- NDLCKRG(STKWID[I],STVALNUM[I],GENL$STAT); # CHECK FOR MAX #
- # NORMAL VALUE #
- END
- IF GENL$STAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN
- LRPORT[2] = STVALNUM[I]; # PUT PORT IN LINE-RECORD #
- LCPORT[1] = STVALNUM[I]; # PUT PORT IN LINE-CONFIG-RECORD#
- IF STSTID[0] NQ STID"GROUP" # IF THIS STMT IS GROUP #
- THEN
- BEGIN
- LCTPORT[LCTWC[1]] = STVALNUM[I]; # PUT PORT IN LINE XREF #
- END
- NDLCKPT(STVALNUM[I],CRNT$NID,GENL$STAT); # CHECK PORT #
- END
- END
- GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
- DI:
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF STVALNAM[I] EQ "YES" # IF VALUE IS -YES- #
- THEN
- BEGIN
- LCST[3] = DI$VAL; # SET STATUS FLAG IN LINE-CONFIG#
- END # RECORD #
- END
- GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
- IMDISC:
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF STVALNAM[I] EQ "YES" # IF YES IS SPECIFIED #
- THEN
- BEGIN
- LINFNFV(FN"IMD",TRUE); # STORE LINE FNFV #
- END
- ELSE
- BEGIN
- LINFNFV(FN"IMD",FALSE); # STORE LINE FNFV #
- END
- END
- GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
- NI:
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(STVALNUM[I],USR$WID1,NUM"DEC",GENL$STAT);
- # USER VALUE #
- END
- ELSE
- BEGIN
- NDLCKRG(STKWID[I],STVALNUM[I],GENL$STAT); # CHECK FOR MAX #
- # NORMAL VALUE #
- END
- IF GENL$STAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN
- LRGC[1] = STVALNUM[I] - 1; # PUT -NI- IN LINE-RECORD #
- LCNI[0] = STVALNUM[I]; # PUT -NI- IN LINE-CONFIG-RECORD#
- IF LCTWC[1]+LCNI[0] GQ LCT$LENG
- THEN # IF NEED MORE SPACE FOR ENTRIES #
- BEGIN
- SSTATS(P<LINE$XREF>,LCNI[0]+1); # ALLOCATE MORE TABLE SPACE#
- END
- IF NOT STLBERR[1] AND STVALNUM[I] GR 1
- THEN # IF LABEL IS O.K. AND -NI- GREATER THAN 1#
- BEGIN # MAKE ENTRY IN LINE-XREF FOR EACH LABEL#
- FOR J=STLBPNTR[1]+1 STEP 1 UNTIL (STLBPNTR[1] + LCNI[0]) - 1
- DO # BEGINNING WITH THE SECOND LABEL #
- BEGIN
- LCTWC[1] = LCTWC[1] + 1; # INCREMENT ENTRY COUNT #
- LCTWORD[LCTWC[1]] = 0; # CLEAR ENTRY #
- LCTNAME[LCTWC[1]] = LABLNAM[J]; # ENTER LABEL #
- LCTNID[LCTWC[1]] = CRNT$NID; # ENTER NPU NODE I.D. #
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER #
- THEN
- BEGIN
- USR$RANGE(LABLPORT[J],USR$WID1,NUM"DEC",GENL$STAT);
- # VALUE CHECK#
- END
- ELSE
- BEGIN
- NDLCKRG(KID"PORT",LABLPORT[J],GENL$STAT); # CHECK NORMAL#
- # RANGE #
- END
- IF GENL$STAT # IF PORT IS WITHIN RANGE #
- THEN
- BEGIN
- LCTPORT[LCTWC[1]] = LABLPORT[J]; # PUT -PORT- IN XREF #
- NDLCKPT(LABLPORT[J],CRNT$NID,GENL$STAT); # CHECK PORT #
- END
- END
- END
- END
- END
- GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
- AL:
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(STVALNUM[I],USR$WID1,NUM"DEC",GENL$STAT);
- END
- ELSE
- BEGIN
- NDLCKRG(STKWID[I],STVALNUM[I],GENL$STAT); # CHECK RANGE #
- END
- IF GENL$STAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN # ENTER FNFV PAIR IN RECORD #
- AL$USED = TRUE; # SET AL USED FLAG #
- B<38,1>STVALNUM[I] = 1; # SET VALID FLAG #
- LINFNFV(FN"AL",STVALNUM[I]);
- END
- END
- GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
- RC:
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF STVALNAM[I] EQ "YES" # IF YES IS SPECIFIED #
- THEN
- BEGIN
- LINFNFV(FN"RC",TRUE); # STORE LINE FNFV #
- END
- ELSE
- BEGIN
- LINFNFV(FN"RC",FALSE); # STORE LINE FNFV #
- END
- END
- GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
- USER$PARAM:
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(STVALNUM[I],USR$WID1,NUM"HEX",GENL$STAT);
- END
- ELSE
- BEGIN
- NDLCKRG(STKWID[I],STVALNUM[I],GENL$STAT); # CHECK FOR MAX #
- # VALUE RANGE #
- END
- IF GENL$STAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY IN RECORD#
- LINFNFV(STKWID[I]+10,STVALNUM[I]);
- END
- END
- GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
- NEXT$PARAM:
- RETURN; # **** RETURN **** #
- END # GENLINE #
- CONTROL EJECT;
- PROC X25LINE;
- BEGIN
- *IF,DEF,IMS
- #
- ** X25LINE - CHECK X.25 LINE PARAMETERS
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CHECKS PARAMETERS LEGAL FOR X.25 LINES.
- *
- * PROC X25LINE
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * SELECT CASE THAT APPLIES
- * CASE 1(DFL,FRAME,RCOUNT,NSVC):
- * IF VALUE IS O.K.,
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * PUT VALUE IN LINE CONFIG ENTRY.
- * CASE 2(RTIME):
- * IF VALUE IS O.K.,
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * DIVIDE VALUE BY 100.
- * PUT RESULT IN LINE CONFIG ENTRY.
- * CASE 3(PSN):
- * IF VALUE IS O.K.,
- * MAP PSN TO NUMERIC VALUE.
- * PUT VALUE IN LINE CONFIG ENTRY.
- * CASE 4(DCE):
- * IF VALUE IS O.K.,
- * IF VALUE IS -YES-,
- * THEN,
- * PUT VALUE OF TRUE IN LINE CONFIG ENTRY.
- * OTHERWISE,
- * PUT VALUE OF FALSE IN LINE CONFIG ENTRY.
- * CASE 5(DTEA):
- * IF VALUE IS WITH RANGE,
- * PERFORM FNFV ENTRY FOR DTEA SPECIFIED.
- *
- #
- *ENDIF
- #
- **** PROC X25LINE - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLCKRG; # CHECKS IF VALUE IS WITHIN RANGE #
- FUNC XCDD U; # CONVERT INTEGER TO DECIMAL DISPLAY CODE #
- END
- #
- ****
- #
- ITEM ITEMP; # INTEGER TEMPORARY #
- ITEM J; # SCRATCH ITEM #
- ITEM VALUE; # INTEGER TEMPORARY FOR VALUE #
- ITEM X25$STAT B; # RETURNED STATUS FROM RANGE CHECK PROC #
- ARRAY ERROR$WORD [0:0] S(1); # BUFFER WORD FOR ERROR MESSAGE #
- BEGIN
- ITEM PARAM C(0,0,4) = [" "]; # PARAMETER #
- ITEM SLASH C(0,24,1) = ["/"];
- ITEM PVALUE U(0,30,30); # VALUE #
- END
- DEF MXPSN # 10 #; # MAXIMUM NUMBER OF PSN VALUES #
- ARRAY PSN$TABLE [1:MXPSN] S(1);
- BEGIN
- ITEM PSN$VAL C(0,0,7) = [ "DATAPAC", # PSN VALUES #
- "TELENET",
- "TRNSPAC",
- "TYMNET ",
- "CDSN ",
- "UNINET",
- "C120 ",
- "PSN253 ",
- "PSN254 ",
- "PSN255 "
- ];
- ITEM PSN$NUMV (0,42,18) = [ 1, # PSN NUMERICAL VALUES#
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 253,
- 254,
- 255
- ];
- END
- SWITCH X25JUMP , , # UNKNOWN , NODE ,#
- , , # VARIANT , OPGO ,#
- , , # DMP , LLNAME ,#
- , , # , ,#
- , , # , ,#
- , , # HNAME , LOC ,#
- , , # , ,#
- , , # , ,#
- , , # , ,#
- , , # NCNAME , DI ,#
- , , # N1 , P1 ,#
- , , # N2 , P2 ,#
- , , # NOLOAD1 , NOLOAD2 ,#
- , , # , ,#
- , , # , ,#
- , , # NI , PORT ,#
- , , # LTYPE , TIPTYPE ,#
- , , # AUTO , SL ,#
- , DFL , # LSPEED , DFL ,#
- FRAME , RTIME , # FRAME , RTIME ,#
- RCOUNT , NSVC , # RCOUNT , NSVC ,#
- PSN , DCE , # PSN , DCE ,#
- DTEA , , # DTEA , ,#
- LCN , , # LCN , ,#
- , , # , ,#
- , , # STIP , TC ,#
- , , # RIC , CSET ,#
- , , # TSPEED , CA ,#
- , , # CO , BCF ,#
- , ; # MREC , W #
- # #
- # X25LINE CODE BEGINS HERE #
- # #
- GOTO X25JUMP[STKWID[I]]; # CASE ON KEYWORD I.D. #
- DFL:
- DFLUSED = TRUE; # SET DFL SPECIFIED FLAG #
- IF NOT STVLERR[I] # IF THE VALUE IS O.K. #
- THEN
- BEGIN # CHECK IF VALUE IS WITHIN RANGE#
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(STVALNUM[I],USR$WID2,NUM"DEC",X25$STAT);
- END
- ELSE
- BEGIN
- NDLCKRG(STKWID[I],STVALNUM[I],X25$STAT); # NORMAL RANGE #
- # CHECKS #
- END
- IF X25$STAT # IF IT IS IN RANGE #
- THEN # STORE DFL VALUE IN LINE #
- BEGIN # CONFIGURE RECORD #
- IF CRNT$TIP EQ TIP"X25"
- THEN
- BEGIN
- ITEMP = 16; # SET TO MINIMUM DPLS VALUE #
- FOR J=4 STEP 1 WHILE ITEMP LS STVALNUM[I]
- DO # DETERMINE VALUE (POWER OF TWO) #
- BEGIN
- ITEMP = ITEMP * 2; # SET TO NEXT POWER OF TWO #
- END
- LINFNFV(FN"DFL",J); # STORE DFL VALUE #
- IF STVALNUM[I] NQ ITEMP
- THEN # VALUE IS NOT POWER OF 2 #
- BEGIN # FLAG WARNING #
- PARAM[0] = X25$PNAM[STKWID[I]]; # PARAMETER NAME #
- PVALUE[0] = XCDD(ITEMP); # STORE VALUE #
- NDLEM2(ERR137,STLNUM[0],ERROR$WORD);
- END
- END
- ELSE # MUST BE A USER TIPTYPE #
- BEGIN
- LINFNFV(FN"DFL",STVALNUM[I]); # STORE DFL VALUE #
- END
- END
- END
- GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
- FRAME:
- FRMUSED = TRUE; # SET FRAME SPECIFIED FLAG #
- IF NOT STVLERR[I] # IF THE VALUE IS O.K. #
- THEN
- BEGIN # CHECK IF VALUE IS WITHIN RANGE#
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(STVALNUM[I],USR$WID1,NUM"DEC",X25$STAT);
- END
- ELSE
- BEGIN
- NDLCKRG(STKWID[I],STVALNUM[I],X25$STAT); # NORMAL RANGE #
- # CHECKS #
- END
- IF X25$STAT # IF VALUE IS WITHIN RANGE #
- THEN # STORE FRAME VALUE #
- BEGIN
- LINFNFV(FN"FRAME",STVALNUM[I]);
- END
- END
- GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
- LCN:
- IF NOT STVLERR[I] # IF THE VALUE IS O.K. #
- THEN
- BEGIN
- NDLCKRG(STKWID[I],STVALNUM[I],X25$STAT); # CHECK RANGE #
- IF X25$STAT # IF VALUE IS WITHIN RANGE #
- THEN # STORE LCN VALUE #
- BEGIN
- LINFNFV(FN"LCN",STVALNUM[I]);
- END
- END
- GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
- RTIME:
- RTMUSED = TRUE; # SET RTIME SPECIFIED FLAG #
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN # CHECK IF VALUE IS WITHIN RANGE#
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(STVALNUM[I],USR$WID1*100,NUM"DEC",X25$STAT);
- # MULTIPLES OF 100#
- END
- ELSE
- BEGIN
- NDLCKRG(STKWID[I],STVALNUM[I],X25$STAT); # NORMAL RANGE #
- # CHECKS #
- END
- IF X25$STAT # IF VALUE IS IN RANGE #
- THEN # DIVIDE THE VALUE BY 100 #
- BEGIN # AND ROUND UP TO THE NEAREST #
- ITEMP = STVALNUM[I]; # MULTIPLE OF 100 #
- FOR VALUE=0 STEP 1 WHILE ITEMP GR 0
- DO
- BEGIN
- ITEMP = ITEMP - 100;
- END # STORE VALUE IN LIN$CON$REC #
- LINFNFV(FN"RTIME",VALUE);
- END
- END
- GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
- RCOUNT:
- RCNTUSED = TRUE; # SET RCOUNT SPECIFIED FLAG #
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN # CHECK IF VALUE IS WITHIN RANGE#
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(STVALNUM[I],USR$WID1,NUM"DEC",X25$STAT);
- END
- ELSE
- BEGIN
- NDLCKRG(STKWID[I],STVALNUM[I],X25$STAT); # NORMAL RANGE #
- # CHECKS #
- END
- IF X25$STAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN # STORE RCOUNT IN LIN$CON$REC #
- LINFNFV(FN"RCOUNT",STVALNUM[I]);
- END
- END
- GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
- NSVC:
- NSVCUSED = TRUE; # SET NSVC SPECIFIED FLAG #
- NSVCERR = TRUE; # SET NSVC ERROR FLAG #
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN # CHECK IF VALUE IS WITHIN RANGE#
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(STVALNUM[I],USR$WID2,NUM"DEC",X25$STAT);
- END
- ELSE
- BEGIN
- NDLCKRG(STKWID[I],STVALNUM[I],X25$STAT); # NORMAL RANGE #
- # CHECKS #
- END
- IF X25$STAT # IF VALUE IS WITHIN RANGE #
- THEN
- BEGIN
- NSVCERR = FALSE; # CLEAR NSVC ERROR FLAG #
- SVC$CNT = STVALNUM[I]; # SAVE NSVC VALUE #
- LINFNFV(FN"SVC",SVC$CNT);
- END
- END
- GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
- PSN:
- PSNUSED = TRUE; # SET PSN SPECIFIED FLAG #
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN # SEARCH PSN TABLE FOR VALUE #
- FOR J=1 STEP 1 UNTIL MXPSN
- DO
- BEGIN
- IF STVALNAM[I] EQ PSN$VAL[J] # IF VALUE IS FOUND #
- THEN
- BEGIN #STORE NUMERICAL VALUE IN RECORD#
- LINFNFV(FN"PSN",PSN$NUMV[J]);
- END
- END
- END
- GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
- DCE:
- DCEUSED = TRUE; # SET DCE SPECIFIED FLAG #
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF STVALNAM[I] EQ "YES" # IF VALUE IS YES #
- THEN
- BEGIN # STORE VALUE -TRUE- IN RECORD #
- LINFNFV(FN"DCE",TRUE);
- DCE$FLG = TRUE; # SET DCE FLAG #
- END
- ELSE # VALUE IS NO #
- BEGIN # STORE VALUE -FALSE- IN RECORD #
- LINFNFV(FN"DCE",FALSE);
- END
- END
- GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
- DTEA:
- DTEAUSED = TRUE; # SET DTEA SPECIFIED FLAG #
- IF NOT STVLERR[I]
- THEN # IF VALUE IS O.K. #
- BEGIN
- IF STVALLEN[I] LQ MXDTEA
- THEN # IF VALUE IS WITHIN RANGE #
- BEGIN # CONVERT VALUE #
- DTEA$VAL[0] = 0; # CLEAR DTEA TEMPORARY #
- DTEA$VL1[0] = C<0,1>STVALNAM[I] - ZERO;
- IF STVALLEN[I] GR 1
- THEN # IF VALUE IS TWO DIGITS #
- BEGIN
- DTEA$VL2[0] = C<1,1>STVALNAM[I] - ZERO;
- END
- LINFNFV(FN"DTEA",DTEA$VAL[0]); # PUT VALUE IN LINE ENTRY #
- END
- ELSE # VALUE IS TOO BIG #
- BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
- NDLEM2(ERR100,STLNUM[0],STVALNAM[I]);
- END
- END
- GOTO NEXT$PARAM;
- GOTO NEXT$PARAM;
- NEXT$PARAM:
- RETURN; # **** RETURN **** #
- END # X25LINE #
- CONTROL EJECT;
- # #
- # LINGRPR CODE BEGINS HERE #
- # #
- CRNT$LSPD = LSPD"UNKNOWN"; # AND INITIALIZE VALUES #
- DCEUSED = FALSE;
- DCE$FLG = FALSE;
- DEVCNT = 0;
- DFLUSED = FALSE;
- DTEAUSED = FALSE;
- FRMUSED = FALSE;
- LSPDUSED = FALSE;
- ARSUSED = FALSE;
- NSVCUSED = FALSE;
- PORTUSED = FALSE;
- AL$USED = FALSE;
- PSNUSED = FALSE;
- RCNTUSED = FALSE;
- RTMUSED = FALSE;
- LCR$EXIST = TRUE; # SET LINE CONFIG REC EXISTS FLG#
- LCTWC[1] = LCTWC[1] + 1; # INCREMENT WORD COUNT IN XREF #
- LCTWORD[LCTWC[1]] = 0; # CLEAR ENTRY WORD IN XREF #
- LR$EXIST = TRUE; # SET LINE RECORD EXISTS FLAG #
- LRWORD[1] = 0; # CLEAR WORD 1 IN LINE RECORD #
- LRWORD[2] = 0; # CLEAR WORD 2 IN LINE RECORD #
- LRWC[1] = 2; # SET WORD COUNT IN LINE RECORD #
- LCWORD[0] = 0; # CLEAR FIRST WORD IN LC ENTRY #
- LCWC[0] = LC$FIX$ENT; # SET WORD COUNT FOR LIN$CON$REC#
- PVC$CNT = 0; # CLEAR PVC COUNT #
- SVC$CNT = 0; # CLEAR SVC COUNT #
- XTERMASK = 0; # CLEAR X.25 TERMINAL MASK #
- SVC$SPEC = FALSE; # CLEAR SVC SPECIFIED FLAG #
- FOR I=1 STEP 1 UNTIL LC$LENG # CLEAR LINE CONFIGURATION #
- DO # RECORD #
- BEGIN
- LCWORD[I] = 0;
- END
- IF LCTWC[1] GQ LCT$LENG
- THEN # IF NEED MORE TABLE SPACE FOR ENTRY #
- BEGIN
- SSTATS(P<LINE$XREF>,50); # ALLOCATE MORE SPACE #
- END
- IF NOT STLBERR[1] # IF NO LABEL ERROR #
- THEN
- BEGIN
- LCTNAME[LCTWC[1]] = STLABEL[1];# PUT LABEL IN LINE XREF TABLE #
- LRNAME[2] = STLABEL[1]; # PUT LABEL IN LINE RECORD #
- IF STSTID[0] EQ STID"GROUP" # IF STATEMENT IS A GROUP STMT #
- THEN
- BEGIN
- LRGC[1] = 0; # SET GROUP COUNT TO DEFAULT VALUE IN THE #
- LCNI[0] = 1; # LINE RECORD AND LIN$CON$REC #
- LCTNAME[LCTWC[1]] = LABLNAM[STLBPNTR[1]]; # GENERATED LABEL #
- LCTPORT[LCTWC[1]] = LABLPORT[STLBPNTR[1]]; # GENERATED PORT #
- LRPORT[2] = LABLPORT[STLBPNTR[1]];
- END
- END
- LCTNID[LCTWC[1]] = CRNT$NID; # CURRENT NPU NODE I.D. IN XREF #
- LRNID[2] = CRNT$NID; # PUT CURRENT NODE I.D. IN LINE RECORD #
- IF STORD1[2] NQ 0 # IF LINE TYPE WAS SPECIFIED #
- THEN
- BEGIN
- LTYPE = " "; # CLEAR CURRENT LINE TYPE #
- IF NOT STVLERR[STORD1[2]] # IF VALUE IS O.K. #
- THEN
- BEGIN # SEARCH FOR LTYPE IN TABLE #
- FOR I=1 STEP 1 UNTIL MXLTYPE
- DO
- BEGIN # IF VALUE IS FOUND IN TABLE #
- IF STVALNAM[STORD1[2]] EQ LT$VAL[I]
- THEN
- BEGIN
- LTYPE = LT$CAT[I]; # STORE LTYPE CATEGORY #
- LCLTYPE[2] = LT$NUMV[I]; # STORE LTYPE NUMBER #
- END
- END
- END
- END
- ELSE # LTYPE WAS NOT SPECIFIED #
- BEGIN # FLAG ERROR -- REQUIRED PARAM #
- NDLEM2(ERR103,STLNUM[0],"LTYPE"); # MISSING #
- LTYPE = " "; # CLEAR CURRENT LTYPE #
- END
- IF STORD2[2] NQ 0 # IF TIPTYPE WAS SPECIFIED #
- THEN
- BEGIN
- CRNT$TIP = TIP"UNKNOWN"; # CLEAR CURRENT TIPTYPE #
- TT$USED = TRUE; # SET TIPTYPE SPECIFIED FLAG #
- IF NOT STVLERR[STORD2[2]] # IF VALUE IS O.K. #
- THEN
- BEGIN # SEARCH TABLE FOR TIPTYPE VALUE#
- FOR I=1 STEP 1 UNTIL MXTTYPE
- DO
- BEGIN # IF VALUE IS FOUND #
- IF STVALNAM[STORD2[2]] EQ TT$VAL[I]
- THEN
- BEGIN
- IF TT$NUMV[I] GQ 12 AND # IF NUMBER VALUE IS BETWEEN #
- TT$NUMV[I] LQ 14 # 12 AND 14 #
- THEN
- BEGIN
- CRNT$TIP = TIP"USER"; # MUST BE A USER TIPTYPE #
- LCTTYP$IP[2] = TT$NUMV[I]; # STORE NUMERIC VAL OF TIP #
- END
- ELSE # TIPTYPE IS NOT A USER TIP #
- BEGIN
- IF TT$NUMV[I] EQ 15
- THEN # THIS MUST BE 3270 #
- CRNT$TIP = TIP"$3270";
- ELSE
- CRNT$TIP = TT$NUMV[I]; # STORE TIPTYPE NUMBER VALUE #
- LCTTYP$IP[2] = TT$NUMV[I];# STORE NUMBER VALUE OF TIP #
- IF LTYPE NQ " " # IF LINE TYPE WAS SPECIFIED #
- THEN # CHECK IF THEY ARE COMPATIBLE#
- BEGIN
- IF CRNT$TIP EQ TIP"ASYNC"
- THEN # IF ASYNC TIPTYPE #
- BEGIN
- IF LTYPE NQ "ASYNC"
- THEN # IF LTYPE IS NOT ASYNC #
- BEGIN
- NDLEM2(ERR104,STLNUM[0]," "); # FLAG ERROR #
- END
- END
- ELSE # TIP IS NOT ASYNC #
- BEGIN # IF X25 TIPTYPE #
- IF CRNT$TIP EQ TIP"X25"
- THEN
- BEGIN # IF LINE TYPE IS NOT X25 #
- IF LTYPE NQ "X25"
- THEN
- BEGIN
- NDLEM2(ERR104,STLNUM[0]," "); # FLAG ERROR #
- END
- END
- ELSE # NOT ASYNC OR X25 TIPTYPE #
- BEGIN # IF LTYPE IS NOT SYNCHRONOUS #
- IF LTYPE NQ "SYNC"
- THEN
- BEGIN
- NDLEM2(ERR104,STLNUM[0]," "); # FLAG ERROR #
- END
- END
- END
- END
- END
- END
- END
- END
- END
- ELSE # TIPTYPE WAS NOT SPECIFIED #
- BEGIN
- CRNT$TIP = TIP"UNKNOWN"; # CLEAR CURRENT TIPTYPE #
- TT$USED = FALSE; # CLEAR TIPTYPE SPECIFIED FLAG #
- END # PARAMETER MISSING #
- AUTO$REC = FALSE; # CLEAR AUTO RECOGNITION FLAG #
- XAUTO$REC = FALSE; # CLEAR XAUTO RECOGNITION FLAG #
- IF STORD3[2] NQ 0 # IF AUTO PARAMETER WAS SPECIFIED #
- THEN
- BEGIN
- IF CRNT$TIP NQ TIP"X25" # IF TIPTYPE IS NOT X25 OR 3270 #
- AND CRNT$TIP NQ TIP"$3270"
- THEN
- BEGIN
- IF STVALNAM[STORD3[2]] EQ "YES"
- THEN # IF VALUE IS YES #
- BEGIN
- AUTO$REC = TRUE; # SET AUTO RECOGNITION FLAG #
- LCTTYP$A[2] = TRUE; # SET FLAG IN LIN$CON$REC #
- LRAUTO[2] = TRUE; # SET FLAG IN LINE RECORD #
- IF STKWID[STORD3[2]] EQ KID"XAUTO" # IF XAUTO IS USED #
- THEN
- BEGIN
- LC$SRANGE[2] = TRUE; # SET HIGH SPEED FLAG ON #
- XAUTO$REC = TRUE; # SET XAUTO$FLAG ON #
- END
- END
- END
- ELSE # CURRENT TIPTYPE IS X25 OR 3270 #
- BEGIN # FLAG ERROR -- INVALID WITH TIP SPECIFIED#
- IF STKWID[STORD3[2]] EQ KID"XAUTO" # XAUTO IS USED #
- THEN
- BEGIN
- NDLEM2(ERR106,STLNUM[0],"XAUTO");
- END
- ELSE # MUST BE AUTO #
- BEGIN
- NDLEM2(ERR106,STLNUM[0],"AUTO");
- END
- END
- END
- IF NOT TT$USED # IF TIPTYPE WAS NOT SPECIFIED #
- THEN
- BEGIN
- IF NOT(LTYPE EQ "SYNC" AND # IF LTYPE IS NOT SYNC #
- AUTO$REC) # AND THIS IS NOT AN AUTO-REC LINE #
- THEN
- BEGIN # FLAG ERROR -- TIPTYPE MUST BE SPECIFIED #
- NDLEM2(ERR103,STLNUM[0],"TIPTYPE");
- END
- ELSE # MUST BE A SYNAUTO LINE #
- BEGIN
- LCTTYP$IP[2] = SYNAUTO; # PUT SYNAUTO VALUE FOR TIPTYPE #
- END
- END
- FOR I=3 STEP 1 UNTIL STWC[0] # CHECK REMAINDER OF PARAMETERS #
- DO # -- INDEPENDENT PARAMETERS #
- BEGIN
- GOTO LINJUMP[STKWID[I]]; # CLASSIFY PARAMETER BY KEYWORD #
- GEN$PARAM: # I.D. #
- GENLINE; # GENERAL LINE PARAMETERS #
- TEST I;
- X25$PARAM:
- IF CRNT$TIP EQ TIP"X25" OR
- CRNT$TIP EQ TIP"USER" # IF CRNT TIP IS X.25 OR USER #
- THEN
- BEGIN
- X25LINE; # CHECK X25 LINE PARAMETERS #
- END
- ELSE # CRNT TIP IS NOT COMPATIBLE WITH PARAM #
- BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
- NDLEM2(ERR106,STLNUM[0],X25$PNAM[STKWID[I]]);
- END
- TEST I;
- ASY$PARAM: # ASYNCHRONOUS LINE PARAMETERS #
- IF STKWID[I] EQ KID"ARSPEED" # IF ARSPEED IS THE PARAM #
- THEN
- BEGIN
- IF CRNT$TIP EQ TIP"ASYNC" OR
- CRNT$TIP EQ TIP"USER" # IF ASYNC OR USER TIPTYPE #
- THEN
- BEGIN
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN
- ARSUSED = TRUE; # SET FLAG TO TRUE #
- LC$ARSPEED[2] = (STVALNAM[I] EQ "YES");# SET FLAG IF YES #
- END
- END
- ELSE
- BEGIN
- NDLEM2(ERR106,STLNUM[0],"ARSPEED"); # TIPTYPE NOT COMPATIBLE #
- END
- END
- ELSE
- BEGIN
- LSPDUSED = TRUE; # SET LSPEED SPECIFIED FLAG #
- IF CRNT$TIP EQ TIP"ASYNC" OR
- CRNT$TIP EQ TIP"USER"
- THEN # IF TIPTYPE IS ASYNC OR USER #
- BEGIN
- IF CRNT$TIP EQ TIP"ASYNC" AND
- AUTO$REC
- THEN # IF ASYNC TIP AND AUTO REC LINE #
- BEGIN # FLAG ERROR -- LSPEED ALLOWED ON NON- #
- NDLEM2(ERR105,STLNUM[0]," "); # AUTO REC ASYNC LINES #
- END
- ELSE # MUST BE NON-AUTO REC OR USER TIP LINE #
- BEGIN
- IF NOT STVLERR[I] # IF VALUE IS O.K. #
- THEN
- BEGIN # SEARCH LSPEED TABLE FOR VALUE #
- FOR J=1 STEP 1 UNTIL MXLSPD
- DO
- BEGIN # IF VALUE IS FOUND #
- IF STVALNAM[I] EQ LST$VAL[J]
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY #
- LINFNFV(FN"LSPEED",LST$NUMV[J]);
- CRNT$LSPD = LST$NUMV[J]; # SAVE CURRENT LSPEED #
- END
- END
- END
- END
- END
- ELSE # TIP IS NOT ASYNC OR USER #
- BEGIN # FLAG ERROR -- LSPEED ALLOWED ON NON-AUTO#
- NDLEM2(ERR105,STLNUM[0]," "); # REC ASYNC LINES ONLY #
- END
- END
- TEST I;
- NEXT: # GOTO NEXT PARAMETER #
- END
- IF LCNI[0] EQ 1
- THEN
- BEGIN
- LRNAME[2] = LABLNAM[STLBPNTR[1]];
- END
- IF NOT PORTUSED # IF PORT WAS NOT SPECIFIED #
- THEN
- BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
- NDLEM2(ERR103,STLNUM[0],"PORT");
- END
- IF CRNT$TIP EQ TIP"ASYNC" # IF TIPTYPE IS ASYNC #
- THEN
- BEGIN
- IF NOT AUTO$REC AND # IF NON-AUTO REC AND LSPEED NOT SPECIFIED#
- NOT LSPDUSED
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY WITH DEFAULT LSPEED#
- LINFNFV(FN"LSPEED",DEF$LSPD);
- CRNT$LSPD = DEF$LSPD; # SAVE DEFAULT LSPEED #
- END
- END
- IF CRNT$TIP EQ TIP"X25" AND
- STSTID[0] NQ STID"GROUP" # X25 TIPTYPE AND NOT GROUP STMT#
- THEN
- BEGIN
- IF NOT DFLUSED # IF DFL WAS NOT SPECIFIED #
- THEN
- BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
- NDLEM2(ERR103,STLNUM[0],"DFL");
- END
- IF NOT FRMUSED # IF FRAME WAS NOT SPECIFIED #
- THEN
- BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
- NDLEM2(ERR103,STLNUM[0],"FRAME");
- END
- IF NOT RTMUSED # IF RTIME WAS NOT SPECIFIED #
- THEN
- BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
- NDLEM2(ERR103,STLNUM[0],"RTIME");
- END
- IF NOT PSNUSED # IF PSN WAS NOT SPECIFIED #
- THEN
- BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
- NDLEM2(ERR103,STLNUM[0],"PSN");
- END
- IF NOT RCNTUSED # IF RCOUNT NOT SPECIFIED #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY WITH DEFAULT RCOUNT#
- LINFNFV(FN"RCOUNT",DEF$RCNT);
- END
- IF NOT DCEUSED # IF DCE NOT SPECIFIED #
- THEN
- BEGIN # MAKE FNFV PAIR ENTRY WITH DEFAULT DCE #
- LINFNFV(FN"DCE",DEF$DCE);
- END
- IF NOT DCE$FLG AND
- DTEAUSED # IF DCE WAS NOT SPECIFIED AND DTEA WAS #
- THEN
- BEGIN # FLAG ERROR -- DTEA INVALID ON NON DCE LN#
- NDLEM2(ERR156,STLNUM[0]," ");
- END
- END
- IF CRNT$TIP EQ TIP"X25" OR # IF USER TIP AND X25 LINE #
- (CRNT$TIP EQ TIP"USER" AND LTYPE EQ "X25")
- THEN
- BEGIN
- IF NOT NSVCUSED # IF NSVC NOT SPECIFED #
- THEN # PUT DEFAULT IN LIN$CON$REC #
- BEGIN
- LINFNFV(FN"SVC",SVC$CNT);
- END
- END
- IF NOT ARSUSED # IF NOT ARSUSED #
- THEN
- BEGIN
- IF CRNT$TIP EQ TIP"ASYNC" # IF ASYNC TIPTYPE #
- THEN
- BEGIN
- IF AUTO$REC OR XAUTO$REC # IF AUTO-RECOGNITION LINE #
- THEN
- BEGIN
- LC$ARSPEED[2] = TRUE; # SET FLAG TO TRUE #
- END
- END
- END
- IF NOT AUTO$REC
- THEN # IF NOT AN AUTO-REC LINE, #
- BEGIN
- MAXTERM = TRM$MAX[CRNT$TIP]; # SAVE MAXIMUM NUMBER OF TERMS #
- TERMCNT = 0; # CLEAR TERMINAL STMT COUNT #
- END
- IF NOT AL$USED
- THEN
- BEGIN
- LINFNFV(FN"AL",0); # MAKE 0 ENTRY FOR AL #
- END
- CA$MAP = 0; # CLEAR -CA- BIT MAP #
- RETURN; # **** RETURN **** #
- END # LINGRPR #
- CONTROL EJECT;
- PROC TERMPR;
- BEGIN
- *IF,DEF,IMS
- #
- ** TERMPR - TERMINAL STATEMENT PROC.
- *
- * D.K. ENDO 81/11/20
- *
- * THIS PROCEDURE CHECKS THE TC AND STIP PARAMETERS, TERMINAL STMT
- * COUNT, AND CALL A PROC, BASED ON TIPTYPE, TO CHECK THE REMAINING
- * PARAMETERS.
- *
- * PROC TERMPR
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * INITIALIZE FLAGS AND VALUES.
- * INITIALIZE NEXT TERMINAL ENTRY.
- * IF LINE IS AUTO-REC,
- * CLEAR DEVICE STATEMENT COUNT.
- * INCREMENT TERMINAL STATEMENT COUNT.
- * IF TERMINAL COUNT GREATER THAN MAXIMUM ALLOWED,
- * FLAG ERROR -- MAXIMUM TERMINAL COUNT EXCEEDED.
- * PUT CURRENT TIPTYPE IN TERMINAL ENTRY FROM LINE CONFIG ENTRY.
- * IF STIP WAS SPECIFIED,
- * IF VALUE IS O.K.,
- * IF VALUE IS -AUTOREC-,
- * THEN,
- * IF LINE IS NOT AUTO-REC,
- * FLAG ERROR -- INVALID VALUE.
- * OTHERWISE,
- * MAP STIP NUMERIC VALUE.
- * PUT STIP VALUE IN TERMINAL ENTRY.
- * IF TIP IS NOT USER OR UNKNOWN,
- * IF TIPTYPE IS NOT COMPATIBLE WITH STIP,
- * FLAG ERROR -- STIP AND TIPTYPE VALUE NOT COMPATIBLE.
- * SET CURRENT STIP TO UNKNOWN.
- * IF TC WAS SPECIFIED,
- * IF VALUE IS O.K.,
- * IF VALUE IS -CCP-,
- * THEN
- * CLEAR TC SPECIFIED FLAG.
- * OTHERWISE,
- * MAP TC NUMERIC VALUE.
- * PUT VALUE IN TERMINAL ENTRY.
- * IF TIPTYPE IS NOT USER AND TC IS NOT USER,
- * IF STIP IS NOT UNKNOWN,
- * THEN,
- * IF STIP IS NOT COMPATIBLE WITH TC,
- * FLAG ERROR -- TC AND STIP NOT COMPATIBLE
- * SET CURRENT TC TO UNKNOWN.
- * OTHERWISE,
- * IF TIPTYPE IS NOT UNKNOWN,
- * IF TIPTYPE AND TC ARE NOT COMPATIBLE,
- * FLAG ERROR -- TC AND TIPTYPE NOT COMPATIBLE.
- * SET CURRENT TC TO UNKNOWN.
- * IF TIPTYPE IS NOT USER
- * IF STIP WAS NOT SPECIFIED,
- * IF TC WAS SPECIFIED,
- * THEN,
- * DEFAULT STIP ACCORDING TO TC.
- * IF TIPTYPE IS X.25,
- * DEFAULT STIP TO -PAD-.
- * PUT STIP IN TERMINAL ENTRY.
- * OTHERWISE,
- * FLAG ERROR -- TC OR STIP REQUIRED.
- * IF TIPTYPE IS SYNAUTO,
- * DEFAULT TIPTYPE ACCORDING TO STIP.
- * PUT TIPTYPE VALUE IN TERMINAL ENTRY.
- * SELECT CASE THAT APPLIES,
- * CASE 1(ASYNC TIP):
- * CHECK ASYNC TERMINAL STMT ENTRY.
- * CASE 2(MODE4 TIP):
- * CHECK MODE4 TERMINAL STMT ENTRY.
- * CASE 3(HASP TIP):
- * CHECK HASP TERMINAL STMT ENTRY.
- * CASE 4(X25 TIP):
- * CHECK X25 TERMINAL STMT ENTRY.
- * CASE 5(BSC TIP):
- * CHECK BSC TERMINAL STMT ENTRY.
- * CASE 6(USER OR UNKNOWN TIP):
- * CHECK USER TERMINAL STMT ENTRY.
- * IF CSET WAS NOT SPECIFIED AND NOT AN AUTO-REC LINE,
- * DEFAULT CSET ACCORDING TO STIP.
- * PUT VALUE IN TERMINAL ENTRY.
- * IF LINE IS NOT AUTOREC,
- * THEN,
- * DEFAULT MAXIMUM DEVICE STMTS ALLOWED ACCORDING TO TIPTYPE.
- * OTHERWISE,
- * SET MAXIMUM NUMBER OF DEVICE STMTS TO 255.
- *
- #
- *ENDIF
- #
- **** PROC TERMPR - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRIES IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- DEF MXTRENT # 3 #; # MAXIMUM WORD COUNT FOR TERMINAL ENTRY #
- DEF NCIR$DEF # 1 #; # DEFAULT VALUE FOR NCIR #
- ITEM CA$USED B; # CA SPECIFIED FLAG #
- ITEM CSET$USED B; # CSET SPECIFIED FLAG #
- ITEM I; # SCRATCH ITEM #
- ITEM RIC$USED B; # RIC SPECIFIED FLAG #
- ITEM STIP$USED B; # STIP SPECIFIED FLAG #
- ITEM TC$USED B; # TC SPECIFIED FLAG #
- DEF MXTKWD # 78 #; # MAXIMUM NUMBER TERMINAL KEYWORDS #
- DEF W$DEF # 2 #; # W DEFAULT #
- ARRAY KYWD$NAM$TAB [0:MXTKWD] S(1);
- BEGIN
- ITEM KWDNAME C(0,0,10) = ["STIP",
- "TC",
- "RIC",
- "CSET",
- "TSPEED",
- "CA",
- "CO",
- "BCF",
- "MREC",
- "W",
- "CTYP",
- "NCIR",
- "NEN",
- "COLLECT",
- , # XAUTO #
- , # DT #
- , # SDT #
- , # TA #
- , # ABL #
- , # DBZ #
- , # UBZ #
- , # DBL #
- , # UBL #
- , # XBZ #
- , # DO #
- , # STREAM #
- , # HN #
- , # AUTOLOG #
- , # AUTOCON #
- , # PRI #
- , # P80 #
- , # P81 #
- , # P82 #
- , # P83 #
- , # P84 #
- , # P85 #
- , # P86 #
- , # P87 #
- , # P88 #
- , # P89 #
- , # AB #
- , # BR #
- , # BS #
- , # B1 #
- , # B2 #
- , # CI #
- , # CN #
- , # CT #
- , # DLC #
- , # DLTO #
- , # DLX #
- , # EP #
- , # IN #
- , # LI #
- , # OP #
- , # PA #
- , # PG #
- , # PL #
- , # PW #
- , # SE #
- , # FA #
- , # XLC #
- , # XLX #
- , # XLTO #
- , # ELO #
- , # ELX #
- , # ELR #
- , # EBO #
- , # EBR #
- , # CP #
- , # IC #
- , # OC #
- , # LK #
- , # EBX #
- , # HD #
- , # MC #
- , # XLY #
- "EOF", # EOF #
- "PAD" # PAD #
- ];
- END
- DEF MXSTIP # 11 #; # MAXIMUM NUMBER OF STIPS #
- ARRAY STIP$TABLE [0:MXSTIP] S(2);
- BEGIN
- ITEM STIP$VAL C(0,0,7) = [,"M4A", # STIP VALUES #
- "M4C",
- "2741",
- "N2741",
- "POST",
- "PRE",
- "PAD",
- "USER",
- "XAA",
- "2780",
- "3780"
- ];
- ITEM STIP$NUMV U(0,42,3) = [0, # UNKNOWN -- NUMERICAL VALUES #
- 1, # M4A #
- 2, # M4C #
- 2, # 2741 #
- 1, # N2741 #
- 1, # POST #
- 2, # PRE #
- 1, # PAD #
- 6, # USER #
- 3, # XAA #
- 1, # 2780 #
- 2, # 3780 #
- ];
- ITEM STIP$STATUS U(0,45,5) =[STIP"UNKNOWN", # STIP STATUS VALUE#
- STIP"M4A",
- STIP"M4C",
- STIP"$2741",
- STIP"N2741",
- STIP"POST",
- STIP"PRE",
- STIP"PAD",
- STIP"USER",
- STIP"XAA",
- STIP"$2780",
- STIP"$3780"
- ];
- ITEM STIP$TIP U(0,50,5) = [TIP"UNKNOWN", # ALLOWABLE TIP VALUE #
- TIP"MODE4",
- TIP"MODE4",
- TIP"ASYNC",
- TIP"ASYNC",
- TIP"HASP",
- TIP"HASP",
- TIP"X25",
- TIP"X25",
- TIP"X25",
- TIP"BSC",
- TIP"BSC"
- ];
- ITEM STIP$TIP$MAP U(1,0,15) = [ 0, # TIPTYPE ALLOWED MAP #
- O"10000",
- O"10000",
- O"20000",
- O"20000",
- O"04000",
- O"04000",
- O"02000",
- O"02000",
- O"02000",
- O"01000",
- O"01000"
- ];
- ITEM CSET$DEF (1,30,15) = [CSET"UNKNOWN", # UNKNOWN #
- CSET"ASCII", # M4A #
- CSET"ASCII", # M4C #
- CSET"CORRES", # 2741 #
- CSET"ASCII", # N2741 #
- CSET"EBCDIC", # POST #
- CSET"EBCDIC", # PRE #
- CSET"ASCII", # PAD #
- CSET"ASCII", # USER #
- CSET"ASCII", # XAA #
- CSET"EBCDIC", # 2780 #
- CSET"EBCDIC" # 3780 #
- ];
- END
- DEF MXTC # 24 #; # MAXIMUM NUMBER OF TC VALUES #
- ARRAY TC$TABLE [1:MXTC] S(2);
- BEGIN
- ITEM TC$VAL C(0,0,7) = ["M33", # TC VALUES #
- "713",
- "721",
- "2741",
- "M40",
- "H2000",
- "751",
- "T4014",
- "HASP",
- "200UT",
- "714X",
- "711",
- "714",
- "HPRE",
- "734",
- "2780",
- "3780",
- "752",
- "X364",
- "3270",
- "TC28",
- "TC29",
- "TC30",
- "TC31",
- ];
- ITEM TC$NUMV U(0,45,5) = [1, # M33 -- TC NUMERICAL VALUE #
- 2, # 713 #
- 3, # 721 #
- 4, # 2741 #
- 5, # M40 #
- 6, # H2000 #
- 2, # 751 #
- 8, # T4014 #
- 9, # HASP #
- 10, # 200UT #
- 11, # 714X #
- 12, # 711 #
- 13, # 714 #
- 14, # HPRE #
- 15, # 734 #
- 16, # 2780 #
- 17, # 3780 #
- 2, # 752 #
- 7, # X364 #
- 18, # 3270 #
- 28, # TC28 #
- 29, # TC29 #
- 30, # TC30 #
- 31, # TC31 #
- ];
- ITEM TC$STATUS U(0,50,5) = [TC"M33", # TC STATUS VALUE #
- TC"$713",
- TC"$721",
- TC"$2741",
- TC"M40",
- TC"H2000",
- TC"$751",
- TC"T4014",
- TC"HASP",
- TC"$200UT",
- TC"$714X",
- TC"$711",
- TC"$714",
- TC"HPRE",
- TC"$734",
- TC"$2780",
- TC"$3780",
- TC"$752",
- TC"X364",
- TC"$3270",
- TC"USER",
- TC"USER",
- TC"USER",
- TC"USER",
- ];
- ITEM DEF$STIP U(0,55,5) = [STIP"N2741", # M33 -- DEFAULT STIP #
- STIP"N2741", # 713/751/X364 #
- STIP"N2741", # 721 #
- STIP"$2741", # 2741 #
- STIP"N2741", # M40 #
- STIP"N2741", # H2000 #
- STIP"N2741", # 751 #
- STIP"N2741", # T4014 #
- STIP"POST", # HASP #
- STIP"M4A", # 200UT #
- STIP"M4C", # 714X #
- STIP"M4C", # 711 #
- STIP"M4C", # 714 #
- STIP"PRE", # HPRE #
- STIP"M4A", # 734 #
- STIP"$2780", # 2780 #
- STIP"$3780", # 3780 #
- STIP"N2741", # 752 #
- STIP"N2741", # X364 #
- STIP"UNKNOWN",# 3270 #
- STIP"UNKNOWN",# TC28 #
- STIP"UNKNOWN",# TC29 #
- STIP"UNKNOWN",# TC30 #
- STIP"UNKNOWN",# TC31 #
- ];
- ITEM STIP$AMAP U(1,0,15) = [O"02200", # M33 -- STIP ALLOWED #
- O"02200", # 713 #
- O"02200", # 721 #
- O"04000", # 2741 #
- O"02200", # M40 #
- O"02200", # H2000 #
- O"02200", # 751 #
- O"02200", # T4014 #
- O"01000", # HASP #
- O"20000", # 200UT #
- O"10000", # 714X #
- O"10000", # 711 #
- O"10000", # 714 #
- O"00400", # HPRE #
- O"20000", # 734 #
- O"00020", # 2780 #
- O"00010", # 3780 #
- O"02200", # 752 #
- O"02200", # X364 #
- 0, # 3270 -- N/A #
- O"37770", # TC28 #
- O"37770", # TC29 #
- O"37770", # TC30 #
- O"37770", # TC31 #
- ];
- ITEM TC$TIP$AMAP U(1,15,15) = [O"22000", # M33 -- TIP ALLOWED #
- O"22000", # 713 #
- O"22000", # 721 #
- O"20000", # 2741 #
- O"22000", # M40 #
- O"22000", # H2000 #
- O"22000", # 751 #
- O"22000", # T4014 #
- O"04000", # HASP #
- O"10000", # 200UT #
- O"10000", # 714X #
- O"10000", # 711 #
- O"10000", # 714 #
- O"04000", # HPRE #
- O"10000", # 734 #
- O"01000", # 2780 #
- O"01000", # 3780 #
- O"22000", # 752 #
- O"22000", # X364 #
- O"00400", # 3270 #
- O"37000", # TC28 #
- O"37000", # TC29 #
- O"37000", # TC30 #
- O"37000", # TC31 #
- ];
- END
- SWITCH TRMJUMP USER, # UNKNOWN TIPTYPE #
- ASYNC, # ASYNC TIPTYPE #
- MODE4, # MODE4 TIPTYPE #
- HASP, # HASP TIPTYPE #
- X25, # X25 TIPTYPE #
- BSC, # BISYNC TIPTYPE #
- $3270, # 3270 TIPTYPE #
- USER; # USER TIPTYPE #
- CONTROL EJECT;
- PROC ASYTERM;
- BEGIN
- *IF,DEF,IMS
- #
- ** ASYTERM -- CHECKS TERMINAL PARAMETERS LEGAL FOR ASYNC TIP.
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMRTER
- * ON THE STATEMENT.
- *
- * PROC ASYTERM
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION,
- * SELECT CASE THAT APPLIES,
- * CASE 1(RIC,CSET):
- * CHECK GENERAL PARAMETER.
- * CASE 2(TSPEED):
- * IF LINE IS AUTO-REC,
- * THEN
- * CHECK ASYNC PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- TSPEED VALID ON AUTO-REC LINES ONLY.
- * CASE 3(CA,CO,BCF,MREC,W,CTYP,NCIR,NEN,COLLECT,EOF):
- * FLAG ERROR -- INVALID PARAMETER.
- *
- #
- *ENDIF
- #
- **** PROC ASYTERM XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- DEF TS2400 # 7 #; # TERMINAL SPEED 2400 #
- DEF TS600 # 5 #; # TERMINAL SPEED 600 #
- ITEM I; # SCRATCH ITEM #
- ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
- SWITCH ASYTJUMP NEXT$PARAM, # STIP #
- NEXT$PARAM, # TC #
- GEN$PARAM , # RIC #
- GEN$PARAM , # CSET #
- ASY$PARAM , # TSPEED #
- OTHERS , # CA #
- OTHERS , # CO #
- OTHERS , # BCF #
- OTHERS , # MREC #
- OTHERS , # W #
- OTHERS , # CTYP #
- OTHERS , # NCIR #
- OTHERS , # NEN #
- OTHERS , # COLLECT #
- OTHERS , # XAUTO #
- OTHERS , # DT #
- OTHERS , # SDT #
- OTHERS , # TA #
- OTHERS , # ABL #
- OTHERS , # DBZ #
- OTHERS , # UBZ #
- OTHERS , # DBL #
- OTHERS , # UBL #
- OTHERS , # XBZ #
- OTHERS , # DO #
- OTHERS , # STREAM #
- OTHERS , # HN #
- OTHERS , # AUTOLOG #
- OTHERS , # AUTOCON #
- OTHERS , # PRI #
- OTHERS , # P80 #
- OTHERS , # P81 #
- OTHERS , # P82 #
- OTHERS , # P83 #
- OTHERS , # P84 #
- OTHERS , # P85 #
- OTHERS , # P86 #
- OTHERS , # P87 #
- OTHERS , # P88 #
- OTHERS , # P89 #
- OTHERS , # AB #
- OTHERS , # BR #
- OTHERS , # BS #
- OTHERS , # B1 #
- OTHERS , # B2 #
- OTHERS , # CI #
- OTHERS , # CN #
- OTHERS , # CT #
- OTHERS , # DLC #
- OTHERS , # DLTO #
- OTHERS , # DLX #
- OTHERS , # EP #
- OTHERS , # IN #
- OTHERS , # LI #
- OTHERS , # OP #
- OTHERS , # PA #
- OTHERS , # PG #
- OTHERS , # PL #
- OTHERS , # PW #
- OTHERS , # SE #
- OTHERS , # FA #
- OTHERS , # XLC #
- OTHERS , # XLX #
- OTHERS , # XLTO #
- OTHERS , # ELO #
- OTHERS , # ELX #
- OTHERS , # ELR #
- OTHERS , # EBO #
- OTHERS , # EBR #
- OTHERS , # CP #
- OTHERS , # IC #
- OTHERS , # OC #
- OTHERS , # LK #
- OTHERS , # EBX #
- OTHERS , # HD #
- OTHERS , # MC #
- OTHERS , # XLY #
- OTHERS , # EOF #
- OTHERS ; # PAD #
- # #
- # ASYTERM CODE BEGINS HERE #
- # #
- FOR I=2 STEP 1 UNTIL STWC[0]
- DO # FOR EACH VALUE-DECLARATION #
- BEGIN
- SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
- GOTO ASYTJUMP[SWITCH$ID]; # GO TO APPROPRIATE PARAGRAPH #
- GEN$PARAM:
- GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]); # GENERAL PARAMETERS #
- GOTO NEXT$PARAM;
- ASY$PARAM:
- IF AUTO$REC # IF TERMINAL IS ON A AUTO-REC LINE #
- THEN
- BEGIN # CHECK ASYNC PARAMETER #
- ATRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]);
- IF NOT XAUTO$REC # IF NOT XAUTO FLAG SET #
- THEN
- BEGIN
- IF CRNT$TSPD GR TS2400 # IF TSPEED GR 2400 #
- THEN
- BEGIN
- NDLEM2(ERR162,STLNUM[0],"AUTO");
- END
- END
- ELSE
- BEGIN
- IF XAUTO$REC # IF XAUTO FLAG IS SET #
- THEN
- BEGIN
- IF CRNT$TSPD LS TS600 # IF TSPEED LESS THAN 600 #
- THEN
- BEGIN
- NDLEM2(ERR162,STLNUM[0],"XAUTO");
- END
- END
- END
- END
- ELSE # NON-AUTO-REC LINE #
- BEGIN # FLAG ERROR -- VALID FOR AUTO-REC ONLY #
- NDLEM2(ERR107,STLNUM[0],KWDNAME[SWITCH$ID]);
- END
- GOTO NEXT$PARAM;
- OTHERS: # ALL OTHER PARAMETERS FLAG AS INVALID #
- NDLEM2(ERR106,STLNUM[0],KWDNAME[SWITCH$ID]); # FOR ASYNC LINES #
- GOTO NEXT$PARAM;
- IF STKWID[I] EQ KID"PAD"
- THEN
- BEGIN # STATEMENT TABLE #
- I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
- END
- NEXT$PARAM: # GO TO NEXT PARAMETER #
- END
- RETURN; # **** RETURN **** #
- END # ASYTERM #
- CONTROL EJECT;
- PROC ATRMPRM(ASY$ID,ASY$WORD,ASY$LINE);
- BEGIN
- *IF,DEF,IMS
- #
- ** ATRMPRM -- CHECK ASYNC TERMINAL PARAMETER.
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE CHECKS PARAMETERS THAT CAN ONLY BE SPECIFIED FOR
- * AN ASYNC TERMINAL.
- *
- * PROC ATRMPRM(ASY$ID,ASY$WORD,ASY$LINE)
- *
- * ENTRY ASY$ID = NUMBER IDENTIFYING KEYWORD.
- * ASY$WORD = VALUE DECLARATION ENTRY.
- * ASY$LINE = CURRENT SOURCE LINE NUMBER.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * IF VALUE IS NOT -AUTOREC-
- * THEN,
- * IF VALUE IS O.K.
- * MAP NUMERIC VALUE FOR TSPEED.
- * PUT TSPEED VALUE IN CURRENT TERMINAL ENTRY.
- * IF TIPTYPE IS NOT USER AND STIP IS NOT UNKNOWN,
- * IF STIP IS NOT COMPATIBLE WITH TSPEED,
- * FLAG ERROR
- * OTHERWISE,
- * IF LINE IS NOT AUTO-REC,
- * FLAG ERROR -- AUTOREC VALUE NOT VALID.
- *
- #
- *ENDIF
- ITEM ASY$ID; # KEYWORD I.D. FOR SWITCH #
- ITEM ASY$LINE; # STATEMENT LINE NUMBER #
- ARRAY ASY$WORD [0:0] S(1); # VALUE DECLARATION ENTRY #
- BEGIN
- ITEM ASY$VLERR B(0,17,1); # VALUE ERROR FLAG #
- ITEM ASY$VALNAM C(0,18,7); # CHARACTER VALUE #
- ITEM ASY$VALNUM (0,18,42); # INTEGER VALUE #
- END
- #
- **** PROC ATRMPRM - XREF LIST BEGINS
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRIES IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- ITEM I; # SCRATCH ITEM #
- DEF MXTSPD # 11 #; # MAXIMUM NUMBER OF TSPEED VALUES #
- ARRAY TSPEED$TABLE [1:MXTSPD] S(1);
- BEGIN
- ITEM TSPD$VAL C(0,0,7) = ["110", # TSPEED VALUE #
- "134",
- "150",
- "300",
- "600",
- "1200",
- "2400",
- "4800",
- "9600",
- "19200",
- "38400"
- ];
- ITEM TSPD$ST$ALLW U(00,42,09) = [O"020", # STIP ALLOWED MAP #
- O"040",
- O"020",
- O"060",
- O"020",
- O"020",
- O"020",
- O"020",
- O"20",
- O"20",
- O"20"
- ];
- ITEM TSPD$NUMV U(0,51,09) = [ 1, # TSPEED INTEGER VALUE#
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11
- ];
- END
- # #
- # ATRMPRM CODE BEGINS HERE #
- # #
- IF ASY$VALNAM[0] NQ "AUTOREC" # IF VALUE IS NOT AUTOREC #
- THEN
- BEGIN
- IF NOT ASY$VLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- FOR I=0 STEP 1 UNTIL MXTSPD # SEARCH TABLE FOR TSPEED #
- DO
- BEGIN # IF VALUE IS FOUND #
- IF ASY$VALNAM[0] EQ TSPD$VAL[I]
- THEN
- BEGIN # PUT INTEGER VAL IN TERM ENTRY #
- TETS[CRNT$TERM + 1] = TSPD$NUMV[I];
- CRNT$TSPD = TSPD$NUMV[I];
- IF CRNT$TIP NQ TIP"USER" AND
- CRNT$STIP NQ STIP"UNKNOWN"
- THEN # CURRENT TIP IS NOT USER AND STIP NOT UNK#
- BEGIN
- IF B<CRNT$STIP,1>TSPD$ST$ALLW[I] NQ 1
- THEN # IF TSPEED NOT ALLOWED WITH STIP #
- BEGIN # FLAG ERROR -- VALUE NOT VALID WITH STIP #
- NDLEM2(ERR111,ASY$LINE,ASY$VALNAM[0]);
- END
- END
- END
- END
- END
- END
- ELSE # VALUE IS NOT AUTOREC #
- BEGIN
- IF NOT AUTO$REC # IF FIXED CONFIGURED LINE #
- THEN
- BEGIN # FLAG ERROR -- AUTOREC NOT VALID #
- NDLEM2(ERR113,ASY$LINE," ");
- END
- END
- RETURN; # **** RETURN **** #
- END # ATRMPRM #
- CONTROL EJECT;
- PROC BSCTERM;
- BEGIN
- *IF,DEF,IMS
- #
- ** BSCTERM -- CHECK TERMINAL PARAMETERS LEGAL FOR BSC TIP.
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
- * ON THE STATEMENT.
- *
- * PROC BSCTERM
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION ENTRY,
- * SELECT THE CASE THAT APPLIES,
- * CASE 1(RIC,CSET):
- * CHECK GENERAL PARAMETER.
- * CASE 2(CO):
- * IF LINE IS AUTO-REC,
- * THEN,
- * CHECK HASP/BSC PARAMETERS.
- * OTHERWISE,
- * FLAG ERROR -- VALID FOR AUTO-REC LINES ONLY.
- * CASE 3(BCF,MREC):
- * IF STIP IS 3780,
- * THEN,
- * FLAG ERROR -- PARAMETER VALID FOR 2780 TERMINALS ONLY.
- * OTHERWISE,
- * CHECK BISYNC PARAMETER.
- *
- * CASE 4(TSPEED,CA,W,CTYP,NCIR,NEN,COLLECT,EOF):
- * FLAG ERROR -- PARAMETER NOT ALLOWED.
- * IF RIC WAS NOT SPECIFIED,
- * SET RIC FLAG TO TRUE.
- *
- #
- *ENDIF
- #
- **** PROC BSCTERM - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- ITEM I; # SCRATCH ITEM -- POINTS TO CURRNT VAL-DEC#
- ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
- SWITCH BSCTJUMP NEXT$PARAM, # STIP #
- NEXT$PARAM, # TC #
- GEN$PARAM , # RIC #
- GEN$PARAM , # CSET #
- OTHERS , # TSPEED #
- OTHERS , # CA #
- HB$PARAM , # CO #
- BSC$PARAM , # BCF #
- BSC$PARAM , # MREC #
- OTHERS , # W #
- OTHERS , # CTYP #
- OTHERS , # NCIR #
- OTHERS , # NEN #
- OTHERS , # COLLECT #
- OTHERS , # XAUTO #
- OTHERS , # DT #
- OTHERS , # SDT #
- OTHERS , # TA #
- OTHERS , # ABL #
- OTHERS , # DBZ #
- OTHERS , # UBZ #
- OTHERS , # DBL #
- OTHERS , # UBL #
- OTHERS , # XBZ #
- OTHERS , # DO #
- OTHERS , # STREAM #
- OTHERS , # HN #
- OTHERS , # AUTOLOG #
- OTHERS , # AUTOCON #
- OTHERS , # PRI #
- OTHERS , # P80 #
- OTHERS , # P81 #
- OTHERS , # P82 #
- OTHERS , # P83 #
- OTHERS , # P84 #
- OTHERS , # P85 #
- OTHERS , # P86 #
- OTHERS , # P87 #
- OTHERS , # P88 #
- OTHERS , # P89 #
- OTHERS , # AB #
- OTHERS , # BR #
- OTHERS , # BS #
- OTHERS , # B1 #
- OTHERS , # B2 #
- OTHERS , # CI #
- OTHERS , # CN #
- OTHERS , # CT #
- OTHERS , # DLC #
- OTHERS , # DLTO #
- OTHERS , # DLX #
- OTHERS , # EP #
- OTHERS , # IN #
- OTHERS , # LI #
- OTHERS , # OP #
- OTHERS , # PA #
- OTHERS , # PG #
- OTHERS , # PL #
- OTHERS , # PW #
- OTHERS , # SE #
- OTHERS , # FA #
- OTHERS , # XLC #
- OTHERS , # XLX #
- OTHERS , # XLTO #
- OTHERS , # ELO #
- OTHERS , # ELX #
- OTHERS , # ELR #
- OTHERS , # EBO #
- OTHERS , # EBR #
- OTHERS , # CP #
- OTHERS , # IC #
- OTHERS , # OC #
- OTHERS , # LK #
- OTHERS , # EBX #
- OTHERS , # HD #
- OTHERS , # MC #
- OTHERS , # XLY #
- OTHERS , # EOF #
- OTHERS ; # PAD #
- # #
- # BSCTERM CODE BEGINS HERE #
- # #
- FOR I=2 STEP 1 UNTIL STWC[0]
- DO # FOR EACH VALUE DECLARATION ENTRY #
- BEGIN
- SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
- GOTO BSCTJUMP[SWITCH$ID]; # GO TO APPROPRIATE PARAGRAPH #
- GEN$PARAM:
- GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]); # GENERAL PARAMETERS #
- GOTO NEXT$PARAM;
- HB$PARAM:
- IF AUTO$REC # IF TERMINAL IS ON A AUTO-REC LINE #
- THEN
- BEGIN
- HBTRMPR(SWITCH$ID,STWORD[I],STLNUM[0]);# HASP/BSC PARAMETERS #
- END
- ELSE # NON-AUTO-REC LINE #
- BEGIN # FLAG ERROR -- VALID FOR AUTO-REC ONLY #
- NDLEM2(ERR107,STLNUM[0],KWDNAME[SWITCH$ID]);
- END
- GOTO NEXT$PARAM;
- BSC$PARAM:
- IF CRNT$STIP NQ STIP"$2780" AND
- CRNT$STIP NQ STIP"UNKNOWN"
- THEN # IF STIP IS NOT 2780 OR UNKNOWN #
- BEGIN # FLAG ERROR -- VALID ON 2780 TERMS ONLY #
- NDLEM2(ERR108,STLNUM[0],KWDNAME[SWITCH$ID]);
- END
- ELSE # MUST BE 2780 OR UNKNOWN #
- BEGIN
- BTRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]);# CHECK BSC PARAMETER #
- END
- GOTO NEXT$PARAM;
- OTHERS: # ALL OTHER PARAMETERS FLAG AS INVALID #
- IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
- THEN
- BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
- NDLEM2(ERR135,STLNUM[0],KWDNAME[SWITCH$ID]);
- END
- ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
- BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
- NDLEM2(ERR106,STLNUM[0],KWDNAME[SWITCH$ID]);
- END
- IF STKWID[I] EQ KID"PAD"
- THEN
- BEGIN # STATEMENT TABLE #
- I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
- END
- NEXT$PARAM: # GO TO NEXT PARAMETER #
- END
- IF NOT RIC$USED # IF RIC NOT SPECIFIED #
- THEN
- BEGIN
- RIC$FLAG = TRUE; # DEFAULT RIC VALUE #
- END
- RETURN; # **** RETURN **** #
- END # BSCTERM #
- CONTROL EJECT;
- PROC BTRMPRM(BTRM$ID,BTRM$WORD,BTRM$LINE);
- BEGIN
- *IF,DEF,IMS
- #
- ** BTRMPRM -- CHECKS BSC TERMINAL PARAMETERS.
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE PARAMETERS THAT CAN ONLY BE SPECIFIED FOR BISYNC
- * TERMINALS.
- *
- * PROC BTRMPRM(BTRM$ID,BTRM$WORD,BTRM$LINE)
- *
- * ENTRY BTRM$ID = NUMBER IDENTIFYING KEYWORD.
- * BTRM$WORD = VALUE DECLARATION ENTRY.
- * BTRM$LINE = CURRENT SOURCE LINE NUMBER.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * SELECT CASE THAT APPLIES,
- * CASE 1(BCF):
- * IF VALUE IS O.K.
- * IF VALUE IS -YES-
- * SET BCF FLAG.
- * CASE 2(MREC):
- * IF VALUE IS O.K.,
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * SAVE CURRENT MREC VALUE
- *
- #
- *ENDIF
- ITEM BTRM$ID; # KEYWORD I.D. FOR SWITCH #
- ITEM BTRM$LINE; # STATEMENT LINE NUMBER #
- ARRAY BTRM$WORD [0:0] S(1); # VALUE DECLARATION ENTRY #
- BEGIN
- ITEM BTRM$KWID (0,0,9); # KEYWORD I.D. FROM PASS 1 #
- ITEM BTRM$VLERR B(0,17,1); # VALUE ERROR FLAG #
- ITEM BTRM$VALNAM C(0,18,7); # CHARACTER VALUE #
- ITEM BTRM$VALNUM (0,18,42); # INTEGER VALUE #
- END
- #
- **** PROC BTRMPRM - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLCKRG; # CHECK IF VALUE IS WITHIN RANGE #
- END
- #
- ****
- #
- ITEM BTRM$STAT B; # RETURNED STATUS FROM RANGE CHECK PROC #
- SWITCH BTRMJUMP , # STIP #
- , # TC #
- , # RIC #
- , # CSET #
- , # TSPEED #
- , # CA #
- , # CO #
- BCF, # BCF #
- MREC; # MREC #
- # #
- # BTRMPRM CODE BEGINS HERE #
- # #
- GOTO BTRMJUMP[BTRM$ID]; # CHECK GIVEN VALUE DECLARATION #
- BCF:
- IF NOT BTRM$VLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF BTRM$VALNAM[0] EQ "YES" # IF VALUE IS -YES- #
- THEN
- BEGIN
- BCF$FLAG = TRUE; # SET BCF FLAG #
- END
- END
- GOTO NEXT$PARAM;
- MREC:
- IF NOT BTRM$VLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN # CHECK IF VALUE IS WITHIN RANGE#
- IF CRNT$TIP EQ TIP"USER" # IF USER TIP IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(BTRM$VALNUM[0],USR$WID1,NUM"DEC",BTRM$STAT);
- # RANGE #
- END
- ELSE
- BEGIN
- NDLCKRG(BTRM$KWID[0],BTRM$VALNUM[0],BTRM$STAT);
- END
- IF BTRM$STAT # IF WITHIN RANGE #
- THEN
- BEGIN
- CRNT$MREC = BTRM$VALNUM[0]; # SAVE MREC VALUE #
- END
- END
- GOTO NEXT$PARAM;
- NEXT$PARAM:
- RETURN; # **** RETURN **** #
- END # BTRMPRM #
- CONTROL EJECT;
- PROC GENTERM(GTRM$ID,GTRM$WORD,GTRM$LINE);
- BEGIN
- *IF,DEF,IMS
- #
- ** GENTERM -- CHECK GENERAL TERMINAL PARAMETERS.
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE CHECKS TERMINAL PARAMETERS THAT ARE LEGAL FOR ALL
- * TIPTYPES.
- *
- * PROC GENTERM(GTRM$ID,GTRM$WORD,GTRM$LINE)
- *
- * ENTRY GTRM$ID = NUMBER IDENTIFYING KEYWORD.
- * GTRM$WORD = VALUE DECLARATION ENTRY.
- * GTRM$LINE = CURRENT SOURCE LINE NUMBER.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * SELECT CASE THAT APPLIES,
- * CASE 1(CSET):
- * IF VALUE IS O.K.,
- * IF VALUE IS NOT -AUTOREC-,
- * THEN,
- * MAP CSET NUMERIC VALUE.
- * IF TIPTYPE AND CSET IS NOT -USER-
- * IF TC IS NOT USER OR UNKNOWN,
- * THEN,
- * IF TC AND CSET ARE NOT COMPATIBLE,
- * FLAG ERROR.
- * OTHERWISE,
- * IF STIP IS NOT UNKNOWN,
- * THEN,
- * IF STIP AND CSET ARE NOT COMPATIBLE,
- * FLAG ERROR.
- * OTHERWISE,
- * IF TIPTYPE IS NOT UNKNOWN,
- * IF TIPTYPE AND CSET ARE NOT COMPATIBLE,
- * FLAG ERROR.
- * PUT CSET VALUE IN CURRENT TERMINAL ENTRY.
- * OTHERWISE,
- * IF LINE IS NOT AUTO-REC
- * FLAG ERROR -- AUTOREC VALUE INVALID.
- * CASE 2(RIC):
- * IF VALUE IS O.K.,
- * IF VALUE IS -YES-,
- * SET RIC FLAG.
- *
- #
- *ENDIF
- ITEM GTRM$ID; # KEYWORD I.D. FOR SWITCH #
- ITEM GTRM$LINE; # STATEMENT LINE NUMBER #
- ARRAY GTRM$WORD [0:0] S(1); # VALUE DECLARATION ENTRY #
- BEGIN
- ITEM GTRM$VLERR B(0,17,1); # VALUE ERROR FLAG #
- ITEM GTRM$VALNAM C(0,18,7); # CHARACTER VALUE #
- ITEM GTRM$VALNUM (0,18,42); # INTEGER VALUE #
- END
- #
- **** PROC GENTERM - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRY IN ERROR FILE #
- END
- #
- ****
- #
- ITEM I; # SCRATCH ITEM #
- DEF MXCSET # 10 #; # MAXIMUM NUMBER OF CODE SETS #
- ARRAY CSET$TABLE [1:MXCSET] S(1);
- BEGIN
- ITEM CSET$VAL C(0,0,7) = ["BCD", # CHARACTER VALUE #
- "ASCII",
- "APLTP",
- "APLBP",
- "EBCD",
- "EBCDAPL",
- "CORRES",
- "CORAPL",
- "EBCDIC",
- "CSET15"
- ];
- ITEM CSET$NUMV (0,42,18) = [1, # BCD -- INTEGER VALUE #
- 2, # ASCII #
- 3, # APLTP #
- 4, # APLBP #
- 5, # EBCD #
- 6, # EBCDAPL #
- 7, # CORRES #
- 8, # CORAPL #
- 9, # EBCDIC #
- 15 # CSET15 #
- ];
- END
- ARRAY CSET$ALLOWED [1:15] S(1); # CODE SET ALLOWED MAP -- BIT #
- BEGIN # SET IF PARAM VALUE IS COMPAT#
- ITEM TC$AMAP U(0,0,30) = [O"0002040000", # BCD -- AND TC VALUE #
- O"3573646000", # ASCII #
- O"3570000000", # APLTP #
- O"3570000000", # APLBP #
- O"0200000000", # EBCD #
- O"0200000000", # EBCDAPL #
- O"0200000000", # CORRES #
- O"0200000000", # CORAPL #
- O"0004131000", # EBCDIC #
- ,,,,,
- O"3377770000" # CSET15 #
- ];
- ITEM STIP$AMAP U(0,30,15) = [O"20000", # BCD -- AND STIP VAL #
- O"32340", # ASCII #
- O"02000", # APLTP #
- O"02000", # APLBP #
- O"04000", # EBCD #
- O"04000", # EBCDAPL #
- O"04000", # CORRES #
- O"04000", # CORAPL #
- O"01430", # EBCDIC #
- ,,,,,
- O"37770" # CSET15 #
- ];
- ITEM TTYP$AMAP U(0,45,15) =[O"10200", # BCD -- AND TIPTYPE #
- O"32200", # ASCII #
- O"20200", # APLTP #
- O"20200", # APLBP #
- O"20200", # EBCD #
- O"20200", # EBCDAPL #
- O"20200", # CORRES #
- O"20200", # CORAPL #
- O"05600", # EBCDIC #
- ,,,,,
- O"37600" # CSET15 #
- ];
- END
- SWITCH GTRMJUMP , # STIP #
- , # TC #
- RIC , # RIC #
- CSET$; # CSET #
- CONTROL EJECT;
- # #
- # GTRMPRM CODE BEGINS HERE #
- # #
- GOTO GTRMJUMP[GTRM$ID]; # PROCESS GIVEN PARAMETER #
- CSET$:
- CSET$USED = TRUE; # SET CSET SPECIFIED FLAG #
- IF NOT GTRM$VLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF GTRM$VALNAM[0] NQ "AUTOREC" # IF VALUE IS NOT AUTO#
- THEN
- BEGIN
- FOR I=1 STEP 1 UNTIL MXCSET # SEARCH FOR CSET IN #
- DO # TABLE #
- BEGIN
- IF GTRM$VALNAM[0] EQ CSET$VAL[I] # IF CSET FOUND #
- THEN
- BEGIN
- CRNT$CSET = CSET$NUMV[I]; # SAVE CSET I.D. #
- END
- END
- IF CRNT$TIP NQ TIP"USER" AND # IF TIPTYPE IS NOT #
- CRNT$CSET NQ CSET"USER" # USER AND CSET IS #
- THEN # NOT USER #
- BEGIN
- IF CRNT$TC NQ TC"USER" AND # IF TC IS NOT USER OR#
- CRNT$TC NQ TC"UNKNOWN" # UNKNOWN, #
- THEN # COMPARE TC AGAINST #
- BEGIN # CSET #
- IF B<CRNT$TC,1>TC$AMAP[CRNT$CSET] NQ 1
- THEN # IF NOT COMPATIBLE #
- BEGIN # FLAG ERROR -- NOT COMPATIBLE#
- NDLEM2(ERR110,GTRM$LINE,GTRM$VALNAM[0]);
- END
- END
- ELSE # TC IS USER OR UNKNOWN #
- BEGIN # CHECK CSET AGAINST STIP #
- IF CRNT$STIP NQ STIP"UNKNOWN"
- THEN # IF STIP IS NOT UNKNOWN #
- BEGIN
- IF B<CRNT$STIP,1>STIP$AMAP[CRNT$CSET] NQ 1
- THEN # IF NOT COMPATIBLE #
- BEGIN # FLAG ERROR -- NOT COMPATIBLE#
- NDLEM2(ERR111,GTRM$LINE,GTRM$VALNAM[0]);
- END
- END
- ELSE # STIP IS UNKNOWN #
- BEGIN # CHECK CSET AGAINST TIPTYPE #
- IF CRNT$TIP NQ TIP"UNKNOWN"
- THEN # IF TIPTYPE IS NOT UNKNOWN #
- BEGIN # CHECK CSET AGAINST TIPTYPE #
- IF B<CRNT$TIP,1>TTYP$AMAP[CRNT$CSET] NQ 1
- THEN # IF NOT COMPATIBLE #
- BEGIN # FLAG ERROR -- NOT COMPATIBLE#
- NDLEM2(ERR112,GTRM$LINE,GTRM$VALNAM);
- END
- END
- END
- END
- END
- TECD[CRNT$TERM+1] = CRNT$CSET; # SAVE CSET VALUE #
- END
- ELSE # CSET VALUE IS AUTO-REC #
- BEGIN
- IF NOT AUTO$REC # IF FIXED CONFIGURED LINE #
- THEN
- BEGIN # FLAG ERROR -- AUTOREC NOT VALID #
- NDLEM2(ERR113,GTRM$LINE," ");
- END
- END
- END
- GOTO NEXT$PARAM;
- RIC:
- RIC$USED = TRUE; # SET RIC SPECIFIED FLAG #
- IF NOT GTRM$VLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF GTRM$VALNAM[0] EQ "YES"
- THEN # IF VALUE IS -YES- #
- BEGIN
- RIC$FLAG = TRUE; # SET RIC FLAG #
- END
- END
- GOTO NEXT$PARAM;
- NEXT$PARAM:
- RETURN; # **** RETURN **** #
- END # GTRMPRM #
- CONTROL EJECT;
- PROC HBTRMPR(HBTRM$ID,HBTRM$WORD,HBTRM$LINE);
- BEGIN
- *IF,DEF,IMS
- #
- ** HBTRMPR -- CHECK HASP/BSC TERMINAL PARAMETERS
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE CHECKS PARAMETERS THAT ARE ONLY LEGAL FOR HASP
- * AND BSC TERMINALS.
- *
- * PROC HBTRMPR(HBTRM$ID,HBTRM$WORD,HBTRM$LINE)
- *
- * ENTRY HBTRM$ID = NUMBER IDENTIFYING KEYWORD.
- * HBTRM$WORD = VALUE DECLARATION ENTRY.
- * HBTRM$LINE = CURRENT SOURCE LINE NUMBER.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * IF VALUE IS O.K.,
- * IF VALUE IS NOT -AUTOREC-,
- * THEN,
- * CHECK IF VALUE IS WITHIN RANGE.
- * IF IN RANGE,
- * PUT CO VALUE IN CURRENT TERMINAL ENTRY.
- * OTHERWISE,
- * IF LINE IS NOT AUTO-REC
- * FLAG ERROR -- AUTOREC VALUE IS INVALID.
- *
- #
- *ENDIF
- ITEM HBTRM$ID; # KEYWORD I.D. FOR SWITCH #
- ITEM HBTRM$LINE; # STATEMENT LINE NUMBER #
- ARRAY HBTRM$WORD [0:0] S(1); # VALUE DECLARATION ENTRY #
- BEGIN
- ITEM HBTRM$KWID (0,0,9); # KEYWORD I.D. FROM PASS 1 #
- ITEM HBTRM$VLERR B(0,17,1); # VALUE ERROR FLAG #
- ITEM HBTRM$VALNAM (0,18,7); # CHARACTER VALUE #
- ITEM HBTRM$VALNUM (0,18,42); # INTEGER VALUE #
- END
- #
- **** PROC HBTRMPR - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLCKRG; # CHECKS IF VALUE IS WITHIN RANGE #
- PROC NDLEM2; # MAKES ENTRIES IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- ITEM HBTRM$STAT B; # RETURNED STATUS FROM RANGE CHECK PROC #
- # #
- # HBTRMPR CODE BEGINS HERE #
- # #
- IF NOT HBTRM$VLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN # IF VALUE IS NOT AUTOREC #
- IF HBTRM$VALNAM[0] NQ "AUTOREC"
- THEN
- BEGIN # CHECK IF VALUE IS WITHIN RANGE#
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(HBTRM$VALNUM[0],USR$WID1,NUM"HEX",HBTRM$STAT);
- # USER #
- # RANGE #
- END
- ELSE
- BEGIN
- NDLCKRG(HBTRM$KWID,HBTRM$VALNUM[0],HBTRM$STAT);
- END
- IF HBTRM$STAT # IF WITHIN RANGE #
- THEN
- BEGIN # PUT CO VALUE IN TERM ENTRY #
- TEA1[CRNT$TERM + 1] = HBTRM$VALNUM[0];
- END
- END
- ELSE
- BEGIN # VALUE IS AUTOREC #
- IF NOT AUTO$REC # IF NOT A FIXED CONFIGURED LINE #
- THEN
- BEGIN # FLAG ERROR -- AUTOREC NOT VALID #
- NDLEM2(ERR113,HBTRM$LINE," ");
- END
- END
- END
- RETURN; # **** RETURN **** #
- END # HBTRMPR #
- CONTROL EJECT;
- PROC HSPTERM;
- BEGIN
- *IF,DEF,IMS
- #
- ** HSPTERM -- CHECK TERMINAL PARAMETERS LEGAL FOR HASP TIP.
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
- * ON THE STATEMENT.
- *
- * PROC HSPTERM
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION,
- * SELECT CASE THAT APPLIES,
- * CASE 1(RIC,CSET):
- * CHECK GENERAL PARAMETER.
- * CASE 2(CO):
- * IF AUTO-REC LINE,
- * THEN,
- * CHECK HASP/BSC PARAMETER.
- * OTHERWISE,
- * FLAG ERROR -- ALLOWED ON AUTO-REC LINE ONLY.
- * CASE 3(TSPEED,CA,BCF,MREC,W,CTYP,NCIR,NEN,COLLECT,EOF):
- * FLAG ERROR -- INVALID PARAMETER.
- *
- #
- *ENDIF
- #
- **** PROC HSPTERM - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- ITEM I; # SCRATCH ITEM #
- ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
- SWITCH HSPTJUMP NEXT$PARAM, # STIP #
- NEXT$PARAM, # TC #
- GEN$PARAM , # RIC #
- GEN$PARAM , # CSET #
- OTHERS , # TSPEED #
- OTHERS , # CA #
- HB$PARAM , # CO #
- OTHERS , # BCF #
- OTHERS , # MREC #
- OTHERS , # W #
- OTHERS , # CTYP #
- OTHERS , # NCIR #
- OTHERS , # NEN #
- OTHERS , # COLLECT #
- OTHERS , # XAUTO #
- OTHERS , # DT #
- OTHERS , # SDT #
- OTHERS , # TA #
- OTHERS , # ABL #
- OTHERS , # DBZ #
- OTHERS , # UBZ #
- OTHERS , # DBL #
- OTHERS , # UBL #
- OTHERS , # XBZ #
- OTHERS , # DO #
- OTHERS , # STREAM #
- OTHERS , # HN #
- OTHERS , # AUTOLOG #
- OTHERS , # AUTOCON #
- OTHERS , # PRI #
- OTHERS , # P80 #
- OTHERS , # P81 #
- OTHERS , # P82 #
- OTHERS , # P83 #
- OTHERS , # P84 #
- OTHERS , # P85 #
- OTHERS , # P86 #
- OTHERS , # P87 #
- OTHERS , # P88 #
- OTHERS , # P89 #
- OTHERS , # AB #
- OTHERS , # BR #
- OTHERS , # BS #
- OTHERS , # B1 #
- OTHERS , # B2 #
- OTHERS , # CI #
- OTHERS , # CN #
- OTHERS , # CT #
- OTHERS , # DLC #
- OTHERS , # DLTO #
- OTHERS , # DLX #
- OTHERS , # EP #
- OTHERS , # IN #
- OTHERS , # LI #
- OTHERS , # OP #
- OTHERS , # PA #
- OTHERS , # PG #
- OTHERS , # PL #
- OTHERS , # PW #
- OTHERS , # SE #
- OTHERS , # FA #
- OTHERS , # XLC #
- OTHERS , # XLX #
- OTHERS , # XLTO #
- OTHERS , # ELO #
- OTHERS , # ELX #
- OTHERS , # ELR #
- OTHERS , # EBO #
- OTHERS , # EBR #
- OTHERS , # CP #
- OTHERS , # IC #
- OTHERS , # OC #
- OTHERS , # LK #
- OTHERS , # EBX #
- OTHERS , # HD #
- OTHERS , # MC #
- OTHERS , # XLY #
- OTHERS , # EOF #
- OTHERS ; # PAD #
- # #
- # HSPTERM CODE BEGINS HERE #
- # #
- FOR I=2 STEP 1 UNTIL STWC[0]
- DO # FOR EACH VALUE-DECLARATION ENTRY #
- BEGIN
- SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
- GOTO HSPTJUMP[SWITCH$ID]; # GO TO APPROPRIATE PARAGRAPH #
- GEN$PARAM:
- GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]); # GENERAL PARAMETERS #
- GOTO NEXT$PARAM;
- HB$PARAM:
- IF AUTO$REC # IF ON AUTO-REC LINE #
- THEN
- BEGIN # CHECK HASP/BISYNC PARAMETER #
- HBTRMPR(SWITCH$ID,STWORD[I],STLNUM[0]);
- END
- ELSE # MUST BE ON NON-AUTO-REC LINE #
- BEGIN # FLAG ERROR -- VALID FOR AUTO-REC ONLY #
- NDLEM2(ERR107,STLNUM[0],KWDNAME[SWITCH$ID]);
- END
- GOTO NEXT$PARAM;
- OTHERS: # ALL OTHER PARAMETERS FLAG AS INVALID #
- IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
- THEN
- BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
- NDLEM2(ERR135,STLNUM[0],KWDNAME[SWITCH$ID]);
- END
- ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
- BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
- NDLEM2(ERR106,STLNUM[0],KWDNAME[SWITCH$ID]);
- END
- IF STKWID[I] EQ KID"PAD"
- THEN
- BEGIN # STATEMENT TABLE #
- I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
- END
- NEXT$PARAM: # GO TO NEXT PARAMETER #
- END
- IF NOT RIC$USED # IF RIC NOT SPECIFIED #
- THEN
- BEGIN
- RIC$FLAG = TRUE; # DEFAULT RIC VALUE TO YES #
- END
- RETURN; # **** RETURN **** #
- END # HSPTERM #
- CONTROL EJECT;
- PROC MD4TERM;
- BEGIN
- *IF,DEF,IMS
- #
- ** MD4TERM -- CHECK TERMINAL PARAMETERS LEGAL FOR MODE4 TIP.
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
- * ON THE STATEMENT.
- *
- * PROC MD4TERM
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION,
- * SELECT CASE THAT APPLIES,
- * CASE 1(RIC,CSET):
- * CHECK GENERAL PARAMETER.
- * CASE 2(CA)
- * CHECK MODE4 PARAMETER.
- * CASE 3(TSPEED,CO,BCF,MREC,W,CTYP,NCIR,NEN,COLLECT):
- * FLAG ERROR -- INVALID PARAMETER.
- * CASE 4(EOF):
- * SET EOF FLAG TO BE TRUE IF VALUE IS "YES".
- * IF CA WAS NOT SPECIFIED AND NOT AN AUTO-REC LINE.
- * FLAG ERROR -- REQUIRE PARAMETER MISSING.
- *
- #
- *ENDIF
- #
- **** PROC MD4TERM - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- ITEM I; # SCRATCH ITEM #
- ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
- SWITCH MD4TJUMP NEXT$PARAM, # STIP #
- NEXT$PARAM, # TC #
- GEN$PARAM , # RIC #
- GEN$PARAM , # CSET #
- OTHERS , # TSPEED #
- MD4$PARAM , # CA #
- OTHERS , # CO #
- OTHERS , # BCF #
- OTHERS , # MREC #
- OTHERS , # W #
- OTHERS , # CTYP #
- OTHERS , # NCIR #
- OTHERS , # NEN #
- OTHERS , # COLLECT #
- OTHERS , # XAUTO #
- OTHERS , # DT #
- OTHERS , # SDT #
- OTHERS , # TA #
- OTHERS , # ABL #
- OTHERS , # DBZ #
- OTHERS , # UBZ #
- OTHERS , # DBL #
- OTHERS , # UBL #
- OTHERS , # XBZ #
- OTHERS , # DO #
- OTHERS , # STREAM #
- OTHERS , # HN #
- OTHERS , # AUTOLOG #
- OTHERS , # AUTOCON #
- OTHERS , # PRI #
- OTHERS , # P80 #
- OTHERS , # P81 #
- OTHERS , # P82 #
- OTHERS , # P83 #
- OTHERS , # P84 #
- OTHERS , # P85 #
- OTHERS , # P86 #
- OTHERS , # P87 #
- OTHERS , # P88 #
- OTHERS , # P89 #
- OTHERS , # AB #
- OTHERS , # BR #
- OTHERS , # BS #
- OTHERS , # B1 #
- OTHERS , # B2 #
- OTHERS , # CI #
- OTHERS , # CN #
- OTHERS , # CT #
- OTHERS , # DLC #
- OTHERS , # DLTO #
- OTHERS , # DLX #
- OTHERS , # EP #
- OTHERS , # IN #
- OTHERS , # LI #
- OTHERS , # OP #
- OTHERS , # PA #
- OTHERS , # PG #
- OTHERS , # PL #
- OTHERS , # PW #
- OTHERS , # SE #
- OTHERS , # FA #
- OTHERS , # XLC #
- OTHERS , # XLX #
- OTHERS , # XLTO #
- OTHERS , # ELO #
- OTHERS , # ELX #
- OTHERS , # ELR #
- OTHERS , # EBO #
- OTHERS , # EBR #
- OTHERS , # CP #
- OTHERS , # IC #
- OTHERS , # OC #
- OTHERS , # LK #
- OTHERS , # EBX #
- OTHERS , # HD #
- OTHERS , # MC #
- OTHERS , # XLY #
- EOF$ , # EOF #
- OTHERS ; # PAD #
- # #
- # MD4TERM CODE BEGINS HERE #
- # #
- FOR I=2 STEP 1 UNTIL STWC[0]
- DO # FOR EACH VALUE-DECLARATION ENTRY #
- BEGIN
- SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
- GOTO MD4TJUMP[SWITCH$ID]; # GO TO APPROPRIATE PARAGRAPH #
- GEN$PARAM:
- GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]); # GENERAL PARAMETERS #
- GOTO NEXT$PARAM;
- MD4$PARAM:
- MTRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]); # MODE4 PARAMETERS #
- GOTO NEXT$PARAM;
- EOF$: EOF$USED = TRUE; # SET EOF SPECIFIED TO TRUE #
- CRNT$EOF = ( STVALNAM[I] EQ "YES" ); # IF YES THEN TRUE ELSE #
- # FALSE #
- GOTO NEXT$PARAM;
- OTHERS: # ALL OTHER PARAMETERS FLAG AS INVALID #
- IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
- THEN
- BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
- NDLEM2(ERR135,STLNUM[0],KWDNAME[SWITCH$ID]);
- END
- ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
- BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
- NDLEM2(ERR106,STLNUM[0],KWDNAME[SWITCH$ID]);
- END
- IF STKWID[I] EQ KID"PAD"
- THEN
- BEGIN # STATEMENT TABLE #
- I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
- END
- NEXT$PARAM: # GO TO NEXT PARAMETER #
- END
- IF NOT CA$USED AND # IF CA NOT SPECIFIED AND NOT #
- NOT AUTO$REC # AN AUTO-REC LINE #
- THEN
- BEGIN # FLAG ERROR -- CA PARAMETER MISSING #
- NDLEM2(ERR103,STLNUM[0],"CA");
- END
- RETURN; # **** RETURN **** #
- END # MD4TERM #
- CONTROL EJECT;
- PROC MTRMPRM(MTRM$ID,MTRM$WORD,MTRM$LINE);
- BEGIN
- *IF,DEF,IMS
- #
- ** MTRMPRM -- CHECK MODE4 TERMINAL PARAMETERS.
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE CHECKS PARAMETERS THAT ARE ONLY LEGAL FOR MODE4
- * TERMINALS.
- *
- * PROC MTRMPRM(MTRM$ID,MTRM$WORD,MTRM$LINE)
- *
- * ENTRY MTRM$ID = NUMBER IDENTIFYING KEYWORD.
- * MTRM$WORD = VALUE DECLARATION ENTRY.
- * MTRM$LINE = CURRENT SOURCE LINE NUMBER.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * IF VALUE IS O.K.,
- * IF VALUE IS NOT -AUTO-REC-,
- * THEN,
- * CHECK IF VALUE IS IN RANGE,
- * IF IN RANGE,
- * IF VALUE IS NOT UNIQUE,
- * FLAG ERROR -- CA VALUE IS NOT UNIQUE.
- * PUT CA VALUE IN CURRENT TERMINAL ENTRY.
- * OTHERWISE,
- * IF CURRENT LINE IS AUTO-REC,
- * FLAG ERROR -- AUTOREC VALUE NOT VALID.
- *
- #
- *ENDIF
- ITEM MTRM$ID; # KEYWORD I.D. FOR SWITCH #
- ITEM MTRM$LINE; # STATEMENT LINE NUMBER #
- ARRAY MTRM$WORD [0:0] S(1); # VALUE DECLARATION ENTRY #
- BEGIN
- ITEM MTRM$KWID (0,0,9); # KEYWORD I.D. FROM PASS 1 #
- ITEM MTRM$VLERR B(0,17,1); # VALUE ERROR FLAG #
- ITEM MTRM$VALNAM C(0,18,7); # CHARACTER VALUE #
- ITEM MTRM$VALNUM (0,18,42); # INTEGER VALUE #
- END
- #
- **** PROC MTRMPRM - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLCKRG; # CHECK IF VALUE IS IN RANGE #
- PROC NDLEM2; # MAKE ENTRY IN PASS 2 ERROR FILE #
- FUNC XCHD; # CONVERTS HEX VALUE TO HEX DISPLAY CODE #
- END
- #
- ****
- #
- ITEM ITEMP; # INTEGER TEMPORARY #
- DEF ZERO # 0 #; # ZERO = 0 #
- DEF MAX$USR # 255 #; # MAXIMUM VALUE OF CA FOR USER #
- ITEM MTRM$STAT B; # RETURNED STATUS FROM RANGE CHECK PROC #
- CONTROL EJECT;
- # #
- # MTRMPRM CODE BEGINS HERE #
- # #
- CA$USED = TRUE; # SET CA SPECIFIED FLAG #
- IF NOT MTRM$VLERR[0] # VALUE IS O.K. #
- THEN
- BEGIN
- IF MTRM$VALNAM NQ "AUTOREC" # IF VALUE IS NOT AUTOREC #
- THEN
- BEGIN # CHECK IF CA IS WITHIN RANGE #
- IF CRNT$TIP EQ TIP"USER"
- THEN
- BEGIN
- MTRM$STAT = TRUE; # SET STATUS TO TRUE #
- IF MTRM$VALNUM[0] LS ZERO OR
- MTRM$VALNUM[0] GR MAX$USR
- THEN
- BEGIN
- NDLEM2(ERR100,STLNUM[0],XCHD(MTRM$VALNUM[0]));
- # GENERATE ERR100 #
- MTRM$STAT = FALSE;
- END
- END
- ELSE IF CRNT$TIP EQ TIP"$3270"
- THEN
- BEGIN # IF TIPTYPE IS 3270 #
- MTRM$STAT = TRUE; # SET STATUS TO O.K. #
- IF MTRM$VALNUM[0] LS 0 OR
- MTRM$VALNUM[0] GR 31
- THEN # VALUE IS OUT OF RANGE #
- BEGIN # FLAG ERROR ---> #
- NDLEM2(ERR100,STLNUM[0],XCHD(MTRM$VALNUM[0]));
- MTRM$STAT = FALSE; # SET ERROR STATUS #
- END
- END
- ELSE
- BEGIN # ALL OTHER TIPTYPES #
- NDLCKRG(MTRM$KWID[0],MTRM$VALNUM[0],MTRM$STAT);
- # CALL THE CHECK RANGE PROC #
- END
- IF MTRM$STAT # IF IT IS WITHIN RANGE #
- THEN
- BEGIN # IF TIPTYPE IS NOT USER OR #
- IF CRNT$TIP NQ TIP"USER" AND # UNKNOWN, AND NOT AN #
- CRNT$TIP NQ TIP"UNKNOWN" AND # AUTO-REC LINE #
- NOT AUTO$REC
- THEN # CHECK FOR DUPLICATE CA VALUE #
- BEGIN
- IF CRNT$TIP NQ TIP"$3270"
- THEN
- ITEMP = MTRM$VALNUM[0] - X"70";
- ELSE
- ITEMP = MTRM$VALNUM[0];# FOR 3270 #
- IF B<ITEMP,1>CA$MAP EQ 1
- THEN # IF CA VALUE IS ALREADY USED #
- BEGIN # FLAG ERROR -- DUPLICATE CA #
- NDLEM2(ERR109,MTRM$LINE," ");
- END
- ELSE # CA VALUE HAS NOT BEEN USED #
- BEGIN # SET FLAG FOR VALUE #
- B<ITEMP,1>CA$MAP = 1;
- END
- END
- TEA1[CRNT$TERM+1] = MTRM$VALNUM[0];
- END
- END
- ELSE # VALUE IS AUTOREC #
- BEGIN
- IF NOT AUTO$REC # IF NOT AN AUTO-REC LINE #
- THEN
- BEGIN # FLAG ERROR -- AUTOREC NOT VALID #
- NDLEM2(ERR113,MTRM$LINE," ");
- END
- END
- END
- RETURN; # **** RETURN **** #
- END # MTRMPRM #
- CONTROL EJECT;
- PROC USRTERM;
- BEGIN
- *IF,DEF,IMS
- #
- ** USRTERM -- CHECK TERMINALS PARAMETERS LEGAL FOR USER TIP.
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
- * ON THE STATEMENT.
- *
- * PROC USRTERM
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION,
- * SELECT CASE THAT APPLIES,
- * CASE 1(RIC,CSET):
- * CHECK GENERAL PARAMETER.
- * CASE 2(TSPEED):
- * CHECK ASYNC PARAMETER.
- * CASE 3(CA):
- * CHECK MODE4 PARAMETER.
- * CASE 4(CO):
- * CHECK HASP/BSC PARAMETER.
- * CASE 5(EOF):
- * SET EOF FLAG TO TRUE IF VALUE IS "YES".
- * CASE 6(W,CTYP,NCIR,NEN,COLLECT):
- * CHECK X.25 PARAMETER.
- * CASE 7(BCF,MREC):
- * CHECK BSC PARAMETER.
- * IF NEN IS NOT USED,
- * SET VALUE OF NEN TO BE CURRENT VALEU OF NCIR.
- *
- #
- *ENDIF
- ITEM I; # SCRATCH ITEM -- POINTS TO CURRNT VAL-DEC#
- ITEM CTEMP C(10); # CHARACTER TEMPORARY #
- ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
- SWITCH USRTJUMP NEXT$PARAM, # STIP #
- NEXT$PARAM, # TC #
- GEN$PARAM , # RIC #
- GEN$PARAM , # CSET #
- ASY$PARAM , # TSPEED #
- MD4$PARAM , # CA #
- HB$PARAM , # CO #
- BSC$PARAM , # BCF #
- BSC$PARAM , # MREC #
- X25$PARAM , # W #
- X25$PARAM , # CTYP #
- X25$PARAM , # NCIR #
- X25$PARAM , # NEN #
- X25$PARAM , # COLLECT #
- NEXT$PARAM, # XAUTO #
- NEXT$PARAM, # DT #
- NEXT$PARAM, # SDT #
- NEXT$PARAM, # TA #
- NEXT$PARAM, # ABL #
- NEXT$PARAM, # DBZ #
- NEXT$PARAM, # UBZ #
- NEXT$PARAM, # DBL #
- NEXT$PARAM, # UBL #
- NEXT$PARAM, # XBZ #
- NEXT$PARAM, # DO #
- NEXT$PARAM, # STREAM #
- NEXT$PARAM, # HN #
- NEXT$PARAM, # AUTOLOG #
- NEXT$PARAM, # AUTOCON #
- NEXT$PARAM, # PRI #
- NEXT$PARAM, # P80 #
- NEXT$PARAM, # P81 #
- NEXT$PARAM, # P82 #
- NEXT$PARAM, # P83 #
- NEXT$PARAM, # P84 #
- NEXT$PARAM, # P85 #
- NEXT$PARAM, # P86 #
- NEXT$PARAM, # P87 #
- NEXT$PARAM, # P88 #
- NEXT$PARAM, # P89 #
- NEXT$PARAM, # AB #
- NEXT$PARAM, # BR #
- NEXT$PARAM, # BS #
- NEXT$PARAM, # B1 #
- NEXT$PARAM, # B2 #
- NEXT$PARAM, # CI #
- NEXT$PARAM, # CN #
- NEXT$PARAM, # CT #
- NEXT$PARAM, # DLC #
- NEXT$PARAM, # DLTO #
- NEXT$PARAM, # DLX #
- NEXT$PARAM, # EP #
- NEXT$PARAM, # IN #
- NEXT$PARAM, # LI #
- NEXT$PARAM, # OP #
- NEXT$PARAM, # PA #
- NEXT$PARAM, # PG #
- NEXT$PARAM, # PL #
- NEXT$PARAM, # PW #
- NEXT$PARAM, # SE #
- NEXT$PARAM, # FA #
- NEXT$PARAM, # XLC #
- NEXT$PARAM, # XLX #
- NEXT$PARAM, # XLTO #
- NEXT$PARAM, # ELO #
- NEXT$PARAM, # ELX #
- NEXT$PARAM, # ELR #
- NEXT$PARAM, # EBO #
- NEXT$PARAM, # EBR #
- NEXT$PARAM, # CP #
- NEXT$PARAM, # IC #
- NEXT$PARAM, # OC #
- NEXT$PARAM, # LK #
- NEXT$PARAM, # EBX #
- NEXT$PARAM, # HD #
- NEXT$PARAM, # MC #
- NEXT$PARAM, # XLY #
- EOF$ , # EOF #
- X25$PARAM ; # PAD #
- # #
- # USRTERM CODE BEGINS HERE #
- # #
- FOR I=2 STEP 1 UNTIL STWC[0]
- DO # FOR EACH VALUE DECLARATION ENTRY #
- BEGIN
- SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
- GOTO USRTJUMP[SWITCH$ID]; # GO TO APPROPRIATE PARAGRAPH #
- GEN$PARAM: # CHECK GENERAL PARAMETERS #
- GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]);
- GOTO NEXT$PARAM;
- ASY$PARAM: # CHECK ASYNC PARAMETERS #
- ATRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]);
- GOTO NEXT$PARAM;
- MD4$PARAM: # CHECK MODE4 PARAMETERS #
- MTRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]);
- GOTO NEXT$PARAM;
- EOF$: EOF$USED = TRUE; # SET EOF USED TO TRUE #
- CRNT$EOF = (STVALNAM[I] EQ "YES");
- GOTO NEXT$PARAM;
- HB$PARAM: # CHECK HASP/BSC PARAMETERS #
- HBTRMPR(SWITCH$ID,STWORD[I],STLNUM[0]);
- GOTO NEXT$PARAM;
- X25$PARAM: # CHECK X25 PARAMETERS #
- XTRMPRM(SWITCH$ID,STMT$TABLE[I],STLNUM[0]);
- IF STKWID[I] EQ KID"PAD"
- THEN
- BEGIN # STATEMENT TABLE #
- I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
- END
- GOTO NEXT$PARAM;
- BSC$PARAM: # CHECK BSC PARAMETERS #
- BTRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]);
- GOTO NEXT$PARAM;
- NEXT$PARAM: # GO TO NEXT PARAMETER #
- END
- CTEMP = "STIP";
- C$USR$PRM2(CRNT$STIP,CTEMP); # CHECK IF STIP IS USED #
- CTEMP = "TC";
- C$USR$PRM2(CRNT$TC,CTEMP); # CHECK IF TC IS SPECIFIED #
- IF NOT NEN$USED
- THEN # IF NEN IS NOT USED, CHECK THE #
- BEGIN # CURRENT NEN VALUE AGAIN #
- CRNT$NEN = CRNT$NCIR; # ASSUME LATEST VALUE OF NCIR #
- END
- RETURN; # **** RETURN **** #
- END # USRTERM #
- CONTROL EJECT;
- PROC XTRMPRM(XTRM$ID,XTRM$WORD,XTRM$LINE);
- BEGIN
- *IF,DEF,IMS
- #
- ** XTRMPRM -- CHECK X.25 TERMINAL PARAMETER.
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE CHECK PARAMETERS THAT ARE ONLY LEGAL FOR X.25
- * TERMINALS.
- *
- * PROC XTRMPRM(XTRM$ID,XTRM$WORD,XTRM$LINE)
- *
- * ENTRY XTRM$ID = NUMBER IDENTIFYING KEYWORD.
- * XTRM$WORD = VALUE DECLARATION ENTRY.
- * XTRM$LINE = CURRENT SOURCE LINE NUMBER.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * SELECT CASE THAT APPLIES,
- * CASE 1(W):
- * IF VALUE IS O.K.
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * SAVE CURRENT W VALUE.
- * CASE 2(CTYP):
- * IF VALUE IS O.K.,
- * IF VALUE IS PVC,
- * THEN
- * SET CURRENT CTYP TO PVC.
- * INCREMENT PVC COUNT.
- * IF SUBTIPTYPE IS NOT XAA,
- * FLAG ERROR - SUBTIP MUST BE XAA FOR PVC.
- * IF SVC WAS PREVIOUSLY SPECIFIED,
- * FLAG ERROR -- ALL PVC-S MUST BE SPECIFIED BEFORE ANY SVC
- * OTHERWISE,
- * SET CURRENT CTYP TO SVC.
- * CASE 3(NCIR):
- * IF VALUE IS O.K.
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * SAVE CURRENT NCIR VALUE.
- * CASE 4(NEN):
- * IF VALUE IS O.K.,
- * CHECK IF VALUE IS IN RANGE.
- * IF IN RANGE,
- * SAVE CURRENT NEN VALUE.
- * CASE 5(COLLECT):
- * SET COLLECT SPECIFIED FLAG.
- * IF STIP IS NOT *PAD*
- * FLAG ERROR -- PARAM INVALID WITH SSTIP SPECIFIED.
- * IF VALUE IS *YES*
- * SET THE COLLECT FLAG.
- *
- #
- *ENDIF
- ITEM XTRM$ID; # KEYWORD I.D. FOR SWITCH #
- ITEM XTRM$LINE; # STATEMENT LINE NUMBER #
- ARRAY XTRM$WORD [0:0] S(1); # VALUE DECLARATION ENTRY #
- BEGIN
- ITEM XTRM$KWID (0,0,9); # KEYWORD I.D. FROM PASS 1 #
- ITEM XTRM$VLERR B(0,17,1); # VALUE ERROR FLAG #
- ITEM XTRM$VALNAM C(0,18,7); # CHARACTER VALUE #
- ITEM XTRM$VALNUM (0,18,42); # INTEGER VALUE #
- ITEM XTRM$PAD (0,0,60); # PAD ENTRY VALUES #
- END
- #
- **** PROC XTRMPRM - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLCKRG; # CHECK IF VALUE IS WITHIN RANGE #
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- ITEM XTRM$STAT B; # STATUS RETURNED BY RANGE CHECK PROC #
- ITEM I; # SCRATCH VARIABLE #
- SWITCH XTRMJUMP , # STIP #
- , # TC #
- , # RIC #
- , # CSET #
- , # TSPEED #
- , # CA #
- , # CO #
- , # BCF #
- , # MREC #
- W, # W #
- CTYP$, # CTYP #
- NCIR, # NCIR #
- NEN, # NEN #
- COLLECT, # COLLECT #
- , # XAUTO #
- , # DT #
- , # SDT #
- , # TA #
- , # ABL #
- , # DBZ #
- , # UBZ #
- , # DBL #
- , # UBL #
- , # XBZ #
- , # DO #
- , # STREAM #
- , # HN #
- , # AUTOLOG #
- , # AUTOCON #
- , # PRI #
- , # P80 #
- , # P81 #
- , # P82 #
- , # P83 #
- , # P84 #
- , # P85 #
- , # P86 #
- , # P87 #
- , # P88 #
- , # P89 #
- , # AB #
- , # BR #
- , # BS #
- , # B1 #
- , # B2 #
- , # CI #
- , # CN #
- , # CT #
- , # DLC #
- , # DLTO #
- , # DLX #
- , # EP #
- , # IN #
- , # LI #
- , # OP #
- , # PA #
- , # PG #
- , # PL #
- , # PW #
- , # SE #
- , # FA #
- , # XLC #
- , # XLX #
- , # XLTO #
- , # ELO #
- , # ELX #
- , # ELR #
- , # EBO #
- , # EBR #
- , # CP #
- , # IC #
- , # OC #
- , # LK #
- , # EBX #
- , # HD #
- , # MC #
- , # XLY #
- , # EOF #
- PAD$ ; # PAD #
- CONTROL EJECT;
- # #
- # XTRMPRM CODE BEGINS HERE #
- # #
- GOTO XTRMJUMP[XTRM$ID]; # CHECK GIVEN VALUE DECLARATION #
- W:
- W$USED = TRUE; # SET W SPECIFIED FLAG #
- IF NOT XTRM$VLERR # IF VALUE IS O.K. #
- THEN
- BEGIN # CHECK IF W IS WITHIN RANGE #
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(XTRM$VALNUM[0],USR$WID1,NUM"DEC",XTRM$STAT);
- END
- ELSE
- BEGIN
- NDLCKRG(XTRM$KWID[0],XTRM$VALNUM[0],XTRM$STAT);
- END
- IF XTRM$STAT # IF IT IS WITHIN RANGE #
- THEN
- BEGIN
- CRNT$W = XTRM$VALNUM[0]; # SAVE W VALUE #
- END
- END
- GOTO NEXT$PARAM;
- CTYP$:
- CTYP$USED = TRUE; # SET CTYP SPECIFIED FLAG #
- IF NOT XTRM$VLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF XTRM$VALNAM[0] EQ "PVC" # IF VALUE IS -PVC- #
- THEN
- BEGIN
- CRNT$CTYP = CTYP"PVC"; # SET CURRENT CTYP TO BE PVC #
- PVC$CNT = PVC$CNT + 1; # INCREMENT PVC COUNT #
- IF CRNT$STIP NQ STIP"XAA" # IF STIP IS NOT XAA #
- THEN
- BEGIN
- NDLEM2(ERR111,XTRM$LINE,"PVC");
- END
- IF SVC$SPEC # IF SVC HAS BEEN PREVIOUSLY SPECIFIED #
- THEN
- BEGIN # FLAG ERROR -- SPECIFY PVC BEFORE ALL SVC#
- NDLEM2(ERR114,XTRM$LINE," ");
- END
- END
- ELSE # VALUE MUST BE -SVC- #
- BEGIN
- CRNT$CTYP = CTYP"SVC"; # SET CRNT CTYP TO SVC #
- END
- END
- GOTO NEXT$PARAM;
- NCIR:
- NCIR$USED = TRUE; # SET NCIR SPECIFIED FLAG #
- IF NOT XTRM$VLERR # IF VALUE IS O.K. #
- THEN
- BEGIN # CHECK IF NCIR IS WITHIN RANGE #
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(XTRM$VALNUM[0],USR$WID1,NUM"DEC",XTRM$STAT);
- # CHECK USER RANGE #
- END
- ELSE
- BEGIN
- NDLCKRG(XTRM$KWID[0],XTRM$VALNUM[0],XTRM$STAT);
- # CHECK NORMAL RANGE #
- END
- CRNT$NCIR = XTRM$VALNUM[0]; # SAVE NCIR VALUE #
- END
- GOTO NEXT$PARAM;
- NEN:
- NEN$USED = TRUE; # SET NEN SPECIFIED FLAG #
- IF NOT XTRM$VLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN # CHECK IF NEN IS WITHIN RANGE #
- IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
- THEN
- BEGIN
- USR$RANGE(XTRM$VALNUM[0],USR$WID1,NUM"DEC",XTRM$STAT);
- # CHECK USER RANGE #
- END
- ELSE
- BEGIN
- NDLCKRG(XTRM$KWID[0],XTRM$VALNUM[0],XTRM$STAT);
- # CHECK NORMAL RANGE #
- END
- IF XTRM$STAT # IF IT IS IN RANGE #
- THEN
- BEGIN
- CRNT$NEN = XTRM$VALNUM[0]; # SAVE NEN VALUE #
- END
- END
- GOTO NEXT$PARAM;
- COLLECT:
- COLLECT$USED = TRUE; # SET COLLECT SPECIFIED FLAG #
- IF NOT XTRM$VLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF CRNT$TIP NQ TIP"USER" AND
- CRNT$STIP NQ STIP"PAD" AND
- CRNT$STIP NQ STIP"USER"
- THEN
- BEGIN # FLAG ERROR -- PARAM INVALID WITH STIP #
- NDLEM2(ERR135,XTRM$LINE,"COLLECT");
- END
- IF XTRM$VALNAM[0] EQ "YES"
- THEN
- BEGIN
- COLLECT$FLAG = TRUE;
- END
- END
- GOTO NEXT$PARAM;
- PAD$:
- IF NOT XTRM$VLERR[0] # IF VALUE IS O.K. #
- THEN
- BEGIN
- IF CRNT$TIP NQ TIP"USER" AND
- CRNT$STIP NQ STIP"XAA" AND
- CRNT$STIP NQ STIP"PAD"
- THEN
- BEGIN # FLAG ERROR -- PARAM INVALID WITH STIP #
- NDLEM2(ERR135,XTRM$LINE,"PAD");
- END
- ELSE
- BEGIN # SAVE NUMBER OF 8-BIT PAD ENTRIES #
- CRNT$DEPAD = XTRM$VALNUM[0];
- CRNT$DEPADW = (CRNT$DEPAD*8 +59) / 60; # NO. WORDS FOR PAD #
- FOR I = 1 STEP 1 UNTIL CRNT$DEPADW
- DO
- BEGIN # SAVE CURRENT PAD VALUE #
- CRNT$PAD[I] = XTRM$PAD[I];
- END
- END
- END
- GOTO NEXT$PARAM;
- NEXT$PARAM:
- RETURN; # **** RETURN **** #
- END # XTRMPRM #
- CONTROL EJECT;
- PROC X25TERM;
- BEGIN
- *IF,DEF,IMS
- #
- ** X25TERM -- CHECKS TERMINALS PARAMETERS LEGAL FOR X.25 TIP.
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
- * ON THE STATEMENT.
- *
- * PROC X25TERM
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION,
- * SELECT CASE THAT APPLIES.
- * CASE 1(RIC,CSET):
- * CHECK GENERAL PARAMETER.
- * CASE 2(W,CTYP,NCIR,NEN,COLLECT):
- * CHECK X.25 PARAMETER.
- * CASE 3(TSPEED,CA,CO,BCF,MREC,EOF):
- * FLAG ERROR -- ILLEGAL WITH TIPTYPE SPECIFIED.
- * IF W WAS NOT SPECIFIED,
- * FLAG ERROR -- REQUIRED PARAMETER MISSING.
- * IF CTYP WAS NOT SPECIFIED
- * DEFAULT CTYP TO SVC.
- * IF CTYP IS SVC,
- * THEN,
- * IF NCIR IS GREATER THAN NSVC VALUE,
- * FLAG ERROR -- NCIR VALUE TOO LARGE.
- * IF NEN WAS NOT SPECIFIED,
- * THEN,
- * DEFAULT NEN TO NCIR VALUE.
- * OTHERWISE,
- * IF NEN IS GREATER THAN NCIR VALUE,
- * FLAG ERROR -- NEN VALUE TO LARGE.
- * OTHERWISE,(CTYP IS PVC)
- * IF NCIR WAS SPECIFIED,
- * FLAG ERROR -- NCIR ONLY VALID WITH SVC.
- * IF NEN WAS SPECIFIED,
- * FLAG ERROR -- NEN ONLY VALID WITH SVC.
- *
- #
- *ENDIF
- #
- **** PROC X25TERM - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- ITEM I; # SCRATCH ITEM #
- ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
- SWITCH X25TJUMP NEXT$PARAM, # STIP #
- NEXT$PARAM, # TC #
- GEN$PARAM , # RIC #
- GEN$PARAM , # CSET #
- OTHERS , # TSPEED #
- OTHERS , # CA #
- OTHERS , # CO #
- OTHERS , # BCF #
- OTHERS , # MREC #
- X25$PARAM , # W #
- X25$PARAM , # CTYP #
- X25$PARAM , # NCIR #
- X25$PARAM , # NEN #
- X25$PARAM , # COLLECT #
- OTHERS , # XAUTO #
- OTHERS , # DT #
- OTHERS , # SDT #
- OTHERS , # TA #
- OTHERS , # ABL #
- OTHERS , # DBZ #
- OTHERS , # UBZ #
- OTHERS , # DBL #
- OTHERS , # UBL #
- OTHERS , # XBZ #
- OTHERS , # DO #
- OTHERS , # STREAM #
- OTHERS , # HN #
- OTHERS , # AUTOLOG #
- OTHERS , # AUTOCON #
- OTHERS , # PRI #
- OTHERS , # P80 #
- OTHERS , # P81 #
- OTHERS , # P82 #
- OTHERS , # P83 #
- OTHERS , # P84 #
- OTHERS , # P85 #
- OTHERS , # P86 #
- OTHERS , # P87 #
- OTHERS , # P88 #
- OTHERS , # P89 #
- OTHERS , # AB #
- OTHERS , # BR #
- OTHERS , # BS #
- OTHERS , # B1 #
- OTHERS , # B2 #
- OTHERS , # CI #
- OTHERS , # CN #
- OTHERS , # CT #
- OTHERS , # DLC #
- OTHERS , # DLTO #
- OTHERS , # DLX #
- OTHERS , # EP #
- OTHERS , # IN #
- OTHERS , # LI #
- OTHERS , # OP #
- OTHERS , # PA #
- OTHERS , # PG #
- OTHERS , # PL #
- OTHERS , # PW #
- OTHERS , # SE #
- OTHERS , # FA #
- OTHERS , # XLC #
- OTHERS , # XLX #
- OTHERS , # XLTO #
- OTHERS , # ELO #
- OTHERS , # ELX #
- OTHERS , # ELR #
- OTHERS , # EBO #
- OTHERS , # EBR #
- OTHERS , # CP #
- OTHERS , # IC #
- OTHERS , # OC #
- OTHERS , # LK #
- OTHERS , # EBX #
- OTHERS , # HD #
- OTHERS , # MC #
- OTHERS , # XLY #
- OTHERS , # EOF #
- X25$PARAM ; # PAD #
- # #
- # X25TERM CODE BEGINS HERE #
- # #
- FOR I=2 STEP 1 UNTIL STWC[0]
- DO # FOR EACH VALUE DECLARATION ENTRY #
- BEGIN
- SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
- GOTO X25TJUMP[SWITCH$ID]; # GOTO APPROPRIATE PARAGRAPH #
- GEN$PARAM:
- GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]); # GENERAL PARAMETERS #
- GOTO NEXT$PARAM;
- X25$PARAM:
- XTRMPRM(SWITCH$ID,STMT$TABLE[I],STLNUM[0]); # X25 PARAMETERS #
- IF STKWID[I] EQ KID"PAD"
- THEN
- BEGIN # STATEMENT TABLE #
- I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
- END
- GOTO NEXT$PARAM;
- OTHERS: # ALL OTHER PARAMETERS FLAG AS INVALID #
- NDLEM2(ERR106,STLNUM[0],KWDNAME[SWITCH$ID]); # FOR X25 LINES #
- NEXT$PARAM: # GO TO NEXT PARAMETER #
- END
- IF NOT W$USED # IF W NOT SPECIFIED #
- THEN
- BEGIN # ASSIGN DEFAULT VALUE #
- CRNT$W = W$DEF;
- END
- IF NOT CTYP$USED # IF CTYP NOT SPECIFIED #
- THEN
- BEGIN
- CRNT$CTYP = CTYP"SVC"; # DEFAULT CTYP #
- END
- IF SVC$CNT GR 0 # LINE SUPPORTS SVC #
- THEN
- BEGIN
- IF CRNT$CTYP EQ CTYP"SVC"
- THEN
- BEGIN
- IF B<CRNT$STIP,1>XTERMASK EQ 0 # NO TERMINAL DEFINED YET #
- THEN
- BEGIN
- B<CRNT$STIP,1>XTERMASK = 1; # SET FLAG #
- END
- ELSE
- BEGIN
- NDLEM2(ERR167,STLNUM[0],STIP$VAL[CRNT$STIP]);
- END
- END
- END
- IF CRNT$CTYP EQ CTYP"SVC" # IF CTYP IS SVC #
- THEN
- BEGIN
- IF CRNT$NCIR GR SVC$CNT
- THEN # NCIR VALUE LARGER THAN SVC COUNT ALLOTED#
- BEGIN
- NDLEM2(ERR150,STLNUM[0]," "); # FLAG ERROR -- NCIR TOO BIG #
- END
- SVC$SPEC = TRUE; # SET SVC SPECIFIED FLAG #
- IF NOT NEN$USED # IF NEN NOT SPECIFIED #
- THEN
- BEGIN
- CRNT$NEN = CRNT$NCIR; # DEFAULT NEN IS NCIR VALUE #
- END
- ELSE # NEN SPECIFIED #
- BEGIN
- IF CRNT$NEN GR CRNT$NCIR # IF NEN VALUE GREATER THAN NCIR#
- THEN
- BEGIN # FLAG ERROR -- NEN MUST NOT BE GREATER #
- NDLEM2(ERR118,STLNUM[0]," "); # THAN NCIR VALUE #
- END
- END
- END
- ELSE # CTYP IS PVC OR UNKNOWN #
- BEGIN
- IF NCIR$USED # IF NCIR WAS SPECIFIED #
- THEN
- BEGIN # FLAG ERROR -- NCIR ONLY VALID WITH SVC #
- NDLEM2(ERR101,STLNUM[0],"NCIR");
- END
- IF NEN$USED # IF NEN WAS SPECIFIED #
- THEN
- BEGIN # FLAG ERROR -- NEN VALID WITH SVC ONLY #
- NDLEM2(ERR101,STLNUM[0],"NEN");
- END
- END
- RETURN; # **** RETURN **** #
- END # X25TERM #
- CONTROL EJECT;
- PROC $3270TRM;
- BEGIN
- *IF,DEF,IMS
- #
- ** $3270TRM -- CHECK TERMINAL PARAMETERS LEGAL FOR MODE4 TIP.
- *
- * D.K. ENDO 81/12/01
- *
- * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
- * ON THE STATEMENT.
- *
- * PROC $3270TRM
- *
- * ENTRY NONE.
- *
- * EXIT NONE.
- *
- * METHOD
- *
- * FOR EACH VALUE DECLARATION,
- * SELECT CASE THAT APPLIES,
- * CASE 1(RIC,CSET):
- * CHECK GENERAL PARAMETER.
- * CASE 2(CA)
- * CHECK MODE4 PARAMETER.
- * CASE 3(TSPEED,CO,BCF,MREC,W,CTYP,NCIR,NEN,COLLECT,EOF):
- * FLAG ERROR -- INVALID PARAMETER.
- * IF CA WAS NOT SPECIFIED AND NOT AN AUTO-REC LINE.
- * FLAG ERROR -- REQUIRE PARAMETER MISSING.
- *
- #
- *ENDIF
- #
- **** PROC $3270TRM - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
- END
- #
- ****
- #
- ITEM I; # SCRATCH ITEM #
- ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
- SWITCH $3270JMP NEXT$PARAM, # STIP #
- NEXT$PARAM, # TC #
- GEN$PARAM , # RIC #
- GEN$PARAM , # CSET #
- OTHERS , # TSPEED #
- MD4$PARAM , # CA #
- OTHERS , # CO #
- OTHERS , # BCF #
- OTHERS , # MREC #
- OTHERS , # W #
- OTHERS , # CTYP #
- OTHERS , # NCIR #
- OTHERS , # NEN #
- OTHERS , # COLLECT #
- OTHERS , # XAUTO #
- OTHERS , # DT #
- OTHERS , # SDT #
- OTHERS , # TA #
- OTHERS , # ABL #
- OTHERS , # DBZ #
- OTHERS , # UBZ #
- OTHERS , # DBL #
- OTHERS , # UBL #
- OTHERS , # XBZ #
- OTHERS , # DO #
- OTHERS , # STREAM #
- OTHERS , # HN #
- OTHERS , # AUTOLOG #
- OTHERS , # AUTOCON #
- OTHERS , # PRI #
- OTHERS , # P80 #
- OTHERS , # P81 #
- OTHERS , # P82 #
- OTHERS , # P83 #
- OTHERS , # P84 #
- OTHERS , # P85 #
- OTHERS , # P86 #
- OTHERS , # P87 #
- OTHERS , # P88 #
- OTHERS , # P89 #
- OTHERS , # AB #
- OTHERS , # BR #
- OTHERS , # BS #
- OTHERS , # B1 #
- OTHERS , # B2 #
- OTHERS , # CI #
- OTHERS , # CN #
- OTHERS , # CT #
- OTHERS , # DLC #
- OTHERS , # DLTO #
- OTHERS , # DLX #
- OTHERS , # EP #
- OTHERS , # IN #
- OTHERS , # LI #
- OTHERS , # OP #
- OTHERS , # PA #
- OTHERS , # PG #
- OTHERS , # PL #
- OTHERS , # PW #
- OTHERS , # SE #
- OTHERS , # FA #
- OTHERS , # XLC #
- OTHERS , # XLX #
- OTHERS , # XLTO #
- OTHERS , # ELO #
- OTHERS , # ELX #
- OTHERS , # ELR #
- OTHERS , # EBO #
- OTHERS , # EBR #
- OTHERS , # CP #
- OTHERS , # IC #
- OTHERS , # OC #
- OTHERS , # LK #
- OTHERS , # EBX #
- OTHERS , # HD #
- OTHERS , # MC #
- OTHERS , # XLY #
- OTHERS , # EOF #
- OTHERS ; # PAD #
- # #
- # $3270TRM CODE BEGINS HERE #
- # #
- FOR I=2 STEP 1 UNTIL STWC[0]
- DO # FOR EACH VALUE-DECLARATION ENTRY #
- BEGIN
- SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
- GOTO $3270JMP[SWITCH$ID]; # GO TO APPROPRIATE PARAGRAPH #
- GEN$PARAM:
- GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]); # GENERAL PARAMETERS #
- GOTO NEXT$PARAM;
- MD4$PARAM:
- MTRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]); # MODE4 PARAMETERS #
- GOTO NEXT$PARAM;
- OTHERS: # ALL OTHER PARAMETERS FLAG AS INVALID #
- IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
- THEN
- BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
- NDLEM2(ERR135,STLNUM[0],KWDNAME[SWITCH$ID]);
- END
- ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
- BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
- NDLEM2(ERR106,STLNUM[0],KWDNAME[SWITCH$ID]);
- END
- IF STKWID[I] EQ KID"PAD"
- THEN
- BEGIN # STATEMENT TABLE #
- I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
- END
- NEXT$PARAM: # GO TO NEXT PARAMETER #
- END
- RETURN; # **** RETURN **** #
- END # $3270TRM #
- CONTROL EJECT;
- # #
- # TERMPR CODE BEGINS HERE #
- # #
- COLLECT$FLAG = FALSE;
- COLLECT$USED = FALSE;
- CRNT$STIP = STIP"UNKNOWN";
- CRNT$TC = TC"UNKNOWN";
- BCF$FLAG = FALSE;
- CA$USED = FALSE;
- CRNT$CSET = CSET"UNKNOWN";
- CRNT$CTYP = CTYP"UNKNOWN";
- CRNT$MREC = 0;
- CRNT$NCIR = NCIR$DEF;
- CRNT$NEN = NCIR$DEF;
- CRNT$EOF = FALSE;
- EOF$USED = FALSE;
- CRNT$TSPD = LSPD"UNKNOWN";
- CRNT$W = 0;
- CRNT$DEPAD = 0; # INITIALIZE PAD ENTRY COUNT #
- CRNT$DEPADW = 0; # INITIALIZE PAD ENTRY "(WORDS)#
- CSET$USED = FALSE;
- CTYP$USED = FALSE;
- NCIR$USED = FALSE;
- NEN$USED = FALSE;
- RIC$FLAG = FALSE;
- RIC$USED = FALSE;
- STIP$USED = FALSE;
- TC$USED = FALSE;
- W$USED = FALSE;
- # #
- IF LRWC[1]+MXTRENT GQ LR$LENG
- THEN # IF NEED MORE TABLE SPACE FOR ENTRY #
- BEGIN
- SSTATS(P<LINE$RECORD>,MXTRENT); # ALLOCATE MORE TABLE SPACE #
- END
- CRNT$TERM = LRWC[1] + 1; # SET POINTER TO CURRENT TERM #
- LRWORD[CRNT$TERM] = 0; # CLEAR 1ST WORD IN ENTRY #
- TE$IDENT[CRNT$TERM] = "TRM"; # ENTER TERMINAL IDENTIFIER #
- TEWC[CRNT$TERM] = 2; # ENTER ENTRY WORD COUNT #
- LRWC[1] = LRWC[1] + 2; # INCREMENT LINE REC WORD COUNT #
- LRWORD[LRWC[1]] = 0; # CLEAR 2ND WORD IN ENTRY #
- IF NOT AUTO$REC # IF NOT AN AUTO REC LINE #
- THEN
- BEGIN
- DEVCNT = 0; # CLEAR DEVICE COUNT #
- TERMCNT = TERMCNT + 1; # CLEAR TERMINAL COUNT #
- IF TERMCNT GR MAXTERM # IF COUNT EXCEEDS MAX FOR TERMS#
- THEN
- BEGIN # FLAG ERROR -- MAX TERMS EXCEEDED #
- NDLEM2(ERR115,STLNUM[0]," ");
- END
- END # PUT CURRENT TIP IN TERM ENTRY #
- TETP[CRNT$TERM + 1] = LCTTYP$IP[2];
- IF LCTTYP$IP[2] EQ SYNAUTO
- THEN # IF TIPTYPE IS SYNC AUTO-REC #
- BEGIN
- CRNT$TIP = TIP"UNKNOWN"; # CLEAR CURRENT TIPTYPE VALUE #
- END
- IF STORD1[1] NQ 0 # IF STIP HAS BEEN SPECIFIED #
- THEN
- BEGIN
- STIP$USED = TRUE; # SET STIP SPECIFIED FLAG #
- IF NOT STVLERR[STORD1[1]] # IF VALUE IS O.K. #
- THEN
- BEGIN # IF VALUE IS AUTOREC #
- IF STVALNAM[STORD1[1]] EQ "AUTOREC"
- THEN
- BEGIN
- IF NOT AUTO$REC # IF NOT AN AUTO-REC LINE #
- THEN
- BEGIN # FLAG ERROR -- AUTOREC NOT VALID #
- NDLEM2(ERR113,STLNUM[0]," ");
- END
- ELSE # NOT AN AUTO-REC LINE #
- BEGIN
- STIP$USED = FALSE; # CLEAR STIP SPECIFIED FLAG #
- END
- END
- ELSE # VALUE IS NOT AUTOREC #
- BEGIN # SEARCH STIP TABLE FOR VALUE #
- FOR I=1 STEP 1 UNTIL MXSTIP
- DO
- BEGIN # IF VALUE IS FOUND #
- IF STVALNAM[STORD1[1]] EQ STIP$VAL[I]
- THEN
- BEGIN
- CRNT$STIP = STIP$STATUS[I]; # SET CURRENT STIP #
- TESTIP[CRNT$TERM + 1] = STIP$NUMV[I]; #SET FIELD IN ENT#
- END
- END
- IF CRNT$TIP NQ TIP"USER" AND # IF TIPTYPE IS NOT #
- CRNT$TIP NQ TIP"UNKNOWN" # USER OR UNKNOWN #
- THEN
- BEGIN # STIP AND NOT COMPATIBLE #
- IF B<CRNT$TIP,1>STIP$TIP$MAP[CRNT$STIP] NQ 1
- THEN
- BEGIN # FLAG ERROR -- INVALID WITH TIP#
- NDLEM2(ERR112,STLNUM[0],STIP$VAL[CRNT$STIP]);
- CRNT$STIP = STIP"UNKNOWN"; # CLEAR CURRENT STIP #
- END
- END
- END
- END
- END
- IF STORD2[1] NQ 0 # IF TC WAS SPECIFIED #
- THEN
- BEGIN
- TC$USED = TRUE; # SET TC SPECIFIED FLAG #
- IF NOT STVLERR[STORD2[1]] # IF VALUE IS O.K. #
- THEN
- BEGIN # IF VALUE IS CCP #
- IF STVALNAM[STORD2[1]] EQ "CCP"
- THEN
- BEGIN
- TC$USED = FALSE; # CLEAR TC SPECIFIED FLAG #
- END
- ELSE # VALUE IS NOT CCP #
- BEGIN # SEARCH TABLE FOR VALUE #
- FOR I=1 STEP 1 UNTIL MXTC
- DO
- BEGIN # IF VALUE IS FOUND #
- IF STVALNAM[STORD2[1]] EQ TC$VAL[I]
- THEN
- BEGIN
- CRNT$TC = TC$STATUS[I]; # SET CURRENT TC #
- TETC[CRNT$TERM + 1] = TC$NUMV[I]; # PUT VALUE IN ENTRY#
- END
- END
- IF CRNT$TIP NQ TIP"USER" AND # IF TIPTYPE TC NOT #
- CRNT$TC NQ TC"USER" # USER AND TC IS NOT#
- THEN # USER #
- BEGIN
- IF CRNT$STIP NQ STIP"UNKNOWN" # IF STIP IS NOT #
- THEN # UNKNOWN #
- BEGIN # IF STIP AND TC NOT COMPATIBLE #
- IF B<CRNT$STIP,1>STIP$AMAP[CRNT$TC] NQ 1
- THEN
- BEGIN # FLAG ERROR -- STIP AND TC NOT COMPATIBLE#
- NDLEM2(ERR111,STLNUM[0],STVALNAM[STORD2[1]]);
- CRNT$TC = TC"UNKNOWN"; # CLEAR CURRENT TC #
- END
- END
- ELSE # CURRENT STIP IS UNKNOWN #
- BEGIN # IF CURRENT TIPTYPE NOT UNKNOWN#
- IF CRNT$TIP NQ TIP"UNKNOWN"
- THEN
- BEGIN # IF TIPTYPE AND TC NOT COMPATBL#
- IF B<CRNT$TIP,1>TC$TIP$AMAP[CRNT$TC] NQ 1
- THEN
- BEGIN # FLAG ERROR -- TIPTYPE AND TC NOT COMPAT #
- NDLEM2(ERR112,STLNUM[0],STVALNAM[STORD2[1]]);
- CRNT$TC = TC"UNKNOWN"; # CLEAR CURRENT TC #
- END
- END
- END
- END
- END
- END
- END
- IF CRNT$TIP NQ TIP"USER" # IF TIPTYPE IS NOT USER #
- THEN
- BEGIN
- IF NOT STIP$USED # IF STIP NOT SPECIFIED #
- THEN
- BEGIN
- IF TC$USED # IF TC NOT SPECIFIED #
- THEN
- BEGIN
- IF (CRNT$TIP EQ TIP"ASYNC" OR CRNT$TIP EQ TIP"MODE4"
- OR CRNT$TIP EQ TIP"HASP") AND (CRNT$TC EQ TC"USER")
- THEN
- BEGIN
- NDLEM2(ERR160,STLNUM[0]," ");
- END
- ELSE
- BEGIN
- CRNT$STIP = DEF$STIP[CRNT$TC]; # SAVE DEFAULT STIP #
- IF CRNT$TIP EQ TIP"X25" # IF TIPTYPE IS X25 #
- THEN
- BEGIN
- CRNT$STIP = STIP"PAD"; # DEFAULT STIP TO PAD #
- END # STORE STIP VALUE IN TERM ENTRY#
- TESTIP[CRNT$TERM + 1] = STIP$NUMV[CRNT$STIP];
- END
- END
- ELSE # TC NOT SPECIFIED #
- BEGIN # FLAG ERROR -- TC OR STIP REQUIRED #
- NDLEM2(ERR117,STLNUM[0]," ");
- END
- END
- END
- IF NOT TT$USED # IF TIPTYPE WAS NOT SPECIFIED #
- THEN
- BEGIN
- IF LTYPE EQ "SYNC" AND # IF LTYPE IS SYNCHRONOUS #
- AUTO$REC # AND AUTO-REC #
- THEN
- BEGIN # DEFAULT TIPTYPE BASED ON STIP #
- TETP[CRNT$TERM+1] = STIP$TIP[CRNT$STIP];
- CRNT$TIP = STIP$TIP[CRNT$STIP];
- END
- END
- GOTO TRMJUMP[CRNT$TIP]; # CHECK REST OF PARAMETERS #
- ASYNC:
- ASYTERM; # CHECK ASYNC TERMINAL PARAMS #
- GOTO GEN$CHECK;
- MODE4:
- MD4TERM; # CHECK MODE4 TERMINAL PARAMS #
- GOTO GEN$CHECK;
- HASP:
- HSPTERM; # CHECK HASP TERMINAL PARAMETERS#
- GOTO GEN$CHECK;
- X25:
- X25TERM; # CHECK X25 TERMINAL PARAMETERS #
- GOTO GEN$CHECK;
- BSC:
- BSCTERM; # CHECK BSC TERMINAL PARAMETERS #
- GOTO GEN$CHECK;
- $3270:
- $3270TRM;
- GOTO GEN$CHECK;
- USER:
- USRTERM; # CHECK USER TERMINAL PARAMETERS#
- GOTO NEXT;
- GEN$CHECK: # FINAL GENERAL CHECKS #
- IF NOT CSET$USED AND # IF CSET NOT SPECIFIED AND NOT #
- NOT AUTO$REC # AN AUTO-REC LINE #
- THEN
- BEGIN # DEFAULT CSET #
- IF CRNT$TIP EQ TIP"$3270"
- THEN # IF TIP IS 3270 #
- BEGIN
- CRNT$CSET = CSET"EBCDIC";
- TECD[CRNT$TERM+1] = CRNT$CSET;
- END
- ELSE # DEFAULT BY STIP #
- BEGIN
- CRNT$CSET = CSET$DEF[CRNT$STIP];
- TECD[CRNT$TERM+1] = CRNT$CSET;
- END
- END
- NEXT:
- FOR I=1 STEP 1 UNTIL MXDT
- DO
- BEGIN
- DT$CNT[I] = 0; # CLEAR DEVICE TYPE COUNT #
- DO$MAP[I] = 0; # CLEAR -DO- AND STREAM MAP #
- STRM$MAP[I] = 0;
- FIRST$DT[I] = TRUE; # SET FIRST DEVICE TYPE MAP #
- END
- CP$PL$MAP = 0; # CLEAR CP/PL BIT MAP #
- TA$MAP = 0; # CLEAR -TA- MAP #
- IF NOT AUTO$REC # IF NOT AN AUTO-REC LINE #
- THEN # SET MAXIMUM NUMBER OF DEVICE TYPES #
- BEGIN
- MAXDEV = DEV$MAX[CRNT$TIP]; # SET MAX NUMBER OF DEVICE STMTS#
- IF CRNT$STIP EQ STIP"M4A" # IF CURRENT STIP IS M4A #
- THEN
- BEGIN
- MAXDEV = DEV$MX$M4A;
- DT$MAX[DT"CON"] = CON$MX$M4A;
- DT$MAX[DT"CR"] = CR$MAX$M4A;
- DT$MAX[DT"LP"] = LP$MAX$M4A;
- DT$MAX[DT"USER"] = DT7$MX$M4A;
- END
- ELSE # ALL OTHER STIP-S #
- BEGIN
- DT$MAX[DT"CON"] = CON$MAX[CRNT$TIP];
- DT$MAX[DT"CR"] = CR$MAX[CRNT$TIP];
- DT$MAX[DT"LP"] = LP$MAX[CRNT$TIP];
- DT$MAX[DT"USER"] = DT7$MAX[CRNT$TIP];
- END
- DT$MAX[DT"CP"] = CP$MAX[CRNT$TIP];
- DT$MAX[DT"PL"] = PL$MAX[CRNT$TIP];
- DT$MAX[DT"AP"] = AP$MAX[CRNT$TIP];
- END
- ELSE # LINE IS AUTO-REC #
- BEGIN
- MAXDEV = 255;
- END
- RETURN; # **** RETURN **** #
- END # TERMPR #
- CONTROL EJECT;
- PROC USR$RANGE(UVALNUM,U$RANGE,UMODE,USTAT);
- BEGIN
- *IF,DEF,IMS
- #
- **
- * THIS PROCEDURE CHECKS THE RANGE OF DEVICE, LINE OR TERMINAL
- * PARAMETERS FOR USER DEFINED TIPTYPES.
- *
- * Y. C. YIP 11/24/1982
- *
- * PROC USR$RANGE(UVALNUM,U$RANGE,UMODE,USTAT)
- *
- * ENTRY UVALNUM = VALUE WHOSE RANGE TO BE CHECKED.
- *
- * USTAT = STATUS SET TO FALSE IF OUT OF RANGE
- *
- * ELSE TO TRUE.
- *
- * U$RANGE = UPPER RANGE APPLICABLE FOR THIS PARAMETER.
- *
- * UMODE = 1 FOR DECIMAL AND 2 FOR HEX.
- * EXIT NONE.
- *
- * METHOD THIS PROCEDURE PICKS UP THE UVALNUM OF THE PARAMETER
- *
- * CHECKS IF IT IS GREATER THAN OR EQUAL TO 0 AND
- *
- * IF IT IS LESS THAN OR EQUAL TO U$RANGE. IF SO,
- *
- * USTAT IS LEFT SET AT TRUE ELSE IT IS SET TO FALSE.
- *
- * ALSO, ERR100 IS GENERATED IF VALUE IS OUT OF RANGE.
- *
- #
- *ENDIF
- XREF
- BEGIN
- FUNC XCDD C(10); # CONVERTS DECIMAL TO DISPLAY CODE #
- FUNC XCHD C(10); # CONVERTS HEXIDECIMAL TO DISPLAY #
- END
- DEF ZERO # 0 #; # VALUE 0 #
- ITEM UVALNUM ; # USER VALUE #
- ITEM U$RANGE ; # UPPER LIMIT OF THIS USER PARAMETER#
- ITEM CTEMP C(10); # CHARACTER TEMPORARY #
- ITEM UMODE; # 1 FOR DECIMAL AND 2 FOR HEX #
- ITEM USTAT B ; # USER STATUS #
- USTAT = TRUE; # PRSETTING USTAT IS TRUE #
- IF NOT (UVALNUM GQ ZERO AND
- UVALNUM LQ U$RANGE) # IF NOT WITHIN RANGE #
- THEN
- BEGIN
- USTAT = FALSE; # SET ERROR STATUS FLAG #
- IF UMODE EQ NUM"DEC" # IF DECIMAL #
- THEN
- BEGIN
- CTEMP = XCDD(UVALNUM); # CONVERT TO DECIMAL #
- END
- ELSE
- BEGIN
- CTEMP = XCHD(UVALNUM); # CONVERTS TO DISPLAY CODE #
- END
- NDLEM2(ERR100,STLNUM[0],C<4,6>CTEMP); # ERROR MESSAGE #
- END
- RETURN;
- END # END OF PROC USR$RANGE #
- CONTROL EJECT;
- # #
- # NDLNFCM CODE BEGINS HERE #
- # #
- COM$ELMT = TRUE; # SET COMMUNICATION ELEMENT FLAG #
- LCR$EXIST = FALSE; # CLEAR LINE CONFIG REC EXISTS FLAG #
- LR$EXIST = FALSE; # CLEAR LINE RECORD EXISTS FLAG #
- FOR I=1 WHILE COM$ELMT
- DO # WHILE THE ENTRIES DESCRIBE COMMUNICATION#
- BEGIN # ELEMENTS #
- GOTO COMJUMP[STSTID[0]]; # JUMP TO APPROPRIATE PARAGRAPH #
- # #
- LINE:
- IF LR$EXIST # IF A LINE RECORD EXISTS #
- THEN # WRITE IT OUT TO NCF #
- BEGIN
- LRWORD[LRWC[1]+1] = 0; # CLEAR NEXT WORD #
- NWDS16 = ((LRWC[1]+2)*60)/16; # CALCULATE NPU WORD COUNT #
- # CALCULATE CHECK SUM #
- LFGCKSM(LOC(LINE$RECORD),59,NWDS16,CKSUM);
- # ADD CHECK SUM TO TOTAL #
- NPCKSM[NPWC[0]] = NPCKSM[NPWC[0]] + CKSUM;
- LENGTH = LRWC[1] + 1; # SAVE LENGTH OF RECORD #
- NDLWNCF(TABLE"LR",P<LINE$RECORD>,LENGTH); # WRITE RECORD TO NCF#
- LR$EXIST = FALSE; # CLEAR LINE RECORD EXISTS FLAG #
- END
- IF LCR$EXIST # IF LINE CONFIGURATION RECORD EXISTS #
- THEN # WRITE RECORD TO FILE #
- BEGIN
- IF CRNT$TIP EQ TIP"X25" OR # IF X25 LINE #
- (CRNT$TIP EQ TIP"USER" AND LTYPE EQ "X25")
- THEN
- BEGIN # STORE PVC COUNT #
- LINFNFV(FN"PVC",PVC$CNT);
- END
- NDLWLCR(CRNT$NPU,FALSE);
- LCR$EXIST = FALSE; # CLEAR LINE CON REC EXISTS FLAG#
- END
- READW(STFET,STMT$TABLE[1],STWC[0],STMT$STAT); # READ STMT ENTRY #
- LINGRPR; # CALL PROC TO PROCESS ENTRY #
- GOTO NEXT;
- TERMINAL$:
- READW(STFET,STMT$TABLE[1],STWC[0],STMT$STAT); # READ STMT ENTRY #
- TERMPR; # CALL PROC TO PROCESS ENTRY #
- GOTO NEXT;
- DEVICE:
- READW(STFET,STMT$TABLE[1],STWC[0],STMT$STAT); # READ STMT ENTRY #
- DEVPR; # CALL PROC TO PROCESS ENTRY #
- GOTO NEXT;
- TRUNK:
- READW(STFET,STMT$TABLE[1],STWC[0],STMT$STAT); # READ STMT ENTRY #
- NDLTRNK; # CALL PROC TO PROCESS ENTRY #
- GOTO NEXT;
- NET$ELMT:
- COM$ELMT = FALSE; # CLEAR COMMUNICATION ELEMENT FLAG #
- IF LR$EXIST # IF A LINE RECORD EXISTS #
- THEN # WRITE IT TO THE NCF #
- BEGIN
- LRWORD[LRWC[1]+1] = 0; # CLEAR NEXT WORD #
- NWDS16 = ((LRWC[1]+2)*60)/16; # CALCULATE NPU WORD COUNT #
- # CALCULATE CHECK SUM #
- LFGCKSM(LOC(LINE$RECORD),59,NWDS16,CKSUM);
- # ADD CHECK SUM TO TOTAL #
- NPCKSM[NPWC[0]] = NPCKSM[NPWC[0]] + CKSUM;
- LENGTH = LRWC[1] + 1; # SAVE LENGTH OF RECORD #
- NDLWNCF(TABLE"LR",P<LINE$RECORD>,LENGTH); # WRITE RECORD TO NCF#
- END
- IF LCR$EXIST # IF LINE CONFIGURATION RECORD EXISTS #
- THEN # WRITE RECORD TO FILE #
- BEGIN
- IF CRNT$TIP EQ TIP"X25" OR # IF X25 LINE #
- (CRNT$TIP EQ TIP"USER" AND LTYPE EQ "X25")
- THEN
- BEGIN # STORE PVC COUNT #
- LINFNFV(FN"PVC",PVC$CNT);
- END
- NDLWLCR(CRNT$NPU,FALSE);
- END
- NDLWLCR(CRNT$NPU,TRUE); # CLEAR LINE CONFIG RECORD BUFFER #
- TEST I; # EXIT LOOP #
- NEXT:
- READW(STFET,STMT$TABLE,1,STMT$STAT); # READ HEADER OF NEXT ENT #
- IF STMT$STAT NQ TRNS$OK # IF NOTHING WAS READ #
- THEN # DO END PROCESSING #
- BEGIN
- GOTO NET$ELMT;
- END
- END # FOR LOOP #
- RETURN; # **** RETURN **** #
- END # NDLNFCM #
- TERM
cdc/nos2.source/nam5871/ndlnfcm.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator