cdc:nos2.source:nam5871:ndllist
Table of Contents
NDLLIST
Table Of Contents
- [00008] PROC NDLLIST
- [00052] PROC ABORT
- [00053] PROC SSTATS
- [00054] FUNC EDATE C(10)
- [00055] FUNC ETIME C(10)
- [00056] PROC MESSAGE
- [00057] PROC PDATE
- [00058] FUNC SSDCAD
- [00059] PROC READ
- [00060] PROC READH
- [00061] PROC READW
- [00062] PROC RECALL
- [00063] PROC REWIND
- [00064] PROC SKIPB
- [00065] PROC SKIPEI
- [00066] PROC WRITEH
- [00067] PROC WRITER
- [00068] FUNC XCDD C(10)
- [00069] FUNC XCHD C(10)
- [00070] FUNC XSFW C(10)
- [00698] FUNC DC$FRAME (PFRAM) U
- [00735] PROC APPLST
- [00739] APPLST - APPL LISTER
- [00844] PROC CPLLST
- [00848] CPLLST - COUPLER LISTER.
- [00914] PROC DEFLST
- [00918] DEFLST - DEFINE LISTER
- [01018] PROC DEVLST(TRMWORD)
- [01022] DEVLST - DEVICE LISTER
- [01610] PROC ERRLST
- [01614] ERRLST - ERROR LISTER
- [01789] PROC ERRMSG(ENUM,EPRC)
- [01793] ERRMSG - PRINT ERROR MESSAGE
- [01838] PROC EXSLST
- [01842] EXSLST - EXPANDED SOURCE LISTER
- [02013] PROC HDRLST
- [02017] HDRLST - HEADER INFO LISTER
- [02051] PROC INLST
- [02055] INLST - INCALL INFO LISTER
- [02288] PROC LCFLST
- [02292] LCFLST - LCF LISTER
- [02448] PROC LINLST
- [02452] LINLST - LINE LISTER
- [02868] PROC LLKLST
- [02872] LLKLST - LOGICAL LINK LISTER
- [02986] PROC NCBW
- [02990] NCBW - NCB WORD
- [03048] PROC NCFLST
- [03052] NCFLST - NCF LISTER
- [03242] PROC NODLST
- [03246] NODLST - NODE INFO LISTER
- [03356] PROC NPULST
- [03360] NPULST - NPU LISTER
- [03453] PROC OUTLST
- [03457] OUTLST - OUTCALL LISTER
- [03512] PROC PRHEX(POS)
- [03735] PROC PGLST(NUMLN)
- [03739] PGLST - PAGE HEADER LISTER
- [03812] PROC RDNCB(ASCIILITERAL,NCB$TAB)
- [03817] RDNCB - READ NCB
- [03935] PROC READREC(POINTER,(INDEX))
- [03939] READREC - READ RECOR
- [03993] PROC SERMSGX
- [03997] SERMSGX - SERVICE MESSAGE CROSSING
- [04029] PROC SRCLST
- [04034] SRCLST - SOURCE LISTER
- [04177] PROC SUPLST
- [04181] SUPLST - SUPLINK LISTER
- [04261] PROC TIPLST
- [04265] TIPLST - TIPTYPE LISTER
- [04341] PROC TRKLST
- [04345] TRKLST - TRUNK STATEMENT LISTER
- [04459] PROC TRMLST
- [04463] TRMLST - TERMINAL LISTER
- [04762] PROC USERLST
- [04766] USERLST - USER STATEMENT LISTER
Source Code
- NDLLIST.txt
- *DECK NDLLIST
- USETEXT NDLDATT
- USETEXT NDLER1T
- USETEXT NDLFETT
- USETEXT NDLNCFT
- USETEXT NDLPS2T
- USETEXT NDLTBLT
- PROC NDLLIST;
- BEGIN
- *IF,DEF,IMS
- #
- ** NDLLIST
- *
- * S.M. ILMBERGER 81/10/29
- *
- * PRODUCES LISTINGS FOR NDL RUN
- *
- * PROC NDLLIST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * SET UP OUTFET POINTERS
- * SET UP INFO FOR PAGE HEADER
- * IF RUN IS CREATION RUN
- * IF SOURCE LISTING IS REQUESTED
- * CALL SRCLST
- * IF ERRORS EXIST
- * CALL ERRLST
- * IF DEFINE LISTING IS REQUESTED
- * CALL DEFLST
- * IF EXPANDED SOURCE LISTING IS REQUESTED
- * CALL EXSLST
- * IF SUMMARY LISTING REQUESTED
- * CALL NCFLST AND/OR LCFLST
- * IF RUN IS SUMMARY RUN
- * CALL NCFLST AND/OR LCFLST
- * END
- #
- *ENDIF
- #
- **** PROC NDL$LST - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC ABORT; # ABORTS NDLP #
- PROC SSTATS; # ALLOCATES TABLE SPACE #
- FUNC EDATE C(10); # UNPACKS DATE #
- FUNC ETIME C(10); # UNPACKS TIME #
- PROC MESSAGE;
- PROC PDATE; # GET PACKED DATE AND TIME #
- FUNC SSDCAD ; # CONVERTS ASCII TO DISPLAY CODE #
- PROC READ; # READS FET #
- PROC READH; # READS TABLES #
- PROC READW; # READW ERROR FETS #
- PROC RECALL; # RETURNS CONTROL WHEN FUNCTIONS DONE #
- PROC REWIND; # REWINDS FILES #
- PROC SKIPB; # SKIP BACKWRDS IN NCF FILE #
- PROC SKIPEI; # SKIP TO EOI #
- PROC WRITEH; # WRITES TO TABLES #
- PROC WRITER; # FLUSH BUFFER AND WRITE EOR #
- FUNC XCDD C(10); # CONVERTS INT TO DEC DISPLAY CODE #
- FUNC XCHD C(10); # CONVERTS HEX TO INT DISPLAY CODE #
- FUNC XSFW C(10); # CONVERT ZERO FILLED NAME TO BLANK FILLED#
- END
- #
- ****
- #
- DEF ENTRY0 # 0 #; # ENTRY 0 OF TABLE #
- DEF ENTRY1 # 1 #;
- DEF ENTRY2 # 2 #;
- DEF ENTRY3 # 3 #; # WORD 3 OF TABLE #
- DEF ENTRY4 # 4 #; # WORD 4 OF TABLE #
- DEF ERMSG1 # 1 #; # DEFINE ERROR MESSAGE NUMBERS #
- DEF ERMSG2 # 2 #;
- DEF ERMSG3 # 3 #;
- DEF ERMSG4 # 4 #;
- DEF ERMSG5 # 5 #;
- DEF ERMSG6 # 6 #;
- DEF ERMSG7 # 7 #;
- DEF ERMSG8 # 8 #;
- DEF ERMSG9 # 9 #;
- DEF ERMSG10 # 10 #;
- DEF ERMSG11 # 11 #;
- DEF LN1 # 1 #; # NUMBER OF LINES TO BE PRINTED #
- DEF LN2 # 2 #;
- DEF LN3 # 3 #;
- DEF LN4 # 4 #;
- DEF LN5 # 5 #;
- DEF LN6 # 6 #;
- DEF NEWPAGE # 100 #; # LINE COUNT #
- DEF SERMSG # 31 #; # NUMBER OF WORDS IN ONE SERVICE MESSAGE #
- # CALL NAMLEV AND ER2CNDL #
- CONTROL NOLIST;
- *CALL NAMLEV
- CONTROL PRESET;
- *CALL ER2CNDL
- CONTROL LIST;
- ITEM BIT=0; # BIT OF WORD NODEMAP #
- ITEM CPL$ID; # CURRENT COUPLER NODE ID #
- ITEM ENTRY$CNT I; # NUMBER OF LIN$CON$REC ENTRIES #
- ITEM FNFV$CNT I; # NUMB OF FVFN PAIRS IN LIN$CON$REC ENTRY #
- ITEM INCALL$EC I; # INCALL TABLE ENTRY COUNT #
- ITEM LCF$STAT I; # STATUS OF READ FROM LCF #
- ITEM LINREC$WC I; # WORD COUNT OF LINE RECORD #
- ITEM LINREC$GC I; # GROUP COUNT OF LINE RECORD #
- ITEM NCBIT I; # BIT NUMBER OF NCBWORD TO REFER TO #
- ITEM NCBWD I; # WORD NUMBER OF NCB TO REFER TO #
- ITEM NCF$IDX$EC; # ENTRY COUNT FOR NCF$INDEX #
- ITEM NODE$ID; # CURRENT NPU NODE ID #
- ITEM OUTCALL$EC I; # OUTCALL TABLE ENTRY COUNT #
- ITEM PORTNUM; # CURRENT PORT NUMBER #
- ITEM TEMPACKED U; # STORAGE FOR PACKED DATE AND TIME #
- ITEM TEMPT U; # STORAGE FOR TIME #
- ITEM TEMP1 U; # TEMP STORAGE FOR INTEGER NUMBER #
- ITEM TEMP2 C(10); # TEMP STORAGE FOR CHARACTER ITEM #
- ITEM TEMPD C(10); # STORAGE FOR DATE #
- ITEM WORD=0; # WORD OF BITMAP #
- ARRAY ALLNODS [0:0] S(6); # ALL NODE NUMBERS USED LINE #
- BEGIN
- ITEM ALLN C(00,00,54) =
- ["0 ALL NODE NUMBERS LESS THAN HAVE BEEN USED"];
- ITEM MAXNODE C(03,36,03);
- END
- ARRAY APPL$HDR [0:0] S(11); # HEADER FOR APPL SUMMARY #
- BEGIN
- ITEM APPL$1 C(00,00,110) =
- ["0 APPL NAME PRIV UID STATUS
- RS MXCOPYS KDSP NETXFR PRU"];
- END
- ARRAY APPL$LN [0:0] S(11); # APPL LINE #
- BEGIN
- ITEM APPL$FIL C(00,00,110) = [" "];
- ITEM APPL$NAM C(02,00,07);
- ITEM APPL$PRI C(03,00,03);
- ITEM APPL$UID C(04,00,03);
- ITEM APPL$STA C(05,12,02);
- ITEM APPL$RS C(06,00,03);
- ITEM APPL$MAXC C(07,00,02);
- ITEM APPL$KDP C(08,00,03);
- ITEM APPL$XFR C(09,00,03);
- ITEM APPL$PRU C(10,00,03);
- END
- ARRAY ASCII$TO$DC [0:0] S(13); # ASCII TO DISPLAY CODE TABLE #
- BEGIN
- ITEM DC$CHAR C(00,00,130) = ["
- 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"];
- END
- ARRAY BLNK$LN [0:0] S(1); # BLANK LINE #
- ITEM BLNK C(00,00,10) = [" "];
- ARRAY CPL$HDR [0:0] S(6); # HEADER FOR COUPLER SUMMARY #
- BEGIN
- ITEM CPL$1 C(00,00,53) =
- ["0 COUPLER NAME NODE HNAME LOC"];
- END
- ARRAY CPL$LN [0:0] S(6); # COUPLER LINE #
- BEGIN
- ITEM CPL$FILL C(00,00,60) = [" "];
- ITEM CPL$NAM C(02,00,07);
- ITEM CPL$NOD C(03,06,02);
- ITEM CPL$HNA C(04,00,07);
- ITEM CPL$LOC C(05,00,07);
- END
- ARRAY DEF$HDR [0:0] S(4); # DEFINE LISTING HEADER #
- ITEM DEF$LN C(00,00,40) =
- ["0 DEFINE NAME DEFINE CONTENTS "];
- ARRAY DEF$L [0:11] S(1); # DEFINE LINE #
- BEGIN
- ITEM DEF$LAB C(00,30,07);
- ITEM DEF$STR C(02,00,100);
- ITEM DEF$TOTAL C(00,00,120) = [" "];
- END
- ARRAY NO$DEF [0:0] S(6);
- ITEM NO$DEF$L C(00,00,60) =
- ["0 NO DEFINE COMMANDS ENCOUNTERED "];
- ARRAY DEV$HDR1 [0:0] S(13); # HEADER1 FOR DEVICE LINES #
- BEGIN
- ITEM DEF$1 C(00,00,130) =
- ["0 DEVICE NAME DT/ SDT/ ABL/ DBZ/ UBL/
- HN/ AUTOCON/ BR/ AB/ B1/ CI/ CT/ DLC/ EP/ LI/ PG/ PL/ SE/ "]
- ;
- END
- ARRAY DEV$HDR2 [0:0] S(14); # HEADER2 FOR DEVICE LINES #
- BEGIN
- ITEM DEV$2 C(00,00,130) =
- [" TA XBZ/ DBL/ UBZ/ STREAM/ D
- O/ PRI/ BS/ B2/ CN/ DLX/ DLTO/ IN/ OP/ PA/ PW/ STAT/"]
- ;
- END
- ARRAY DEV$HDR3 [0:0] S(13);
- BEGIN
- ITEM DEV$3 C(00,00,130) =
- [" MCI MLI RTS XLY M
- C FA ELO ELX ELR EBO EBX EBR CP IC OC LK "];
- END
- ARRAY DEV$LN1 [0:0] S(13); # DEVICE LINE1 #
- BEGIN
- ITEM DEV1$FIL C(00,06,129) = [" "];
- ITEM DEV$NAM C(02,00,07);
- ITEM DEV$DT C(02,54,04);
- ITEM DEV$SDT C(03,24,05);
- ITEM DEV$ABL C(04,06,01);
- ITEM DEV$DBZ C(04,36,04);
- ITEM DEV$UBL C(05,18,02);
- ITEM DEV$HN C(06,00,02);
- ITEM DEV$ACON C(06,42,03);
- ITEM DEV$BR C(07,30,03);
- ITEM DEV$AB C(08,00,02);
- ITEM DEV$B1 C(08,30,02);
- ITEM DEV$CI C(09,00,02);
- ITEM DEV$CT C(09,30,02);
- ITEM DEV$DLC C(10,00,04);
- ITEM DEV$EP C(10,36,03);
- ITEM DEV$LI C(11,06,02);
- ITEM DEV$PG C(11,42,03);
- ITEM DEV$PL C(12,06,03);
- ITEM DEV$SE C(12,36,03);
- ITEM DEV1$CRRT C(00,00,01) = ["0"]; # CARRIAGE CONTROL #
- END
- ARRAY DEV$LN2 [0:0] S(13); # DEVICE LINE2 #
- BEGIN
- ITEM DEV2$FIL C(00,00,130) = [" "];
- ITEM DEV$TA C(03,00,02);
- ITEM DEV$XBZ C(03,24,04);
- ITEM DEV$DBL C(04,06,01);
- ITEM DEV$UBZ C(04,36,04);
- ITEM DEV$STR C(05,24,01);
- ITEM DEV$DO C(06,06,01);
- ITEM DEV$PRI C(07,30,03);
- ITEM DEV$BS C(08,00,02);
- ITEM DEV$B2 C(08,30,02);
- ITEM DEV$CN C(09,00,02);
- ITEM DEV$DLX C(09,30,02);
- ITEM DEV$DLTO C(10,06,03);
- ITEM DEV$IN C(10,42,02);
- ITEM DEV$OP C(11,06,02);
- ITEM DEV$PA C(11,42,01);
- ITEM DEV$PW C(12,06,03);
- ITEM DEV$STAT C(12,36,02);
- END
- ARRAY DEV$LN3 [0:0] S(13);
- BEGIN
- ITEM DEV3$FIL C(00,00,130) = [" "];
- ITEM DEV$MCI C(03,24,03);
- ITEM DEV$MLI C(04,00,03);
- ITEM DEV$RTS C(04,42,03);
- ITEM DEV$XLY C(05,18,02);
- ITEM DEV$MC C(06,00,02);
- ITEM DEV$FA C(07,30,03);
- ITEM DEV$ELO C(08,00,02);
- ITEM DEV$ELX C(08,30,02);
- ITEM DEV$ELR C(09,00,02);
- ITEM DEV$EBO C(09,30,02);
- ITEM DEV$EBX C(10,06,03);
- ITEM DEV$EBR C(10,42,02);
- ITEM DEV$CP C(11,06,03);
- ITEM DEV$IC C(11,42,03);
- ITEM DEV$OC C(12,06,03);
- ITEM DEV$LK C(12,36,03);
- END
- ARRAY ENT1 [0:0] S(1); # NCB TABLE ENTRY #
- BEGIN
- ITEM ENTF U(00,44,08); # FIRST EIGHT BITS OF ENTRY #
- ITEM ENTCNT U(00,52,08); # LAST EIGHT BITS OF ENTRY #
- ITEM TENTRY U(00,44,16); # TOTAL ENTRY #
- END
- ARRAY EMTAB [1:11] S(5);
- BEGIN
- ITEM EMPROC C(01,06,08);
- ITEM EMESS C(00,00,40) = [
- # 1 # " ABRT FROM - NO SUCH RECORD TYPE",
- # 2 # " ABRT FROM - READ ERROR ",
- # 3 # " ABRT FROM - BAD NCF FILE RECORD",
- # 4 # " ABRT FROM - INVALID RECORD TYPE",
- # 5 # " ABRT FROM - FN VAL NOT DEVIC FN",
- # 6 # " ABRT FROM -CAN'T READ LIN RECDS",
- # 7 # " ABRT FROM -CAN'T READ NCF RECDS",
- # 8 # " ABRT FROM - FN VAL NOT LINE FN ",
- # 9 # " ERROR IN LCF -- SUMMARY SUPPRESSED. ",
- # 10 # " ABRT FROM - FN VAL NOT TERM FN ",
- # 11 # " ERROR IN NCF -- SUMMARY SUPPRESSED. ",
- ];
- ITEM EMZBYT U(04,00,60) = [11(0)];
- ITEM EM$ENT C(00,00,50); # ERROR MSG TABLE ENTRY #
- END
- ARRAY ERR$HDR [0:0] S(5);
- BEGIN
- ITEM ERR$HDR1 C(00,00,50) =
- ["0 LINE ERROR SEVERITY DETAILS DIAGNOSIS"];
- END
- ARRAY FH$NAM$LST [0:0] S(4); # FILE NAME AND TYPE SUMMARY STMT #
- BEGIN
- ITEM NAM$LIN C(00,00,37) =
- ["0 FILE NAME "];
- ITEM NAM$TYP C(00,42,03);
- ITEM NET$NAME C(03,00,07);
- END
- ARRAY FNFV$TAB [0:0] S(1);
- BEGIN
- ITEM FNFV$ENT U(00,44,16);
- ITEM FN$ENT U(00,44,08);
- ITEM FV$ENT U(00,52,08);
- END
- ARRAY INC$HDR1 [0:0] S(12); # HEADER FOR INCALL SUMMARY #
- BEGIN
- ITEM INC$1 C(00,00,120) =
- ["0 INCALL FAMILY USER/ PRI/ DBL ABL/
- DBZ/ SNODE/ SHOST/ COLLECT/ PORT/ DPLR/ DTEA "];
- END
- ARRAY INC$HDR2 [0:0] S(12);
- BEGIN
- ITEM INC$2 C(00,00,120) =
- [" ANAME UBL
- UBZ DNODE WS FASTSEL DPLS WR "];
- END
- ARRAY INC$HDR3 [0:0] S(3); # INCALL/OUTCALL FACILITY HEADER #
- BEGIN
- ITEM INC$3 C(00,00,30) = [" FACILITIES"];
- END
- ARRAY INC$LN [0:0] S(13); # INCALL LINE #
- BEGIN
- ITEM INC$CRRT C(00,00,01);
- ITEM INC$FIL C(00,00,130) = [" "];
- ITEM INC$FAM C(02,00,07);
- ITEM INC$USER C(03,00,07);
- ITEM INC$PRI C(04,00,03);
- ITEM INC$DBL C(04,48,01);
- ITEM INC$ABL C(05,24,01);
- ITEM INC$DBZ C(05,54,04);
- ITEM INC$SND C(06,42,03);
- ITEM INC$SHT C(07,06,06);
- ITEM INC$COLLECT C(08,12,03);
- ITEM INC$PORT C(09,12,02);
- ITEM INC$DPLR C(09,54,04);
- ITEM INC$DTEA C(10,48,15);
- END
- ARRAY INC$LN2 [0:0] S(13);
- BEGIN
- ITEM INC$FIL2 C(00,00,130) = [" "];
- ITEM INC$ANAM C(03,00,14);
- ITEM INC$UBL C(05,24,01);
- ITEM INC$UBZ C(05,54,02);
- ITEM INC$DND C(06,48,02);
- ITEM INC$WS C(07,36,01);
- ITEM INC$FSEL C(08,12,03);
- ITEM INC$DPLS C(09,12,04);
- ITEM INC$WR C(09,54,03);
- END
- ARRAY LIN$REC$BUF [0:PRULNGTH] S(1);
- ITEM LINEWORD (00,00,60);
- ARRAY LIN$HDR [0:0] S(12); # HEADER FOR LINE SUMMARY #
- BEGIN
- ITEM LIN$1 C(00,00,120) =
- ["0 LINE NAME PORT/ LTYPE AUTO/ TIPTYPE/ DI
- LSPEED/ DFL/ FRAME/ RTIME/ RCOUNT/ NSVC/"];
- END
- ARRAY LIN$HDR2 [0:0] S(11); # 2ND HEADER FOR LINE SUMMARY #
- BEGIN
- ITEM LIN$2 C(00,00,110) =
- [" LCN IMDISC RC
- XAUTO PSN NPVC AL ARSPEED DTEA"];
- END
- ARRAY LIN$LN [0:0] S(11); # FORMAT FOR LINE SUMARY LIST #
- BEGIN
- ITEM LN$CRRT C(00,00,01) = ["0"];
- ITEM LN$FIL C(00,06,109) = [" "];
- ITEM LN$NAM C(02,00,07);
- ITEM LN$PORT C(03,00,02);
- ITEM LN$LTY C(03,36,02);
- ITEM LN$AUTO C(04,12,03);
- ITEM LN$TIPT C(04,54,05);
- ITEM LN$DI C(05,42,03);
- ITEM LN$LSPE C(06,18,05);
- ITEM LN$DFL C(07,00,05);
- ITEM LN$FRAM C(07,48,03);
- ITEM LN$RTIME C(08,24,05);
- ITEM LN$RCNT C(09,18,02);
- ITEM LN$NSVC C(09,54,03);
- ITEM LN$DCE C(10,24,03);
- END
- ARRAY LIN$LN2 [0:0] S(11);
- BEGIN
- ITEM LN$FL2 C(00,00,110) = [" "];
- ITEM LN$LCN C(03,00,03) = ["0"];
- ITEM LN$IMD C(04,12,03) = ["NO"];
- ITEM LN$RC C(05,12,03);
- ITEM LN$XAUTO C(06,30,03);
- ITEM LN$PSN C(06,54,07);
- ITEM LN$NPVC C(07,42,04);
- ITEM LN$SL C(08,36,02);
- ITEM LN$ARSPEED C(09,06,03);
- ITEM LN$DTEA C(10,00,02);
- END
- ARRAY LLK$HDR [0:0] S(5); # HEADER FOR LOGLINK SUMMARY #
- BEGIN
- ITEM LLK$1 C(00,00,46) =
- ["0 LOGLINK NAME NCNAME STATUS"];
- END
- ARRAY LLK$LN [0:0] S(5); # LOGLINK LINE #
- BEGIN
- ITEM LLK$FILL C(00,00,50) = [" "];
- ITEM LLK$NAM C(02,00,07);
- ITEM LLK$NCN C(03,00,07);
- ITEM LLK$STA C(04,12,02);
- END
- ARRAY MAXN$HDR [0:0] S(4); # MAXIMUM NODE HEADER #
- BEGIN
- ITEM MAXN1 C(00,00,32) =
- ["0 MAXIMUM NODE NUMBER USED"];
- END
- ARRAY MAXN$LN [0:0] S(2); # MAX NODE NUMBER #
- BEGIN
- ITEM MAXN$FILL C(00,00,20) = [" "];
- ITEM MAXNOD C(01,00,03);
- ITEM MAX$CRRT C(00,00,01) = ["0"]; # CARRIAGE CONTROL #
- END
- ARRAY NODE$TAB [0:5] S(1);
- ITEM NODEMAP = [6(0)];
- ARRAY NPU$HDR [0:0] S(7); # HEADER FOR NPU SUMMARY #
- BEGIN
- ITEM NPU$1 C(00,00,63) =
- ["0 NPU NAME NODE VARIANT OPGO DMP"];
- END
- ARRAY NPU$LN [0:0] S(7); # NPU LINE #
- BEGIN
- ITEM FIL1 C(00,00,70) = [" "];
- ITEM NPU$NAM C(02,00,07);
- ITEM NPU$NOD C(03,00,03);
- ITEM NPU$VAR C(04,00,07);
- ITEM NPU$OP C(05,00,03);
- ITEM NPU$DMP C(06,00,03);
- END
- ARRAY PG$HDR [0:0] S(13); # PAGE HEADER FOR NDLP LISTING #
- BEGIN
- ITEM PGHDR$FIL C(00,00,130) = [" "];
- ITEM TITLE C(00,06,45);
- ITEM STAR1 C(04,42,01) = ["*"];
- ITEM LST$TYP C(04,54,15);
- ITEM STAR2 C(06,30,01) = ["*"];
- ITEM PROG$T C(07,00,04) = ["NDLP"];
- ITEM VER$NUM C(07,30,03);
- ITEM DASH C(07,54,01) = ["-"];
- ITEM LEV$NUM C(08,06,03);
- ITEM DAT C(09,00,10); # DATE #
- ITEM TIM C(10,00,10); # TIME #
- ITEM PAG C(11,36,04) = ["PAGE"];
- ITEM PAGE$N C(12,06,05); # PAGE NUMBER #
- ITEM PG$CRRT C(00,00,01) = ["1"]; # CARRIAGE CONTROL #
- END
- ARRAY OUT$HDR1 [0:0] S(11); # HEADER FOR OUTCALL SUMMARY #
- BEGIN
- ITEM OUTC$1 C(00,00,110) =
- ["0 OUTCALL NAME1 NAME2/ PRI/ DBL/ ABL/ SNODE
- / PORT DPLS/ WS DTEA PRID "];
- END
- ARRAY OUT$HDR2 [0:0] S(9); # HEADER FOR OUTCALL SUMMARY #
- BEGIN
- ITEM OUTC$2 C(00,00,90) =
- [" PID UBL UBZ DBZ DNODE
- ACCLEV "];
- END
- ARRAY OUT$HDR21 [0:0] S(3); # HEADER FOR OUTCALL SUMMARY #
- BEGIN
- ITEM OUTC$21 C(00,00,30) =
- [" UDATA "];
- END
- ARRAY OUT$HDR3 [0:0] S(3); # HEADER FOR OUTCALL FACILITIES #
- BEGIN
- ITEM OUTC$3 C(00,00,30) = [" FACILITIES "];
- END
- ARRAY OUTC$LN1 [0:0] S(11); # OUTCALL LINE #
- BEGIN
- ITEM OUTC$CC1 C(00,00,01);
- ITEM OUTC$FL1 C(00,00,110) = [" "];
- ITEM OUTC$NM1 C(02,00,07);
- ITEM OUTC$NM2 C(02,54,03);
- ITEM OUTC$PRI C(03,36,03);
- ITEM OUTC$DBL C(04,12,01);
- ITEM OUTC$ABL C(04,54,01);
- ITEM OUTC$SND C(05,36,02);
- ITEM OUTC$PRT C(06,30,02);
- ITEM OUTC$DPS C(07,18,04);
- ITEM OUTC$WS C(07,54,01);
- ITEM OUTC$DTA C(08,06,16);
- ITEM OUTC$PRD C(09,42,08);
- END
- ARRAY OUTC$LN2 [0:0] S(9); # OUTCALL LINE TWO #
- BEGIN
- ITEM OUTC$FL2 C(00,00,90) = [" "];
- ITEM OUTC$PID C(02,54,03);
- ITEM OUTC$UBL C(03,42,01);
- ITEM OUTC$UBZ C(04,06,02);
- ITEM OUTC$DBZ C(04,42,04);
- ITEM OUTC$DND C(05,36,03);
- ITEM OUTC$ACL C(07,18,02);
- END
- ARRAY OUTC$LN3 [0:0] S(13); # OUTCALL LINE THREE #
- BEGIN
- ITEM OUTC$FL3 C(00,00,130) = [" "];
- ITEM OUTC$UDT C(02,00,100);
- END
- ARRAY OUTPT$BUFFER [0:0] S(14); # OUTPUT WORKING BUFFER #
- BEGIN
- ITEM OUTLNUM C(00,06,05);# LINE NUMBER OF SOURCE #
- ITEM OUTELINE C(00,48,03);# SET TO -***- IF ERROR EXISTS #
- ITEM OUTDLINE C(01,30,01);# SET TO -D- IF DEFINE EXIST #
- ITEM OUTBUFF1 C(00,00,135);
- END
- ARRAY SOURCE$HDR [0:0] S(2);
- BEGIN
- ITEM SRC$LN$HDR C(00,00,20) = ["0 LINE ERR DEFINE "];
- END
- ARRAY SUP$HDR [0:0] S(3); # HEADER FOR SUPLINK SUMMARY #
- BEGIN
- ITEM SUP$1 C(00,00,26) = ["0 SUPLINK LLNAME"];
- END
- ARRAY SUP$LN [0:0] S(3); # SUPLINK LINE #
- BEGIN
- ITEM SLK$FIL1 C(00,00,30) = [" "];
- ITEM SLK$NAM C(02,00,07);
- END
- ARRAY TER$HDR1 [0:0] S(11); # HEADER FOR TERMINAL SUMMARY #
- BEGIN
- ITEM TER$1 C(00,00,110) =
- ["0 TERMINAL STIP/ TC CSET TSPEED CA RIC
- CO BCF MREC W CTYP NCIR NEN EOF COLLECT"];
- END
- ARRAY TER$HDR2 [0:0] S(3); # HEADER FOR TERMINAL SUMMARY #
- BEGIN
- ITEM TER$2 C(00,00,30) = [" PAD "];
- END
- ARRAY TER$LN1 [0:0] S(11); # TERMINAL LINE #
- BEGIN
- ITEM TER$FIL C(00,00,110) = [" "];
- ITEM TER$STIP C(02,00,05);
- ITEM TER$TC C(02,42,05);
- ITEM TER$CSET C(03,24,07);
- ITEM TER$TSP C(04,24,05);
- ITEM TER$CA C(05,06,02);
- ITEM TER$RIC C(05,30,03);
- ITEM TER$CO C(06,00,03);
- ITEM TER$BCF C(06,30,03);
- ITEM TER$MREC C(07,06,01);
- ITEM TER$W C(07,36,01);
- ITEM TER$CTYP C(07,54,03);
- ITEM TER$NCIR C(08,30,03);
- ITEM TER$NEN C(09,06,03);
- ITEM TER$EOF C(09,36,03);
- ITEM TER$CLCT C(10,00,03);
- END
- ARRAY TER$LN2 [0:0] S(13); # TERMINAL LINE #
- BEGIN
- ITEM TER$FIL2 C(00,00,130) = [" "];
- ITEM TER$PAD C(02,00,110);
- END
- ARRAY TIMELST [0:0] S(6); # TIME AND DATE STATEMENT #
- BEGIN
- ITEM HD$LINE C(00,00,60) =
- ["- VALID CREATED "];
- ITEM HD$TYP C(02,36,03);
- ITEM HD$TIME C(04,06,10);
- ITEM HD$DATE C(05,06,10);
- END
- ARRAY TIP$HDR [0:0] S(4); # HEADER FOR TIPTYPE SUMMARY #
- BEGIN
- ITEM TIP$1 C(00,00,36)=["0 TIPTYPES USED FOR THIS NPU"];
- END
- ARRAY TIP$LN [0:9] S(1); # TIPTYPE LINE #
- BEGIN
- ITEM TIP$FILL C(00,06,99) = [" "];
- ITEM TIPS C(00,00,10);
- ITEM TIPS$CRRT C(00,00,01) = ["0"]; # CARRIAGE CONTROL #
- END
- ARRAY TIPMP [0:0] S(1);
- ITEM TIPMAP = [0];
- ARRAY TRK$HDR [0:0] S(9); # HEADER FOR TRUNK SUMMARY #
- BEGIN
- ITEM TRK$1 C(00,00,90) =
- ["0 TRUNK NAME N1 N2 P1 P2 NOLOA
- D1 NOLOAD2 STATUS FRAME "];
- END
- ARRAY TRK$LN [0:0] S(9); # TRUNK LINE #
- BEGIN
- ITEM TRK$FIL C(00,00,90) = [" "];
- ITEM TRK$NAM C(02,00,07);
- ITEM TRK$N1 C(02,54,07);
- ITEM TRK$N2 C(03,48,07);
- ITEM TRK$P1 C(04,42,02);
- ITEM TRK$P2 C(05,06,02);
- ITEM TRK$NOLO1 C(05,48,03);
- ITEM TRK$NOLO2 C(06,42,03);
- ITEM TRK$STA C(07,30,04);
- ITEM TRK$FRAME C(08,18,04); # FRAME SIZE CODE #
- END
- ARRAY UNODE$LN [0:0] S(11); # UNUSED NODES #
- BEGIN
- ITEM UNODE$FIL1 C(00,00,110) = [" "];
- ITEM NODNUMS C(01,00,98);
- ITEM UNODE$CRRT C(00,00,01) = ["0"]; # CARRIAGE CONTROL #
- END
- ARRAY USER$HDR [0:0] S(9); # HEADER FOR USER SUMMARY #
- BEGIN
- ITEM USER$1 C(00,00,88) =
- ["0 USER NAME FAMILY F-STATUS USER
- U-STATUS APPL A-STATUS"];
- END
- ARRAY USER$LN [0:0] S(9); # USER LINE #
- BEGIN
- ITEM USER$FIL C(00,00,90) = [" "];
- ITEM USER$NAM C(02,00,07);
- ITEM USER$FAM C(03,00,07);
- ITEM USER$FST C(04,12,03);
- ITEM USER$USER C(05,00,07);
- ITEM USER$UST C(06,12,03);
- ITEM USER$APPL C(07,00,07);
- ITEM USER$AST C(08,12,03);
- END
- ARRAY USEDN$HDR [0:0] S(3); # UNUSED NODE HEADER #
- BEGIN
- ITEM USEDNOD C(00,00,27) = ["0 UNUSED NODE NUMBERS"];
- END
- CONTROL EJECT;
- FUNC DC$FRAME (PFRAM) U;
- BEGIN
- #
- * FUNCTION DC$FRAME
- * ENTRY CONDITION : FRAME SIZE
- * EXIT CONDITION : CODE REPRESENTING THE FRAME SIZE
- * CODE DELIVERED BY FUNCTION CAN BE 0,1, OR 2.
- #
- DEF F500 # 500 #; # FRAME SIZE 500#
- DEF F256 # 256 #; # FRAME SIZE 256#
- DEF F1050 # 1050 #; # FRAME SIZE 1050#
- DEF FRAME0 # 0 # ; # FRAME SIZE 0 #
- DEF FRAME1 # 1 # ; # FRAME SIZE 1 #
- DEF FRAME2 # 2 # ; # FRAME SIZE 2 #
- ITEM PFRAM ; # FRAME SIZE#
- ITEM FCODE ; # FRAME CODE#
- IF PFRAM EQ FRAME0
- THEN
- BEGIN
- FCODE = F256;
- END
- ELSE
- BEGIN
- IF PFRAM EQ FRAME1
- THEN
- BEGIN
- FCODE = F500;
- END
- ELSE
- BEGIN
- FCODE = F1050; # FRAME SIZE 1050 #
- END
- END
- DC$FRAME = FCODE ; # RETURN RESULT #
- END # END OF DC$FRAME#
- CONTROL EJECT;
- PROC APPLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** APPLST - APPL LISTER
- *
- * S.M. ILMBERGER
- *
- * PRINTS TO OUTPUT FILE INFO FROM APPL TABLE
- *
- * PROC APPLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES ABORT FROM APPLST - READ ERROR
- *
- * METHOD
- *
- * IF AT LEAST ONE ENTRY EXISTS IN APPL$TABLE
- * WRITES APPL HEADER OT OUTPUT FILE
- * FOR EACH ENTRY IN APPL$TABLE
- * FORMAT AND WRITE APPL LINE TO OUTPUT FILE
- * IF NO ENTRIES IN APPL$TABLE
- * READ -EOR-
- * END
- #
- *ENDIF
- ITEM I; # LOOP COUNTER #
- ITEM CTEMP C(10); # CHARACTER TEMPORARY #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- IF ATWC[ENTRY1] GR 1
- THEN # AT LEAST ONE ENTRY EXISTS #
- BEGIN
- PGLST(LN2); # COUNT LINES TO BE PRINTED #
- WRITEH(OUTFET,APPL$HDR,11); # WRITE APPL HEADER #
- READW(LCFFET,APPL$TABLE,ATENTSZ,LCF$STAT);# READ 1ST TAB ENTRY #
- IF LCF$STAT NQ TRNS$OK # CK STATUS OF READ #
- THEN
- ERRMSG(ERMSG2,"APPLST"); # PRINT ERROR MESSAGE #
- FOR I=0 WHILE LCF$STAT EQ TRNS$OK
- DO
- BEGIN # SET UP APPL LINE FROM INFO #
- APPL$NAM[0] = ATNAME[I]; # IN APPL$TABL #
- IF NOT ATPRIV[I]
- THEN
- APPL$PRI[0] = "NO";
- ELSE
- APPL$PRI[0] = "YES";
- IF NOT ATUID[I]
- THEN
- APPL$UID[0] = "NO";
- ELSE
- APPL$UID[0] = "YES";
- IF NOT ATSTAT[I]
- THEN
- APPL$STA[0] = "EN";
- ELSE
- APPL$STA[0] = "DI";
- IF NOT ATRS[I] # IF RS SET #
- THEN
- BEGIN
- APPL$RS[0] = "NO"; # SET TO NO IF RS NOT SET #
- END
- ELSE
- BEGIN
- APPL$RS[0] = "YES"; # SET TO YES OTHERWISE #
- END
- IF NOT ATKDSP[I]
- THEN
- APPL$KDP[0] = "NO";
- ELSE
- APPL$KDP[0] = "YES";
- IF NOT ATXFR[I]
- THEN
- APPL$XFR[0] = "NO";
- ELSE
- APPL$XFR[0] = "YES";
- IF NOT ATPRU[I]
- THEN
- APPL$PRU[0] = "NO";
- ELSE
- APPL$PRU[0] = "YES";
- CTEMP = XCDD(ATMAXC[I]); # CONVERT TO DISPLAY CODE #
- APPL$MAXC[0] = C<8,2>CTEMP; # ASSIGN TO MAXC ENTRY #
- PGLST(LN1);
- WRITEH(OUTFET,APPL$LN,11); # WRITE APPLICATION LINE #
- APPL$FIL[0] = " ";
- READW(LCFFET,APPL$TABLE,ATENTSZ,LCF$STAT);
- END
- END
- ELSE
- BEGIN # APPL TABLE HAS NO ENTRIES #
- READW(LCFFET,APPL$TABLE,1,LCF$STAT); # READ -EOR- #
- IF LCF$STAT NQ LOC(ATWORD[0]) # MAKE SURE -EOR- WAS READ #
- THEN # EOR NOT READ #
- ERRMSG(ERMSG2,"APPLST");
- END # ELSE #
- RETURN;
- END # APPLST PROC #
- CONTROL EJECT;
- PROC CPLLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** CPLLST - COUPLER LISTER.
- *
- * S.M. ILMBERGER 81/10/27
- *
- * PRINTS COUPLER INFO FROM PLINK$XREF TABLE
- *
- * PROC CPLLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * FOR EACH COUPLER ENTRY IN PLINK$XREF TABLE
- * IF THE CURRENT NPU NODE-ID MATCHES ENTRY NODE-ID
- * WRITE COUPLER HEADER TO OUTPUT FILE
- * FORMAT AND WRITE COUPLER LINE TO OUTPUT FILE
- * CALL LLKLST
- * END
- #
- *ENDIF
- DEF COUPLER # 0 #; # LINK TYPE IS 0 IF LINK IS COUPLER #
- DEF PRIM # 0 #; # PRIMARY COUPLER #
- ITEM I; # LOOP COUNTER #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- FOR I=ENTRY1 STEP 1 UNTIL (PLWC[ENTRY0]-1)/PLENTSZ
- DO
- BEGIN # SEARCH PHYSICAL LINK TABLE #
- IF PLTYPE[I] EQ COUPLER # IF ENTRY IS COUPLER AND NPU NODE #
- AND PLNID1[I] EQ NODE$ID # ID MATCHES #
- THEN
- BEGIN # SET UP COUPLER LINE FOR OUTPUT #
- CPL$NAM[0] = PLNAME[I];
- TEMP1 = PLHNID[I]; # CONVERT NODE NUMBER TO DISPLAY CODE #
- TEMP2 = XCDD(TEMP1);
- CPL$NOD[0] = C<8,2>TEMP2;
- CPL$HNA[0] = PLHNAME[I];
- IF PLLOC[I] EQ PRIM
- THEN
- CPL$LOC[0] = "PRIMARY";
- ELSE
- CPL$LOC[0] = "SECOND";
- CPL$ID = PLHNID[I];
- PGLST(LN3);
- WRITEH(OUTFET,CPL$HDR,6);
- WRITEH(OUTFET,CPL$LN,6);
- CPL$FILL[0] = " ";
- WORD = (PLHNID[I] - 1) / 60; # COMPUTE WORD AND #
- BIT = (PLHNID[I] - 1) - (60 * WORD);# BIT TO REFER TO#
- B<BIT,1>NODEMAP[WORD] = 1;
- LLKLST;
- END
- END # I LOOP #
- RETURN;
- END # CPLLST PROC #
- CONTROL EJECT;
- PROC DEFLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** DEFLST - DEFINE LISTER
- *
- * S.M. ILMBERGER 81/10/27
- *
- * PRINTS DEFINES FROM DEFINE$TABLE
- *
- * PROC DEFLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * CALLS PGLST TO PRINT PAGE HEADER
- * IF DEFINE$TABLE EMPTY
- * WRITE NO DEFINES ON OUTPUT FILE
- * IF DEFINE$TABLE NOT EMPTY
- * WRITE DEFINE HEADER TO OUTPUT FILE
- * FOR EACH ENTRY IN DEFINE TABLE
- * FORMAT AND WRITE DEFINE LINE TO OUTPUT FILE
- * END
- #
- *ENDIF
- ITEM DONE B; # TRUE IF ALL DEFINES PROCESSED #
- ITEM I; # LOOP COUNTER #
- ITEM J; # LOOP COUNTER #
- ITEM K; # LOOP COUNTER #
- ITEM L; # LOOP COUNTER #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- LST$TYP[0] = " DEFINES LIST ";
- PGLST(NEWPAGE);
- IF DTWC[0] LQ 1 # NO DEFINES COMMANDS #
- THEN
- BEGIN
- PGLST(LN2);
- WRITEH(OUTFET,NO$DEF,6); # PRINT MESSAGE NO DEFINES #
- END
- ELSE
- BEGIN # DEFINE COMMANDS EXIST #
- PGLST(LN2);
- WRITEH(OUTFET,DEF$HDR,4); # PRINT DEFINE LINE #
- DONE = FALSE;
- J = 1;
- FOR I=1 WHILE NOT DONE
- DO
- BEGIN # FORMAT DEFINE LINE #
- DEF$LAB[0] = DEFNAME[J];
- IF DEFWCNT[J] LQ 11
- THEN # DEFINE STRING LESS THAN 10 WORDS LONG #
- BEGIN
- FOR K=0 STEP 1 UNTIL DEFWCNT[J]-1
- DO
- DEF$STR[K] = DEFSTRNG[J+K+1];
- PGLST(LN1);
- WRITEH(OUTFET,DEF$L,12); # WRITE DEFINE LINE #
- DEF$TOTAL[0] = " ";
- END
- ELSE
- BEGIN # DEFINE CONTENTS WILL NOT FIT ON ONE LINE#
- FOR K=0 STEP 1 UNTIL 9
- DO
- DEF$STR[K] = DEFSTRNG[J+K+1]; # FILL FIRST LINE #
- PGLST(LN1);
- WRITEH(OUTFET,DEF$L,12);
- DEF$TOTAL[0] = " ";
- FOR K=10 STEP 10 UNTIL DEFWCNT[J]
- DO
- BEGIN
- DEF$STR[0] = " ";
- FOR L=0 STEP 1 WHILE L LQ 9
- AND L+K LQ DEFWCNT[J]-1
- DO
- DEF$STR[L] = DEFSTRNG[J+K+L+1];
- PGLST(LN1);
- WRITEH(OUTFET,DEF$L,12); # WRITE DEFINE LINE #
- DEF$TOTAL[0] = " ";
- END
- END
- J = DEFWCNT[J] + J + 1;
- IF J GR DTWC[ENTRY0]
- THEN
- DONE = TRUE;
- END # I LOOP #
- END
- RETURN;
- END # DEFLST PROC #
- CONTROL EJECT;
- PROC DEVLST(TRMWORD);
- BEGIN
- *IF,DEF,IMS
- #
- ** DEVLST - DEVICE LISTER
- *
- * S.M. ILMBERGER 81/10/27
- *
- * PRINTS DEVICE INFO FROM LINE$RECORD
- *
- * PROC DEVLST(TRMWORD)
- *
- * ENTRY TRMWORD - INDEX OF FIRST WORD OF TERMINAL
- * ENTRY IN LINE$RECORD
- *
- * EXIT NONE
- *
- * MESSGES
- * ABORT FROM DEVLST -FN VAL NOT DEVIC FN
- *
- * METHOD
- *
- * IF AT LEAST ONE DEVICE ENTRY EXISTS FOR THIS TERMINAL
- * WRITE DEVICE HEADERS TO OUTPUT FILE
- * FOR EACH DEVICE ENTRY ON THE TERMINAL
- * SET DEVICE INFO FROM TERMINAL AND DEVICE ENTRY ITEMS
- * FOR EACH FNFV PAIR IN DEVICE ENTRY
- * SAVE EACH FN-VAL IN CORRESPONDING FV-VAL POSITION OF
- * DEVICE OUTPUT LINE
- * WRITE DEVICE LINES TO OUTPUT FILE
- * END
- *
- #
- *ENDIF
- ITEM TRMWORD I; # FIRST WORD OF TERMINAL ENTRY #
- DEF DT$CP # 3 #; # DEVICE TYPE FOR CP #
- DEF DT$CR # 1 #; # DEVICE TYPE FOR CR #
- DEF DT$AP # 6 #; # DEVICE TYPE FOR AP #
- DEF DT$CON # 0 #; # DEVICE TYPE FOR CON #
- DEF DT$LP # 2 #; # DEVICE TYPE FOR LP #
- DEF DT$PL # 4 #; # DEVICE TYPE FOR PL #
- DEF EIGHT # 8 #; # LENGTH OF DEVICE LIST #
- DEF TWELVE # 12 #; # LENGTH OF NEW DEVICE LIST #
- DEF FOUR # 4 #; # NUMBER OF PARITIES #
- DEF MAXFNDEV # 148 #; # MAX DEVICE FN VALUE #
- DEF MXEBR # 3 #; # MAXIMUM NUMBER OF EBR/ELR VALUES - 1 #
- DEF PRU$SIZE # 640 #; # MULTIPLE TO CONVERT DBZ #
- DEF SDT$12 # 12 #; # BEGINNING USER VALUE OF SDT #
- DEF SDT$15 # 15 #; # ENDING USER VALUE OF SDT #
- DEF SUBT$3780 # 2 #; # 3780 SUB-TIPTYPE NUMBER #
- DEF THREE # 3 #; # NUMBER OF OUTPUT DEVICES AND #
- # SUB-DEVICE TYPES FOR LP DEV-TYPE #
- DEF TT$BSC # 5 #; # TIPTYPE NUMBER FOR BSC #
- DEF TT$HASP # 3 #; # TIPTYPE NUMBER FOR HASP #
- DEF TT$MODE4 # 2 #; # TIPTYPE NUMBER FOR MODE4 #
- DEF TT$12 # 12 #; # TIPTYPE NUMBER FOR TT12 #
- DEF TT$3270 # 15 #; # TIPTYPE NUMBER FOR 3270 #
- DEF TWO # 2 #; # NUMBER OF ENTRIES IN TABLE #
- ITEM I; # LOOP COUNTER #
- ITEM J; # LOOP COUNTER #
- ITEM LENGTH I; # LENGTH OF ROOT NAME FOR DEVICE #
- ITEM TEMPDLC I=0; # TEMP STORAGE FOR DLC VALUE #
- ITEM TEMPXBZ I=0; # TEMP STORAGE FOR XBZ VALUE #
- ITEM DEVWORD; # WORD COUNT FOR TABLE #
- ARRAY TEMP$DBZ [0:0] S(1);
- BEGIN
- ITEM TEMPDBZ1 I(00,44,08); # MSB OF DBZ #
- ITEM TEMPDBZ2 I(00,52,08); # LSB OF DBZ #
- ITEM TEMPDBZ3 I(00,44,16); # MSB AND LSB OF DBZ #
- ITEM TEMPDBZ I(00,00,60) = [0];
- END
- ARRAY DEV$TYPES [0:TWELVE] S(1);
- ITEM DEV$TYP C(00,00,04)=[" CON"," CR"," LP"," CP"," PL",
- " "," AP"," "," "," "," ",
- " ", "DT12"];
- ARRAY FV$EBRS [0:MXEBR] S(1);
- ITEM FV$EBR C(00,00,10) = ["NO","CR","LF","CL"];
- ARRAY FV$ELOS [0:TWO] S(1);
- ITEM FV$ELO C(00,00,10) = [" ","EL","EB"];
- ARRAY FV$INS [0:TWO] S(1);
- ITEM FV$IN C(00,00,02) = ["KB","PT","BK"];
- ARRAY FV$OPS [0:THREE] S(1);
- ITEM FV$OP C(00,00,02) = ["PR","DI","PT"];
- ARRAY FV$PAS [0:FOUR] S(1);
- ITEM FV$PA C(00,00,01) = ["Z","O","E","N","I"];
- ARRAY SDT$CRS [0:TWO] S(1);
- ITEM SDT$CR C(00,00,02) = ["29","26"];
- ARRAY SDT$USR [SDT$12:SDT$15] S(1);
- ITEM SDT$USER C(00,00,05) = ["SDT12","SDT13","SDT14","SDT15"];
- ARRAY SDT$LPS [0:THREE] S(1);
- ITEM SDT$LP C(00,00,02) = ["A6","B6","A9"];
- ARRAY SDT$PLS [0:TWO] S(1);
- ITEM SDT$PL C(00,00,04) = ["6BIT","8BIT"];
- ARRAY Y$N$S [0:TWO] S(1);
- ITEM Y$N C(00,00,03) = ["NO","YES"];
- SWITCH FN$VAL
- ERR ,# 0 # ERR ,# 1 # ERR ,# 2 # ERR ,# 3 #
- ERR ,# 4 # ERR ,# 5 # ERR ,# 6 # ERR ,# 7 #
- ERR ,# 8 # ERR ,# 9 # ERR ,# 10 # ERR ,# 11 #
- ERR ,# 12 # ERR ,# 13 # ERR ,# 14 # ERR ,# 15 #
- ERR ,# 16 # ERR ,# 17 # TST ,# 18 # ERR ,# 19 #
- HN ,# 20 # ERR ,# 21 # AUTOCON,# 22 # PRI ,# 23 #
- UBL ,# 24 # UBZ ,# 25 # ABL ,# 26 # DBL ,# 27 #
- DBZ$MSB,# 28 # DBZ$LSB,# 29 # XBZ$MSB,# 30 # XBZ$LSB,# 31 #
- LK ,# 32 # ERR ,# 33 # TST ,# 34 # PW ,# 35 #
- PL ,# 36 # PG ,# 37 # CN ,# 38 # BS ,# 39 #
- CT ,# 40 # AB ,# 41 # B1 ,# 42 # B2 ,# 43 #
- CI ,# 44 # LI ,# 45 # ERR ,# 46 # ERR ,# 47 #
- SE ,# 48 # EP ,# 49 # PA ,# 50 # BR ,# 51 #
- TST ,# 52 # IN ,# 53 # OP ,# 54 # FA ,# 55 #
- ERR ,# 56 # DLC$MSB,# 57 # DLC$LSB,# 58 # DLX ,# 59 #
- DLTO ,# 60 # ELX ,# 61 # ELO ,# 62 # ELR ,# 63 #
- EBX ,# 64 # EBO ,# 65 # EBR ,# 66 # IC ,# 67 #
- OC ,# 68 # XLY ,# 69 # ERR ,# 70 # CP ,# 71 #
- TST ,# 72 # TST ,# 73 # TST ,# 74 # TST ,# 75 #
- SDT ,# 76 # TST ,# 77 # TST ,# 78 # TST ,# 79 #
- DO1 ,# 80 # ERR ,# 81 # ERR ,# 82 # ERR ,# 83 #
- ERR ,# 84 # ERR ,# 85 # ERR ,# 86 # ERR ,# 87 #
- TST ,# 88 # ERR ,# 89 # TST ,# 90 # TST ,# 91 #
- TST ,# 92 # TST ,# 93 # TST ,# 94 # TST ,# 95 #
- TST ,# 96 # TST ,# 97 # TST ,# 98 # TST ,# 99 #
- ERR ,#100 # ERR ,#101 # MC ,#102 # ERR ,#103 #
- ERR ,#104 # ERR ,#105 # ERR ,#106 # ERR ,#107 #
- ERR ,#108 # ERR ,#109 # ERR ,#110 # TST ,#111 #
- ERR ,#112 # TST ,#113 # TST ,#114 # TST ,#115 #
- TST ,#116 # TST ,#117 # TST ,#118 # TST ,#119 #
- TST ,#120 # TST ,#121 # TST ,#122 # TST ,#123 #
- TST ,#124 # TST ,#125 # TST ,#126 # TST ,#127 #
- TST ,#128 # TST ,#129 # TST ,#130 # TST ,#131 #
- TST ,#132 # TST ,#133 # TST ,#134 # TST ,#135 #
- TST ,#136 # TST ,#137 # TST ,#138 # TST ,#139 #
- TST ,#140 # TST ,#141 # TST ,#142 # TST ,#143 #
- TST ,#144 # RTS ,#145 # TST ,#146 # MCI ,#147 #
- MLI ;#148 #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- IF TEWC[TRMWORD] GR 2
- THEN # AT LEAST 1 DEVICE ENTRY EXISTS #
- BEGIN
- PGLST(LN3);
- WRITEH(OUTFET,DEV$HDR1,13); # WRITE DEVICE HEADERS #
- WRITEH(OUTFET,DEV$HDR2,13);
- WRITEH(OUTFET,DEV$HDR3,13);
- END
- FOR DEVWORD=TRMWORD+2 WHILE DEVWORD-TRMWORD+1 LQ TEWC[TRMWORD]
- DO # STEP THRU DEVICE ENTRY IN LINE RECORD #
- BEGIN
- IF LINREC$GC EQ 0 # NOT A GROUP STATEMENT #
- THEN
- BEGIN
- DEV$NAM[0] = DENAME[DEVWORD+1]; # SET DEVICE NAME #
- END
- ELSE # DEVICE IS PART OF GROUP STATEMENT #
- BEGIN
- LENGTH = 0;
- FOR I=0 STEP 1 UNTIL 6 # FIND LENGTH OF ROOT NAME #
- DO
- BEGIN
- IF C<I,1>DENAME[DEVWORD+1] NQ " " # NAME IS LEFT JUSTIFIED #
- THEN
- BEGIN
- LENGTH = LENGTH + 1;
- END
- END
- TEMP2 = XCHD(PORTNUM);
- C<0,LENGTH>DEV$NAM[0] = DENAME[DEVWORD+1];
- IF C<8,1>TEMP2 EQ " "
- THEN
- C<8,1>TEMP2 = "0";
- C<LENGTH,2>DEV$NAM[0] = C<8,2>TEMP2;
- END
- DEV$DT[0] = DEV$TYP[DEDT[DEVWORD+2]]; # SET DEVICE TYPE #
- DEV$PRI[0] = "NO";
- DEV$ACON[0] = "NO";
- WORD = DEVWORD + 2;
- BIT = 24;
- FOR J=1 STEP 1 UNTIL DEFNFV[DEVWORD+1]
- DO
- BEGIN # GET NEXT FN-FV PAIR FROM DEVICE ENTRY OF#
- IF BIT+16 LQ 60 # LINE RECORD #
- THEN # WHOLE FNFV PAIR FITS IN THIS WORD #
- BEGIN
- FNFV$ENT[0] = B<BIT,16>LRWORD[WORD];
- IF BIT+16 LS 60
- THEN
- BIT = BIT + 16;
- ELSE
- BEGIN # BIT +16 = 60 #
- BIT = 0;
- WORD = WORD + 1;
- END
- END
- ELSE # FN-FV PAIR OVERLAPS NEXT WORD #
- BEGIN # BIT + 16 GR 60 #
- B<0,60-BIT>FNFV$ENT[0] = B<BIT,60-BIT>LRWORD[WORD];
- B<60-BIT,BIT+16-60>FNFV$ENT[0] =
- B<0,BIT+16-60>LRWORD[WORD+1];
- WORD = WORD + 1;
- BIT = BIT + 16 - 60;
- END
- IF FN$ENT[0] GR MAXFNDEV
- THEN # FN VALUE TO LARGE #
- ERRMSG(ERMSG5,"DEVLST");
- GOTO FN$VAL[FN$ENT[0]]; # SAVE INFO IN OUTPU DEVICE LINE FOR#
- # EACH PARAMETER SPECIFIED ON INPUT LINE #
- ERR:
- ERRMSG(ERMSG5,"DEVLST");
- TST:
- TEST J;
- DBL: # FNFV PAIR IS DBL-SET INFO IN DEVICE LINE#
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1); # CONVERT TO DISPLAY #
- DEV$DBL[0] = C<9,1>TEMP2;
- TEST J;
- PW: # SET PAGE WIDTH #
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1); # CONVERT PW VALUE TO DISPLAY CODE #
- DEV$PW[0] = C<7,3>TEMP2;
- TEST J;
- PL:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1); # CONVERT PL VALUE TO DISPLAY CODE #
- DEV$PL[0] = C<7,3>TEMP2;
- TEST J;
- CN:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCHD(TEMP1); # CONVERT CN VALUE TO DISPLAY CODE #
- DEV$CN[0] = C<8,2>TEMP2;
- TEST J;
- BS:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCHD(TEMP1); # CONVERT BS VALUE TO DISPLAY CODE #
- DEV$BS[0] = C<8,2>TEMP2;
- TEST J;
- CT:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCHD(TEMP1); # CONVERT CT VALUE TO DISPLAY CODE #
- DEV$CT[0] = C<8,2>TEMP2;
- TEST J;
- CI:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1); # CONVERT CI VALUE TO DISPLAY CODE #
- DEV$CI[0] = C<8,2>TEMP2;
- TEST J;
- LI:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1); # CONVERT LI VALUE TO DISPLAY CODE #
- DEV$LI[0] = C<8,2>TEMP2;
- TEST J;
- SE: # SET SI VALUE TO YES OR NO #
- DEV$SE[0] = Y$N[FV$ENT[0]];
- TEST J;
- CP: # SET CP VALUE TO YES OR NO #
- DEV$CP[0] = Y$N[FV$ENT[0]];
- TEST J;
- ELX:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCHD(TEMP1); # CONVERT ELX VALUE TO DISPLY CODE #
- DEV$ELX[0] = C<8,2>TEMP2;
- TEST J;
- ELO:
- DEV$ELO[0] = FV$ELO[FV$ENT[0]];
- TEST J;
- ELR:
- DEV$ELR[0] = FV$EBR[FV$ENT[0]];
- TEST J;
- EBX:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCHD(TEMP1); # CONVERT EBX VALUE TO DISPLY CODE #
- DEV$EBX[0] = C<8,2>TEMP2;
- TEST J;
- EBO:
- DEV$EBO[0] = FV$ELO[FV$ENT[0]];
- TEST J;
- EBR:
- DEV$EBR[0] = FV$EBR[FV$ENT[0]];
- TEST J;
- FA:
- DEV$FA[0] = Y$N[FV$ENT[0]];
- TEST J;
- IC:
- DEV$IC[0] = Y$N[FV$ENT[0]];
- TEST J;
- OC:
- DEV$OC[0] = Y$N[FV$ENT[0]];
- TEST J;
- RTS: DEV$RTS[0] = Y$N[FV$ENT[0]];
- TEST J;
- MCI:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1); # CONVERT TO DISPLAY #
- DEV$MCI[0] = C<7,3>TEMP2;
- TEST J;
- MLI:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1); # CONVERT TO DISPLAY #
- DEV$MLI[0] = C<7,3>TEMP2;
- TEST J;
- LK:
- DEV$LK[0] = Y$N[FV$ENT[0]];
- TEST J;
- DLC$MSB: # SAVE FIRST HALF OF DLC #
- B<44,8>TEMPDLC = FV$ENT[0];
- TEST J;
- DLC$LSB: # SECOND HALF OF DLC #
- B<52,8>TEMPDLC = FV$ENT[0];
- TEMP2 = XCDD(TEMPDLC);
- DEV$DLC[0] = C<6,4>TEMP2;
- TEST J;
- DLX:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCHD(TEMP1);
- DEV$DLX[0] = C<8,2>TEMP2; # STORE DLX VALUE IN DEV OUTPUT LIN#
- TEST J;
- DLTO:
- DEV$DLTO[0] = Y$N[FV$ENT[0]]; # SAVE DLTO VAL IN DEV OUTPUT #
- TEST J;
- IN:
- DEV$IN[0] = FV$IN[FV$ENT[0]];
- TEST J;
- OP:
- DEV$OP[0] = FV$OP[FV$ENT[0]];
- TEST J;
- EP:
- DEV$EP[0] = Y$N[FV$ENT[0]];
- TEST J;
- PG:
- DEV$PG[0] = Y$N[FV$ENT[0]];
- TEST J;
- PA:
- DEV$PA[0] = FV$PA[FV$ENT[0]];
- TEST J;
- AB:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCHD(TEMP1);
- DEV$AB[0] = C<8,2>TEMP2;
- TEST J;
- B1:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCHD(TEMP1);
- DEV$B1[0] = C<8,2>TEMP2;
- TEST J;
- B2:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCHD(TEMP1);
- DEV$B2[0] = C<8,2>TEMP2;
- TEST J;
- HN:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1);
- DEV$HN[0] = C<8,2>TEMP2;
- TEST J;
- AUTOCON:
- DEV$ACON[0] = Y$N[FV$ENT[0]];
- TEST J;
- XBZ$MSB:
- B<44,8>TEMPXBZ = FV$ENT[0];
- TEST J;
- XBZ$LSB:
- B<52,8>TEMPXBZ = FV$ENT[0];
- TEMP2 = XCDD(TEMPXBZ);
- DEV$XBZ[0] = C<6,4>TEMP2;
- TEST J;
- SDT:
- IF FV$ENT[0] GQ SDT$12 # IF USER VALUE IS USED #
- THEN
- BEGIN
- DEV$SDT[0] = SDT$USER[FV$ENT[0]]; # SET USER VALUE #
- END
- ELSE
- BEGIN
- IF DEDT[DEVWORD+2] EQ DT$LP # IF PRINTER DEVICE #
- THEN
- BEGIN
- DEV$SDT[0] = SDT$LP[FV$ENT[0]];
- END # SET PRINTER VALUE #
- ELSE
- BEGIN
- IF DEDT[DEVWORD+2] EQ DT$CR # IF CARD READER DEVICE #
- THEN
- BEGIN
- DEV$SDT[0] = SDT$CR[FV$ENT[0]]; # SET CR VALUE #
- END
- ELSE
- BEGIN
- IF DEDT[DEVWORD+2] EQ DT$PL # IF PLOTTER DEVICE #
- THEN
- BEGIN
- DEV$SDT[0] = SDT$PL[FV$ENT[0]];
- END
- END
- END
- END
- TEST J;
- UBZ:
- IF C<0,2>LN$TIPT[0] NQ "TT" # IF NOT USER-DEFN TIPTYP #
- THEN
- BEGIN
- TEMP1 = FV$ENT[0];
- IF DEV$DT[0] EQ DEV$TYP[DT$CON] # IF ACTIVE DEVICE TYPE #
- THEN
- TEMP2 = XCDD(TEMP1*UBZ$CON); # ACTIVE DEVICE MULTIPLIER #
- ELSE
- TEMP2 = XCDD(TEMP1*PRU$SZ); # PASSIVE DEVICE MULTIPLIER #
- END
- ELSE
- BEGIN # USER DEFINED TIPTYPE #
- TEMP2 = XCDD(FV$ENT[0]);
- END
- DEV$UBZ[0] = C<6,4>TEMP2;
- TEST J;
- DBZ$MSB:
- IF C<0,2>LN$TIPT[0] EQ "TT" OR
- C<0,2>DEV$DT[0] EQ "DT" OR
- DEV$DT[0] EQ DEV$TYP[DT$CON] OR
- DEV$DT[0] EQ DEV$TYP[DT$AP]
- THEN
- BEGIN
- TEMPDBZ1[0] = FV$ENT[0];
- END
- TEST J;
- DBZ$LSB:
- IF C<0,2>LN$TIPT[0] EQ "TT" OR
- C<0,2>DEV$DT[0] EQ "DT" OR
- DEV$DT[0] EQ DEV$TYP[DT$CON] OR
- DEV$DT[0] EQ DEV$TYP[DT$AP]
- THEN
- BEGIN
- TEMPDBZ2[0] = FV$ENT[0];
- END
- ELSE
- BEGIN
- TEMPDBZ3[0] = PRU$SIZE*FV$ENT[0];
- END
- TEMP2 = XCDD(TEMPDBZ[0]);
- DEV$DBZ[0] = C<6,4>TEMP2;
- TEMPDBZ[0] = 0;
- TEST J;
- ABL:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1);
- DEV$ABL[0] = C<9,1>TEMP2;
- TEST J;
- DO1:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1);
- DEV$DO[0] = C<9,1>TEMP2;
- TEST J;
- BR:
- DEV$BR[0] = Y$N[FV$ENT[0]];
- TEST J;
- UBL:
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1);
- DEV$UBL[0] = C<8,2>TEMP2;
- TEST J;
- PRI:
- DEV$PRI[0] = Y$N[FV$ENT[0]];
- TEST J;
- XLY:
- TEMP2 = XCHD(FV$ENT[0]);
- DEV$XLY[0] = C<8,2>TEMP2;
- TEST J;
- MC:
- TEMP2 = XCHD(FV$ENT[0]);
- DEV$MC[0] = C<8,2>TEMP2;
- END # J LOOP #
- IF TETP[TRMWORD+1] EQ TT$MODE4 # IF TIPTYPE = MODE4 #
- OR (TETP[TRMWORD+1] GQ TT$12 AND TETP[TRMWORD+1] LQ TT$3270)
- THEN # OR USER TIPTYPES #
- BEGIN
- TEMP1 = DEA2[DEVWORD+2];
- TEMP2 = XCHD(TEMP1);
- DEV$TA[0] = C<8,2>TEMP2; # SET TERMINAL ADDRESS IN DEV OUTPT#
- END # LINE #
- IF TETP[TRMWORD+1] EQ TT$HASP # IF TIPTYPE = HASP #
- THEN
- BEGIN
- TEMP1 = DEA2[DEVWORD+2];
- TEMP2 = XCDD(TEMP1);
- DEV$STR[0] = C<9,1>TEMP2; # SET STREAM VAL IN DEV OUTPUT #
- END # LINE #
- IF TETP[TRMWORD+1] EQ TT$BSC # IF TIPTYPE IS BSC AND SUBTIP IS #
- THEN # 3780 AND DEVICE TYPE IS CP THEN #
- BEGIN # SET TERMINAL ADDRESS #
- IF TESTIP[TRMWORD+1] EQ SUBT$3780
- AND DEDT[DEVWORD+2] EQ DT$CP
- THEN
- BEGIN
- TEMP1 = DEA2[DEVWORD+2];
- TEMP2 = XCDD(TEMP1);
- DEV$TA[0] = C<8,2>TEMP2;
- END
- END
- IF DEST[DEVWORD+2] # SET DEVICE STATUS #
- THEN
- DEV$STAT[0] = "DI";
- ELSE
- DEV$STAT[0] = "EN";
- DEVWORD = DEVWORD + DEWC[DEVWORD];
- PGLST(LN4);
- WRITEH(OUTFET,DEV$LN1,13); # WRITE DEVICE LINES TO OUTPUT FILE#
- WRITEH(OUTFET,DEV$LN2,13);
- WRITEH(OUTFET,DEV$LN3,13);
- DEV1$FIL[0] = " ";
- DEV2$FIL[0] = " ";
- DEV3$FIL = " ";
- END # DEVWORD LOOP #
- RETURN;
- END # DEVLST PROC #
- CONTROL EJECT;
- PROC ERRLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** ERRLST - ERROR LISTER
- *
- * S.M. ILMBERGER 81/10/28
- *
- * PRODUCES ERROR LISTING
- *
- * PROC ERRLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGE NONE
- *
- * METHOD
- *
- * SET UP ERROR-2-FET
- * FILL ERR-2-BUFFER
- * SET UP ERROR-1-FET
- * FILL ERR-1-BUFFER
- * UNTIL ALL OF ERR-1-BUFFER AND ERR-2-BUFFER ARE DONE
- * GET THE ERROR WITH THE LOWEST LINE NUMBER FROM
- * ERROR-1-BUFFER OR ERR-2-BUFFER
- * FORMAT ERROR-LINE
- * WRITE ERROR-LINE TO OUTPUT FILE
- * READ NEXT ERROR
- * END
- #
- *ENDIF
- DEF NONE # -1 #; # VALUE OF LINE NUMBER FOR THE CASE WHERE
- THERE IS NO LINE NUMBER BINDING #
- DEF NONE$WRD # " NONE" #; # WORD OUTPUT FOR THE NO LINE NUMBER
- BINDING CASE. #
- ITEM E1DONE B; # SET IF ALL OF ERROR-FILE-1 IS PROCESSED #
- ITEM E2DONE B; # SET IF ALL OF ERROR-FILE-2 IS PROCESSED #
- ITEM ER1$STAT; # STATUS OF A READ #
- ITEM ER2$STAT; # STATUS OF A READ #
- ITEM I; # LOOP COUNTER #
- ARRAY ERR$LINE [0:0] S(11);
- BEGIN
- ITEM E$LINE I(00,06,30);
- ITEM E$NUM C(00,54,03); # ERROR NUMBER #
- ITEM E$TYPE C(01,54,01); # TYPE OF ERROR "F" OR "W" #
- ITEM E$DETL C(02,30,11); # ERROR DETAIL WORD #
- ITEM E$MSG C(03,54,71); # ERROR MESSAGE #
- ITEM E$FIL C(00,00,110) = [" "];
- END
- ARRAY ERR$TAB1 [0:0] S(2);
- BEGIN
- ITEM E1$CODE I(00,00,12); # ERROR CODE #
- ITEM E1$LINE I(00,12,18); # LINE NUMBER #
- ITEM E1$CWRD C(01,00,10); # CLARIFIER WORD #
- END
- ARRAY ERR$TAB2 [0:0] S(2);
- BEGIN
- ITEM E2$CODE I(00,00,12); # ERROR CODE #
- ITEM E2$LINE I(00,12,18); # LINE NUMBER #
- ITEM E2$CWRD C(01,00,10); # CLARIFIER WORD #
- END
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- LST$TYP[0] = " ERROR LISTING ";
- PGLST(NEWPAGE);
- E2FIRST[0] = LOC(E2WBWORD[0]);
- E2OUT[0] = LOC(E2WBWORD[0]); # SET UP PASS 2 ERROR FILE #
- E2IN[0] = LOC(E2WBWORD[0]);
- E2LIMIT[0] = LOC(E2WBWORD[0]) + PRULNGTH + 1;
- REWIND(ERR2FET);
- READ(ERR2FET);
- RECALL(ERR2FET);
- E1FIRST[0] = LOC(E1WBWORD[0]); # SET UP PASS 1 ERROR FILE #
- E1OUT[0] = LOC(E1WBWORD[0]);
- E1IN[0] = LOC(E1WBWORD[0]);
- E1LIMIT[0] = LOC(E1WBWORD[0]) + PRULNGTH + 1;
- REWIND(ERR1FET);
- READ(ERR1FET);
- RECALL(ERR1FET);
- PGLST(LN3);
- WRITEH(OUTFET,ERR$HDR,5); # WRITE ERROR HEADER #
- E1DONE = FALSE;
- E2DONE = FALSE;
- READW(ERR1FET,ERR$TAB1,2,ER1$STAT);# READ PASS 1 AND 2 ERR FILES #
- READW(ERR2FET,ERR$TAB2,2,ER2$STAT);
- IF ER1$STAT NQ TRNS$OK OR E1$LINE[0] EQ 0
- THEN # CK IF ERROR FILE-1 EMPTY #
- E1DONE = TRUE;
- IF ER2$STAT NQ TRNS$OK OR E2$LINE[0] EQ 0
- THEN # CK IF ERROR FILE-2 EMPTY #
- E2DONE = TRUE;
- FOR I=0 WHILE (NOT (E1DONE) OR NOT (E2DONE))
- DO # PRINT ERROR INFO UNTIL BOTH ERROR FILE-1 AND ERROR #
- BEGIN # FILE-2 ARE DONE #
- IF (NOT E1DONE AND NOT E2DONE)
- THEN # ERROR FILE 1 AND 2 ARE NOT DONE #
- BEGIN
- IF E1$LINE[0] LQ E2$LINE[0]
- THEN
- GOTO E$1; # GET NEXT ERROR FROM ERROR FILE-1 #
- ELSE
- GOTO E$2; # GET NEXT ERROR FROM ERROR FILE-1 #
- END
- ELSE
- BEGIN
- IF (E1DONE AND NOT E2DONE)
- THEN # ERROR FILE 1 IS DONE BUT NOT ERROR FILE 2 #
- GOTO E$2;
- ELSE
- BEGIN
- IF (NOT E1DONE AND E2DONE)
- THEN # ERROR FILE 2 IS DONE BUT NOT ERROR FILE 1 #
- GOTO E$1;
- END
- END
- TEST I;
- E$1:
- TEMP1 = E1$LINE[0]; # SET UP AND WRITE ERROR MESSAGE#
- TEMP2 = XCDD(TEMP1); # FROM PASS 1 ERROR FILE #
- E$LINE[0] = C<5,5>TEMP2;
- TEMP1 = E1$CODE[0];
- TEMP2 = XCDD(TEMP1);
- E$NUM[0] = C<7,3>TEMP2;
- E$DETL[0] = E1$CWRD[0];
- E$TYPE[0] = EMTTYPE[E1$CODE[0]];
- E$MSG[0] = EMTMSG[E1$CODE[0]];
- PGLST(LN1);
- WRITEH(OUTFET,ERR$LINE,11);
- E$FIL[0] = " ";
- READW(ERR1FET,ERR$TAB1,2,ER1$STAT);
- IF ER1$STAT NQ TRNS$OK OR E1$LINE[0] EQ 0
- THEN
- E1DONE = TRUE;
- TEST I;
- E$2:
- IF E2$LINE[0] EQ NONE # IF NO LINE NUMBER BINDING #
- THEN
- BEGIN
- E$LINE[0] = NONE$WRD; # ASSIGN NONE TO LINE NUMBER #
- END
- ELSE
- BEGIN
- TEMP1 = E2$LINE[0]; # SET UP AND WRITE ERROR MESSAGE#
- TEMP2 = XCDD(TEMP1); # FROM PASS 2 ERROR FILE #
- E$LINE[0] = C<5,5>TEMP2;
- END
- TEMP1 = E2$CODE[0];
- TEMP2 = XCDD(TEMP1);
- E$NUM[0] = C<7,3>TEMP2;
- E$DETL[0] = E2$CWRD[0];
- E$TYPE[0] = EMT2TYPE[E2$CODE[0]];
- E$MSG[0] = EMT2MSG[E2$CODE[0]];
- PGLST(LN1);
- WRITEH(OUTFET,ERR$LINE,11);
- E$FIL[0] = " ";
- READW(ERR2FET,ERR$TAB2,2,ER2$STAT);
- IF ER2$STAT NQ TRNS$OK OR E2$LINE[0] EQ 0
- THEN
- E2DONE = TRUE;
- TEST I;
- END # I LOOP #
- RETURN;
- END # ERRLST PROC #
- CONTROL EJECT;
- PROC ERRMSG(ENUM,EPRC);
- BEGIN
- *IF,DEF,IMS
- #
- ** ERRMSG - PRINT ERROR MESSAGE
- *
- * S.M. ILMBERGER 81/10/29
- *
- * WRITE DAYFILE ERROR MESSAGE
- *
- * PROC ERRMSG(ENUM,EPRC)
- *
- * ENTRY ENUM - SPECIFIES ERROR MESSAGE
- * EPRC - PROC NAME ERROR OCCURED IN
- *
- * EXIT NONE
- *
- * MESSAGES
- * ABORT FROM XXXXXXX - NO SUCH RECORD TYPE
- * ABORT FROM XXXXXXX - READ ERROR
- * ABORT FROM XXXXXXX - BAD NCF FILE RECORD
- * ABORT FROM XXXXXXX - INVALID RECORD TYPE
- * ABORT FROM XXXXXXX - FN VAL NOT DEVIC FN
- * ABORT FROM XXXXXXX - CAN'T READ LIN RECDS
- * ABORT FROM XXXXXXX - CAN'T READ NCF RECDS
- * ABORT FROM XXXXXXX - FN VAL NOT LINE FN
- * ABORT FROM XXXXXXX - FN VAL NOT TERM FN
- *
- * METHOD
- *
- * PUT PROC NAME IN ERROR MESSAGE
- * ISSUE DAYFILE ERROR MESSAGE
- * ABORT
- * END
- *
- #
- *ENDIF
- ITEM ENUM I; # ERROR NUMBER #
- ITEM EPRC C(8); # PROC ERROR OCCURED IN #
- # #
- # CODE BEGINS HERE #
- # #
- EMPROC[ENUM] = EPRC;
- MESSAGE(EM$ENT[ENUM],0); # WRITE ERROR MESSAGE IN DAYFILE #
- ABORT;
- RETURN;
- END # ERRMSG PROC #
- CONTROL EJECT;
- PROC EXSLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** EXSLST - EXPANDED SOURCE LISTER
- *
- * S.M. ILMBERGER 81/10/28
- *
- * PRODUCES EXPANDED SOURCE LISTING
- *
- * PROC EXSLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGE NONE
- *
- * METHOD
- *
- * SET UP ERROR-2-FET
- * FILL ERROR-2-BUFFER
- * SET UP SECONDARY-INPUT-FET
- * FILL SEC-INP-BUFFER
- * SET UP EXPANDED-SECONDARY-INPUT-FET
- * FILL EXP-SEC-INP-BUFFER
- * WRITE SOURCE HEADER TO OUTPUT FILE
- * FOR EACH LINE IN SEC-INP-BUFFER
- * IF SEC-INP-LINE CONTAINS A DEFINE
- * REPLACE IT WITH EXP-SEC-INP-LINE
- * READ THE NEXT EXP-SEC-INP-LINE
- * IF SEC-INP-LINE NUMBER MATCHES NEXT ERROR-LINE NUMBER
- * FLAG SEC-INP-LINE WITH ERROR FLAG
- * READ NEXT ERROR-LINE FROM ERROR-2-FET
- * WRITE SEC-INP-LINE TO OUTPUT FILE
- * READ NEXT SEC-INP-LINE
- * END
- *
- #
- *ENDIF
- ITEM DEFDONE B; # SET IF ALL DEFINES PROCESSED #
- ITEM ESI$STAT I; # STATUS OF READ ON ESI$BUFFER #
- ITEM ER2DONE B; # SET IF ALL PASS 2 ERRORS PROCESSED #
- ITEM ER$STAT; # STATUS OF A READ #
- ITEM I; # LOOP COUNTER #
- ITEM J; # LOOP COUNTER #
- ITEM LONG$DEF B; # TRUE IF DEFINE MADE ESIBUFF LONGER #
- # THAN 140 CHARACTERS #
- ARRAY ERR2 [0:0] S(2);
- BEGIN
- ITEM E2$CD U(00,00,12);# ERROR CODE #
- ITEM E2$LN U(00,12,18); # LINE NUMBER #
- ITEM E2$CW C(01,00,10);# CLARIFIER WORD #
- END
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- LST$TYP[0] = "EXPANDED SOURCE";
- PGLST(NEWPAGE);
- E2FIRST[0] = LOC(E2WBWORD[0]); # SET UP PASS 2 ERROR FILE #
- E2OUT[0] = LOC(E2WBWORD[0]);
- E2IN[0] = LOC(E2WBWORD[0]);
- E2LIMIT[0] = LOC(E2WBWORD[0]) + PRULNGTH + 1;
- REWIND(ERR2FET);
- READ(ERR2FET); # FILL CIO BUFFER #
- RECALL(ERR2FET);
- SECFIRST[0] = LOC(SECWORD[0]); # SET UP SECONDARY INPUT FILE #
- SECIN[0] = LOC(SECWORD[0]);
- SECOUT[0] = LOC (SECWORD[0]);
- SECLIMIT[0] = LOC(SECWORD[0]) + PRULNGTH + 1;
- REWIND(SECFET);
- READ(SECFET); # FILL CIO BUFFER #
- RECALL(SECFET);
- ESIFIRST[0] = LOC(ESIWORD[0]); # SET UP EXPANDED SECONDARY INPUT #
- ESIIN[0] = LOC(ESIWORD[0]); # FILE #
- ESIOUT[0] = LOC(ESIWORD[0]);
- ESILIMIT[0] = LOC(ESIWORD[0]) + PRULNGTH + 1;
- REWIND(ESIFET);
- READ(ESIFET); # FILL CIO BUFFER #
- RECALL(ESIFET);
- PGLST(LN3);
- WRITEH(OUTFET,SOURCE$HDR,2);
- DEFDONE = FALSE;
- ER2DONE = FALSE;
- READW(ERR2FET,ERR2,2,ER$STAT); # READ ERROR 2 FILE #
- IF ER$STAT NQ TRNS$OK OR E2$LN[0] EQ 0
- THEN
- ER2DONE = FALSE;
- READH(ESIFET,ESI$BUFFER,14,ESI$STAT);# READ EXP-SECND INPUT FILE #
- READH(SECFET,OUTPT$BUFFER,14,STMT$STAT);# READ SECOND INPUT FILE #
- FOR I=0 WHILE STMT$STAT EQ TRNS$OK
- DO
- BEGIN
- LONG$DEF = FALSE;
- IF OUTDLINE[0] EQ "D"
- THEN
- BEGIN
- OUTBUFF1[0] = ESIBUFF[0];
- READH(ESIFET,ESI$BUFFER,14,ESI$STAT);
- IF ESI$DEF[0] NQ "D"
- THEN
- LONG$DEF = TRUE;
- END
- IF NOT ER2DONE
- THEN
- BEGIN
- TEMP1 = E2$LN[0];
- TEMP2 = XCDD(TEMP1);
- IF C<5,5>TEMP2 EQ OUTLNUM[0]
- THEN
- BEGIN
- OUTELINE[0] = "***";
- READW(ERR2FET,ERR2,2,ER$STAT);
- IF ER$STAT NQ TRNS$OK OR E2$LN[0] EQ 0
- THEN
- ER2DONE = TRUE;
- TEMP1 = E2$LN[0];
- TEMP2 = XCDD(TEMP1);
- IF OUTLNUM[0] EQ C<5,5>TEMP2 # SEE IF 2 OR MORE ERRORS #
- THEN # ON SAME LINE #
- BEGIN
- FOR J=0 WHILE (OUTLNUM[0] EQ C<5,5>TEMP2 AND
- NOT ER2DONE)
- DO
- BEGIN # SKIP ERRORS WITH DUPLICATE LINE NUMBERS #
- READW(ERR2FET,ERR2,2,ER$STAT);
- IF ER$STAT NQ TRNS$OK OR E2$LN[0] EQ 0
- THEN
- ER2DONE = TRUE;
- TEMP1 = E2$LN[0];
- TEMP2 = XCDD(TEMP1);
- END
- END
- END
- END
- PGLST(LN1);
- WRITEH(OUTFET,OUTPT$BUFFER,14);
- OUTBUFF1[0] = " ";
- IF LONG$DEF # DEFINE STRING MADE EXPANDED SOURCE #
- # LINE LONGER THAN ONE LINE #
- THEN # PRINT REST OF LINE #
- BEGIN
- FOR I=0 WHILE ESI$DEF[0] NQ "D"
- AND ESI$STAT EQ TRNS$OK
- DO
- BEGIN
- PGLST(LN1);
- OUTBUFF1[0] = ESIBUFF[0];
- WRITEH(OUTFET,OUTPT$BUFFER,14);
- OUTBUFF1[0] = " ";
- READH(ESIFET,ESI$BUFFER,14,ESI$STAT);
- END
- LONG$DEF = FALSE;
- END
- READH(SECFET,OUTPT$BUFFER,11,STMT$STAT);
- END # I LOOP #
- RETURN;
- END # EXSLST PROC #
- CONTROL EJECT;
- PROC HDRLST; # PRINT HEADER INFO FOR LCF AND NCF #
- BEGIN
- *IF,DEF,IMS
- #
- ** HDRLST - HEADER INFO LISTER
- *
- * S.M. ILMBERGER 81/10/28
- *
- * PRINT HEADER INFO FOR LCF AND NCF
- *
- * PROC HDRLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGE NONE
- *
- * METHOD
- *
- * EJECT PAGE
- * WRITE PAGE HEADER TO OUTPUT FILE
- * WRITE TIME FILE WAS CREATED TO OUTPUT FILE
- * WRITE FILE NAME TO OUTPUT FILE
- * END
- *
- #
- *ENDIF
- # #
- # CODE BEGINS HERE #
- # #
- PGLST(NEWPAGE);
- PGLST(LN5);
- WRITEH(OUTFET,TIMELST,6);
- WRITEH(OUTFET,FH$NAM$LST,4);
- RETURN;
- END # HDRLST PROC #
- CONTROL EJECT;
- PROC INLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** INLST - INCALL INFO LISTER
- *
- * S.M. ILMBERGER 81/10/28
- *
- * WRITES TO OUTPUT FILE INFO FROM INCALL TABLE
- *
- * PROC INLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES
- * ABORT FROM INLST - READ ERROR
- *
- * METHOD
- *
- * IF AT LEAST ONE ENTRY EXISTS IN INCALL$TABLE
- * WRITE INCALL HEADER TO OUTPUT FILE
- * FOR EACH ENTRY IN INCALL$TABLE
- * FORMAT INCALL LINE
- * WRITE INCALL LINE TO OUTPUT FILE
- * IF NO ENTRIES IN INCALL$TABLE
- * READ -EOR-
- * END
- *
- #
- *ENDIF
- DEF NAME$SIZE # 7 #; # SIZE FOR FAM AND USER NAME #
- DEF UBZMUL # 100 #; # MULTIPLE OF 100 WHICH WITH UBZ WAS #
- # ENCODED #
- DEF ZERO # O"33" #; # VALUE OF DISPLAY CODE ZERO #
- ITEM INDEX ; # LOOP INDEX #
- ITEM I; # LOOP COUNTER #
- ITEM CTEMP C(10); # CHARACTER TEMPORARY #
- ITEM ITEMP; # INTEGER TEMPORARY #
- ITEM ITEMP2; # INTEGER TEMPORARY #
- ITEM ITEMP3; # INTEGER TEMPORARY #
- ITEM DTEMP; # INTEGER TEMPORARY #
- ARRAY FACTEMP [0:0] S(1); # FAC TEMPORARY #
- BEGIN
- ITEM FACT1 U(00,12,08); # FIRST TWO FAC DIGITS #
- ITEM FACT2 U(00,20,40); # LAST 10 FAC DIGITS #
- ITEM FACT12 U(00,12,48); # ENTIRE WORD OF FAC #
- END
- ITEM J; # INTEGER TEMPORARY #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- IF IBRWC[ENTRY1] GR 1
- THEN # AT LEAST ONE ENTRY EXISTS IN INCALL$TAB #
- BEGIN
- PGLST(LN3); # COUNT LINES TO BE PRINTED #
- WRITEH(OUTFET,INC$HDR1,13); # WRITE INCALL HEADER #
- WRITEH(OUTFET,INC$HDR2,13);
- READW(LCFFET,INCALL$TABLE,1,LCF$STAT);
- # READ FIRST WORD OF ENTRY #
- IF LCF$STAT NQ TRNS$OK
- THEN
- ERRMSG(ERMSG2,"INLST");
- FOR I=ENTRY0 WHILE LCF$STAT EQ TRNS$OK
- DO # UNTIL -EOR- IS READ #
- BEGIN
- INCALL$EC = IBWC[ENTRY0]; # SAVE ENTRY WORD COUNT #
- IF IB$LENG LS INCALL$EC-1
- THEN # NOT ENOUGH SPACE IN INCALL$TABL #
- BEGIN # ALLOCATE MORE SPACE #
- SSTATS(P<INCALL$TABLE>,INCALL$EC-1-IB$LENG);
- END
- READW(LCFFET,INCALL$TABLE,INCALL$EC-1,LCF$STAT);
- # READ REST OF INCALL ENTRY #
- IF LCF$STAT NQ TRNS$OK
- THEN
- ERRMSG(ERMSG2,"INLST");
- INC$CRRT[0] = "0"; # SET LINE FOR DOUBLE SPACE #
- INC$FAM[0] = IBFAM[4]; # SET UP INCALL LINE INFO #
- INC$USER[0] = IBUSER[5];
- FOR INDEX=0 STEP 1 UNTIL NAME$SIZE-1
- DO
- BEGIN
- IF C<INDEX,1>INC$FAM[0] EQ 0 # IF ZERO FILLED #
- THEN
- BEGIN
- C<INDEX,1>INC$FAM[0] = " "; # BLANK FILLED #
- END
- IF C<INDEX,1>INC$USER[0] EQ 0 # IF ZERO FILLED #
- THEN
- BEGIN
- C<INDEX,1>INC$USER[0] = " ";
- END
- END
- IF NOT IBPRI[1]
- THEN
- INC$PRI[0] = "NO";
- ELSE
- INC$PRI[0] = "YES";
- TEMP2 = XCDD(IBDBL[1]);
- INC$DBL[0] = C<9,1>TEMP2;
- TEMP2 = XCDD(IBABL[1]);
- INC$ABL[0] = C<9,1>TEMP2;
- TEMP2 = XCDD(IBDBZ[1]);
- INC$DBZ[0] = C<6,4>TEMP2;
- TEMP2 = XCDD(IBSNODE[2]);
- INC$SND[0] = C<7,3>TEMP2;
- TEMP2 = XCHD(IBSHOST[3]); #CONVERT TO DISPLAY CODE #
- INC$SHT[0] = C<4,6>TEMP2 ; #ASSIGN TO PROPER FIELD #
- IF IBCOLCT[2] # IF COLLECT FLAG SET #
- THEN
- BEGIN
- INC$COLLECT[0] = "YES";
- END
- ELSE
- BEGIN
- INC$COLLECT[0] = "NO";
- END
- TEMP2 = XCHD(IBPORT[1]);
- INC$PORT[0] = C<8,2>TEMP2;
- ITEMP2 = 1;
- FOR ITEMP = 1 STEP 1 UNTIL IBDPLR[2]
- DO
- BEGIN
- ITEMP2 = ITEMP2*2; # GET ACTUAL VALUE OF DPLR #
- END
- TEMP2 = XCDD(ITEMP2); # GET DISPLAY CODE OF DPLR #
- INC$DPLR[0] = C<6,4>TEMP2;
- IF IBDTEL[2] EQ 0 # IF DTEA IS NOT SPECIFIED #
- THEN
- BEGIN
- INC$DTEA[0] = "**NONE**";
- END
- ELSE
- BEGIN
- DTEMP = 15 - IBDTEL[2];
- FOR J = 0 STEP 1 UNTIL IBDTEL[2] -1 # CONVERT BCD DIGIT #
- DO
- BEGIN
- C<DTEMP + J,1>INC$DTEA[0] = B<J*4,4>IBDTEA[6] + ZERO;
- END
- END
- PGLST(LN2);
- WRITEH(OUTFET,INC$LN,13); # WRITE INCALL LINE TO OUTPUT BUF #
- INC$FIL[0] = " ";
- ITEMP = 0; # ITEMP SET TO 0 #
- FOR J=0 STEP 8 UNTIL 48
- DO # FOR EACH CHAR OF ANAME VALUE #
- BEGIN
- C<9,1>CTEMP = SSDCAD(B<J,8>IBRANAME[0]);
- C<ITEMP,1>INC$ANAM[0] = C<9,1>CTEMP;
- # CONVERTS INTO HEX VALUE #
- ITEMP = ITEMP + 1;
- END
- TEMP2 = XCDD(IBUBL[1]);
- INC$UBL[0] = C<9,1>TEMP2;
- TEMP2 = XCDD(IBUBZ[1]);
- INC$UBZ[0] = C<8,2>TEMP2;
- TEMP2 = XCDD(IBDNODE[2]);
- INC$DND[0] = C<8,2>TEMP2;
- TEMP2 = XCDD(IBWS[2]);
- INC$WS[0] = C<9,1>TEMP2;
- IF IBFSTSL[2] # IF FAST SELECT FLAG SET #
- THEN
- BEGIN
- INC$FSEL[0] = "YES";
- END
- ELSE
- BEGIN
- INC$FSEL[0] = "NO";
- END
- ITEMP2 = 1;
- FOR ITEMP = 1 STEP 1 UNTIL IBDPLS[2]
- DO
- BEGIN
- ITEMP2 = ITEMP2*2; # GET ACTUAL VALUE OF DPLS #
- END
- TEMP2 = XCDD(ITEMP2); # GET DISPLAY CODE OF DPLS #
- INC$DPLS[0] = C<6,4>TEMP2;
- TEMP2 = XCDD(IBWR[2]); # CONVERT WR TO DISPLAY CODE #
- INC$WR[0] = C<7,3>TEMP2;
- PGLST(LN1);
- WRITEH(OUTFET,INC$LN2,13); # WRITE LINE TO OUTPUT FILE #
- INC$FIL2 = " ";
- PGLST(LN1);
- WRITEH(OUTFET,INC$HDR3,3); # WRITE FACILITIES HEADER #
- IF IBFACNUM[5] EQ 0
- THEN # IF NO FACILITY CODES #
- BEGIN
- INC$FIL[0] = " ** NONE **";
- PGLST(LN1);
- WRITEH(OUTFET,INC$LN,13);
- INC$FIL[0] = " ";
- END
- FOR TEMP1=7 WHILE TEMP1 LS IBFACNUM[5]+7
- DO # FOR EACH FACILITY CODE #
- BEGIN
- FOR ITEMP3=20 STEP 13 WHILE TEMP1 LS IBFACNUM[5]+ 7 AND
- ITEMP3 LS 120
- DO # FILL LINE UNTIL FULL #
- BEGIN
- FACT12[0] = B<0,IBFACL[TEMP1]*4>IBFAC[TEMP1];
- IF IBFACL[TEMP1] GR 10
- THEN
- BEGIN
- CTEMP = XCHD(FACT1[0]);
- C<ITEMP3,2>INC$FIL[0] = C<08,02>CTEMP;
- END
- C<ITEMP3+2,10>INC$FIL[0] = XCHD(FACT2[0]);
- TEMP1 = TEMP1 + 1;
- END
- PGLST(LN1); # INCREMENT LINE COUNT #
- WRITEH(OUTFET,INC$LN,13); # WRITE LINE TO OUTPUT FILE #
- INC$FIL[0] = " "; # CLEAR LINE IMAGE BUFFER #
- END
- READW(LCFFET,INCALL$TABLE,1,LCF$STAT);
- # READ FIRST WORD OF NEXT ENTRY #
- END # I LOOP #
- END
- ELSE # NO ENTRIES EXIST IN INCALL$TABLE #
- BEGIN
- READW(LCFFET,INCALL$TABLE,1,LCF$STAT); # READ -EOR- #
- IF LCF$STAT NQ LOC(IBWORD[0]) # CK STATUS OF READ #
- THEN
- ERRMSG(ERMSG2,"INLST");
- END # ELSE #
- RETURN;
- END # INLST PROC #
- CONTROL EJECT;
- PROC LCFLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** LCFLST - LCF LISTER
- *
- * S.M. ILMBERGER 81/10/28
- *
- * SUPERVISE LCF INFO LISTING
- *
- * PROC LCFLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES
- * ABORT FROM LCFLST - READ ERROR
- * ABORT FROM LCFLST - INVALID RECORD TYPE
- * ERROR IN LCF-SUMMARY LISTING SUPRESSED
- *
- * METHOD
- *
- * SET UP LCF-FET
- * READ PRFX$TABLE INTO BUFFER
- * IF LCF IS VALID
- * SET UP HEADER INFO
- * PRINT LCF HEADER LINES
- * FOR EACH RECORD IN LCF FILE
- * READ RECORD INTO BUFFER
- * CALL APPROPRIATE PROC TO PROCESS EACH RECORD
- * END
- *
- #
- *ENDIF
- DEF NUM$LCF$REC # 4 #; # NUMBER OF LCF RECORDS #
- DEF PRF$7700L # 17 #; # PREFIX TABLE LENGTH #
- ITEM I; # LOOP COUNTER #
- SWITCH BLK$TYP APPL$R,
- USER$R,
- OUTCALL$R,
- INCALL$R;
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- LST$TYP[0] = " LCF SUMMARY ";
- LCFFIRST[0] = LOC(LCRBUFF[0]);# PT FET AT WORKING STORAGE BUFFER #
- LCFIN[0] = LOC(LCRBUFF[0]);
- LCFOUT[0] = LOC(LCRBUFF[0]);
- LCFLIMIT[0] = LOC(LCRBUFF[0]) + PRULNGTH + 1;
- REWIND(LCFFET);
- READ(LCFFET); # FILL CIO BUFFER WITH FILE HEADER RECORD #
- RECALL(LCFFET);
- READW(LCFFET,PRFX$TABLE,18,LCF$STAT); # READ RECORD INTO BUFF #
- NET$NAME[0] = PT$FNAME[0]; # SAVE FILE NAME #
- SKIPEI(LCFFET); # POSITION POINTER TO LAST RECORD #
- SKIPB(LCFFET,2);
- READ(LCFFET); # FILL CIO BUFFER W/PRFX$TABLE #
- RECALL(LCFFET);
- READW(LCFFET,PRFX$TABLE,18,LCF$STAT); # READ PREFIX TABLE #
- IF B<0,30>VEWORD0[0] NQ "VALID" OR
- LCF$STAT NQ LOC(VEWORD1[0]) + 1
- THEN
- BEGIN
- MESSAGE(EM$ENT[ERMSG9],0); # NOT VALID LCF FILE #
- ABRTFLG = TRUE; # SET ABORT FLAG #
- END
- ELSE
- BEGIN # VALID LCF FILE #
- C<0,8>HD$TIME[0] = C<0,8>PT$TIME[0]; # SET UP TIME AND DATE TO #
- C<0,8>HD$DATE[0] = C<0,8>PT$DATE[0]; # BE PRINTED #
- TITLE[0] = PT$TITLE[0]; # SET TITLE AND LCF NAME #
- HD$TYP[0] = "LCF";
- NAM$TYP[0] = "LCF";
- HDRLST; # PRINT HEADER INFO #
- REWIND(LCFFET);
- READ(LCFFET);
- RECALL(LCFFET);
- READW(LCFFET,PRFX$TABLE,18,LCF$STAT);
- FOR I=0 STEP 1 UNTIL NUM$LCF$REC-1
- DO
- BEGIN
- READ(LCFFET); # FILL CIO BUFFER WITH NEXT RECORD #
- RECALL(LCFFET);
- GOTO BLK$TYP[I];
- APPL$R:
- SSTATS(P<APPL$TABLE>,2);
- READW(LCFFET,APPL$TABLE,2,LCF$STAT); # READ APPL$TAB HEADER #
- IF LCF$STAT NQ TRNS$OK # CK STATUS OF READ #
- THEN
- ERRMSG(ERMSG2,"LCFLST"); # PRINT READ ERROR MESSAGE - ABORT#
- IF AT$IDENT[0] NQ "APPL"
- THEN
- ERRMSG(ERMSG4,"LCFLST"); # PRINT INVALID RECORD MSG #
- APPLST;
- SSTATS(P<APPL$TABLE>,-1*AT$LENG); # RELEASE TABLE SPACE #
- TEST I;
- USER$R:
- SSTATS(P<USER$TABLE>,UTENTSZ);
- READW(LCFFET,USER$TABLE,2,LCF$STAT); # READ TABLE HEADER #
- IF LCF$STAT NQ TRNS$OK # CK STATUS OF READ #
- THEN
- ERRMSG(ERMSG2,"LCFLST"); # PRINT READ-ERROR MSG - ABORT #
- IF UT$IDENT[0] NQ "USER"
- THEN
- ERRMSG(ERMSG4,"LCFLST");# PRINT INVALID RECORD MESSAGE-ABRT#
- USERLST;
- SSTATS(P<USER$TABLE>,-1*UT$LENG);
- TEST I;
- OUTCALL$R:
- SSTATS(P<OUTCALL$TABL>,2);
- READW(LCFFET,OUTCALL$TABL,2,LCF$STAT); # READ TABLE HEADER #
- IF LCF$STAT NQ TRNS$OK # CK STATUS OF READ #
- THEN
- ERRMSG(ERMSG2,"LCFLST"); # PRINT READ ERROR MESSAGE - ABORT#
- IF OB$IDENT[0] NQ "OUTCALL"
- THEN
- ERRMSG(ERMSG4,"LCFLST");# PRINT INVALID RECORD MESSAGE #
- OUTLST;
- SSTATS(P<OUTCALL$TABL>,-1*OB$LENG);
- TEST I;
- INCALL$R:
- SSTATS(P<INCALL$TABLE>,2);
- READW(LCFFET,INCALL$TABLE,2,LCF$STAT); # RD INCALL TAB HEADER#
- IF LCF$STAT NQ TRNS$OK
- THEN
- ERRMSG(ERMSG2,"LCFLST"); # PRINT READ ERROR MESSAGE - ABORT#
- IF IB$IDENT[0] NQ "INCALL"
- THEN
- ERRMSG(ERMSG4,"LCFLST"); # PRINT MESSAGE - ABORT #
- INLST; # LISTS INCALL STATEMENTS #
- SSTATS(P<INCALL$TABLE>,-1*IB$LENG);
- # RELEASE INCALL$TABLE SPACE #
- TEST I;
- END # I LOOP #
- END # VALID LCF #
- RETURN;
- END # LCFLST PROC #
- CONTROL EJECT;
- PROC LINLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** LINLST - LINE LISTER
- *
- * S.M. ILMBERGER 81/10/28
- *
- * PRINT LINE INFO
- *
- * PROC LINLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES
- * ABRT FROM LINLST - READ ERROR
- * ABRT FROM LINLST - FN VAL NOT LINE FN
- *
- * METHOD
- *
- * LOCATE LIN$CON$REC TABLE IN NCB
- * READ HEADER OF LIN$CON$REC TABLE
- * READ ALL FNFV PAIRS INTO LIN$CON$REC TABLE
- * USE PORTNUM FROM LIN$CON$REC AND NPU NODE TO SEARCH LIN$REC$INDX
- * TABLE FOR RELATIVE PRU ADDR OF CORRESPONDING LINE$RECORD
- * READ LINE$RECORD INTO BUFFER
- * IF LINE IS NOT FROM A GROUP STATEMENT
- * SET LINE NAME FROM LINE$RECORD
- * IF LINE IS FROM GROUP STATEMENT
- * SET LINE NAME FROM LINE$XREF TABLE
- * SET LINE INFO FROM ITEMS IN LIN$CON$REC TABLE
- * FOR EACH FNFV PAIR IN LIN$CON$REC TABLE
- * SET ITEM IN "LINE" OUTPUT LINE
- * WRITE LINE INFO TO OUTPUT FILE
- * END
- *
- #
- *ENDIF
- DEF ASCII$C # O"103" #;# VALUE FOR ASCII C CHARACTER #
- DEF LGUSERFN # 99 #; # LARGEST USER FN VALUE #
- DEF MAXLNCR # 28 #; # MAX LIN$CON$REC TABLE ENTRY SIZE #
- DEF MAX$LN$FN # 18 #; # MAXIMUM FN VALUE FOR LINE #
- DEF SMUSERFN # 90 #; # SMALLEST USER FN VALUE #
- DEF ZERO # O"33" #; # VALUE FOR DISPLAY CODE ZERO #
- DEF HOSTSIZE # 4 #; # SIZE FOR HOST TABLE ENTRY #
- DEF HOSTORD # 4 #; # HOST TABLE ORDINAL #
- ITEM DFLTEMP U=0; # TEMP STORAGE FOR DFL VALUE #
- ITEM FOUND B;
- ITEM I; # LOOP COUNTER #
- ITEM J; # LOOP COUNTER #
- ITEM K; # LOOP COUNTER #
- ITEM NCOUNT; # ENTRY COUNT TO SKIP INTERNAL TABLE #
- ITEM TABCOUNT; # TABLE COUNT #
- ITEM LCTENTRY; # LINE XREF ENTRY #
- ITEM LINRD$STAT I; # STATUS OF READ #
- ITEM LRIENT; # LINE REC INDEX ENTRY SIZE #
- ITEM MATCH B; # SET IF NODE NUM AND PORT NUM MATCH ITEM #
- ITEM NSVCTEMP U=0; # TEMP STORAGE FOR NSVC #
- ITEM PVCTEMP U=0; # TEMP STORAGE FOR PVC #
- ARRAY LTYPNAM [0:12] S(1);
- ITEM LTYPS C(00,00,02) = [" ","S1","S2","S3"," "," ","A1",
- "A2"," ","A6","H1","S4","H2"];
- ARRAY LSPEEDNUM [0:11] S(1);
- ITEM LSPEED1 C(00,00,05) = [" ","110","134","150","300","600",
- "1200","2400","4800","9600","19200",
- "38400"];
- ARRAY PSNNAM [0:10] S(1);
- ITEM PSNVAL C(00,00,07) = [" ","DATAPAC","TELENET","TRNSPAC",
- "TYMNET","CDSN","UNINET","C120 ",
- "PSN253","PSN254","PSN255"];
- ARRAY TIPNAM [0:15] S(1);
- ITEM TIPTYP C(00,00,05) = [" ","ASYNC","MODE4","HASP","X25",
- "BSC"," "," "," "," "," "," ","TT12","TT13",
- "TT14","3270"];
- SWITCH FNTYP ERRTYP , # 0 #
- AL , # 1 #
- LSPEED , # 2 #
- RCOUNT , # 3 #
- FRAME , # 4 #
- PVC$MSB, # 5 #
- PVC$LSB, # 6 #
- DCE , # 7 #
- PSN , # 8 #
- SVC$MSB, # 9 #
- SVC$LSB, # 10 #
- LCN , # 11 #
- RTIME , # 12 #
- DFL$MSB, # 13 #
- DFL$LSB, # 14 #
- ERRTYP , # 15 #
- DTEA , # 16 #
- IMDISC , # 17 #
- RC ; # 18 #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- SSTATS(P<LIN$CON$REC>,MAXLNCR);
- SSTATS(P<LINE$RECORD>,25);
- NCBWD = 3;
- NCBIT = 52;
- TENTRY[0] = 0; # CLEAR ENTRY #
- FOR I = 1 STEP 1 UNTIL 3
- DO
- BEGIN # SKIP NCB CHECKSUM AND NPU INFO #
- SERMSGX;
- NCBW;
- END
- FOR TABCOUNT = 1 STEP 1 UNTIL 5
- DO
- BEGIN
- NCOUNT = ENTCNT[0]; # GET ENTRY COUNT #
- SERMSGX; # SKIP TABLE ID HEADER #
- NCBW;
- IF NCOUNT NQ 0
- THEN # NOT EMPTY TABLE #
- BEGIN
- IF TABCOUNT EQ HOSTORD # IF HOST TABLE MET #
- THEN
- BEGIN
- NCOUNT = NCOUNT*HOSTSIZE; # ENTRY SIZE IS 4 WORDS #
- END
- FOR I = 1 STEP 1 UNTIL NCOUNT
- DO
- BEGIN
- SERMSGX; # SKIP SERVICE MESSAGE #
- NCBW;
- END
- END
- END
- ENTRY$CNT = ENTCNT[ENTRY0]; # SAVE ENTRY COUNT OF LIN$CON$REC TAB#
- LCWC[ENTRY0] = ENTRY$CNT;
- FOR K=ENTRY$CNT STEP -1 WHILE K NQ 0
- DO
- BEGIN
- FOR I=1 STEP 1 UNTIL 3
- DO # GET HEADER WORDS OF LIN$CON$REC TABLE #
- BEGIN
- SERMSGX; # CK IF XING A SERVICE MSG BOUNDARY #
- NCBW; # GET NEXT 16 BIT NCB WORD #
- B<44,16>LCWORD[I] = TENTRY[ENTRY0];
- END
- FNFV$CNT = LCFNFV[ENTRY3]; # SAVE FNFV COUNT FOR THIS ENTRY #
- IF FNFV$CNT NQ 0
- THEN # AT LEAST ONE FNFV PAIR EXISTS #
- BEGIN
- FOR J=1 STEP 1 UNTIL FNFV$CNT
- DO
- BEGIN
- SERMSGX; # CK IF XING A SERVICE MSG BOUNDARY #
- NCBW; # GET NEXT 16 BITS FROM NCB #
- B<44,16>LCWORD[J+3] = TENTRY[0];
- END
- END
- PORTNUM = LCPORT[ENTRY1];
- FOUND = FALSE;
- FOR I=ENTRY2 STEP LIENTSZ WHILE NOT FOUND
- AND I LQ LIWC[ENTRY1]
- DO
- BEGIN
- IF LINID[I] EQ NODE$ID
- AND (LIPORT[I] EQ PORTNUM # SEARCH LINE RECORD INDEX FOR #
- OR (PORTNUM GQ LIPORT[I] # MATCHING NPU NODE ID AND PORT #
- AND PORTNUM LQ LIPORT[I]+LIGC[I]) )
- THEN
- BEGIN
- FOUND = TRUE;
- LRIENT = I; # IF MATCH FOUND SAVE ENTRY NUMBER TO #
- END # REFERENCE RELATIVE PRU ADDRESS #
- END
- IF FOUND
- THEN
- BEGIN
- NCFFIRST[0] = LOC(LINEWORD[0]);# POINT FET AT WORKING STORAGE#
- NCFIN[0] = LOC(LINEWORD[0]); # BUFFER #
- NCFOUT[0] = LOC(LINEWORD[0]);
- NCFLIMIT[0] = LOC(LINEWORD[0]) + PRULNGTH + 1;
- NCFRR[0] = LIRPA[LRIENT];
- READ(NCFFET); # FILL CIO BUFFER #
- RECALL(NCFFET);
- READW(NCFFET,LINE$RECORD,2,LINRD$STAT); # READ THE LINE REC #
- # POINTED TO BY THE RELATIVE PRU ADDRESS #
- IF LINRD$STAT NQ TRNS$OK
- THEN
- ERRMSG(ERMSG2,"LINLST"); # PRINT READ ERRMSG - ABORT #
- LINREC$WC = LRWC[ENTRY1]; # SET LINE RECORD WORD COUNT #
- LINREC$GC = LRGC[ENTRY1]; # SET LINE RECORD GROUP COUNT #
- IF LINREC$WC GR LR$LENG
- THEN
- SSTATS(P<LINE$RECORD>,LINREC$WC-LR$LENG);
- READW(NCFFET,LINE$RECORD,LINREC$WC-1,LINRD$STAT);
- IF LINRD$STAT NQ TRNS$OK # CK STATUS OF READ #
- THEN
- ERRMSG(ERMSG2,"LINLST"); # PRINT READ ERR MSG - ABORT #
- IF LINREC$GC EQ 0
- THEN # NOT A GROUP STATEMENT #
- LN$NAM[0] = LRNAME[ENTRY0];
- ELSE # GROUP STATEMENT #
- BEGIN
- LCTENTRY = 0;
- MATCH = FALSE;
- FOR J=ENTRY2 STEP LCTENTSZ WHILE J LQ LCTWC[ENTRY1]
- AND NOT MATCH # SEARCH LINE XREF TAB FOR THE #
- DO # NPU NODE ID AND PORT NUMBER #
- BEGIN # THAT MATCH #
- IF LCTNID[J] EQ NODE$ID AND
- LCTPORT[J] EQ PORTNUM
- THEN
- BEGIN
- MATCH = TRUE;
- LCTENTRY = J;
- END
- END
- IF LCTENTRY NQ 0
- THEN
- LN$NAM[0] = LCTNAME[LCTENTRY]; # SET LINE NAME FROM LINE-#
- END # XREF TABLE #
- TEMP1 = LCPORT[ENTRY1];
- TEMP2 = XCHD(TEMP1);
- LN$PORT[0] = C<8,2>TEMP2; # SAVE PORT NUM IN OUTPUT LINE #
- LN$LTY[0] = LTYPS[LCLTYPE[ENTRY2]];
- IF LC$ARSPEED[ENTRY2] # LC$ARSPEED IS SET #
- THEN
- BEGIN
- LN$ARSPEED[0] = "YES"; # SET ARSPEED FLAG TO TRUE #
- END
- ELSE
- BEGIN
- LN$ARSPEED[0] = "NO"; # ELSE SET ARSPEED FLAG TO FALSE #
- END
- IF LCTTYP$A[ENTRY2] # CK IF AUTO PARAM SET #
- THEN
- BEGIN
- IF LC$SRANGE[ENTRY2] # IF HIGH SPEED LINE #
- THEN
- BEGIN
- LN$XAUTO[0] = "YES"; # XAUTO = YES #
- LN$AUTO[0] = "NO"; # AUTO = NO #
- END
- ELSE # MUST BE AUTO ONLY #
- BEGIN
- LN$XAUTO[0] = "NO";
- LN$AUTO[0] = "YES"; # AUTO = YES #
- END
- END
- ELSE # NEITHER AUTO NOR XAUTO #
- BEGIN
- LN$XAUTO[0] = "NO";
- LN$AUTO[0] = "NO";
- END
- LN$TIPT[0] = TIPTYP[B<1,4>LCTTYP[ENTRY2]]; # SET TIPTYPE #
- IF LCTTYP$IP[ENTRY2] GQ 12 # SAVE TIPTYPE USED IN TIPMAP #
- THEN
- B<LCTTYP$IP[ENTRY2]-5,1>TIPMAP[0] = 1;
- ELSE
- B<LCTTYP$IP[ENTRY2],1>TIPMAP[0] = 1;
- IF LCST[ENTRY3] EQ 01 # CHECK LINE STATUS #
- THEN # LINE IS DISABLED #
- LN$DI[0] = "YES";
- ELSE # LINE IS ENABLED #
- LN$DI[0] = "NO";
- FOR J=ENTRY4 STEP LCTENTSZ UNTIL FNFV$CNT + 3
- DO
- BEGIN
- IF LCFN[J] GR MAX$LN$FN # CHECK FOR FN'S LARGER THAN MAX #
- THEN
- BEGIN
- IF LCFN[J] LS SMUSERFN OR # CK FOR USER FN'S AND SKIP #
- LCFN[J] GR LGUSERFN
- THEN
- ERRMSG(ERMSG8,"LINLST");
- END
- ELSE
- BEGIN
- GOTO FNTYP[LCFN[J]];
- ERRTYP:
- ERRMSG(ERMSG8,"LINLST");
- AL: # SET AL VALUE IN OUTPUT LINE #
- TEMP1 = B<5,3>LCFV[J];
- TEMP2 = XCDD(TEMP1);
- LN$SL[0] = C<8,2>TEMP2;
- TEST J;
- LSPEED: # SET LSPEED VALUE IN OUTPUT LINE #
- LN$LSPE[0] = LSPEED1[LCFV[J]];
- TEST J;
- RCOUNT: # SET RCOUNT VALUE IN OUTPUT LINE #
- TEMP1 = LCFV[J];
- TEMP2 = XCDD(TEMP1);
- LN$RCNT[0] = C<8,2>TEMP2;
- TEST J;
- FRAME: # SET FRAME VALUE IN OUTPUT LINE #
- TEMP1 = LCFV[J];
- TEMP2 = XCDD(TEMP1);
- LN$FRAM[0] = C<7,3>TEMP2;
- TEST J;
- IMDISC: # SET IMMEDIATE DISCONNECT INDICATOR #
- IF LCFV[J] EQ 1
- THEN
- BEGIN
- LN$IMD[0] = "YES";
- END
- TEST J;
- RC: # DISPLAY RECONNECT INDICATOR #
- IF LCFV[J] EQ 1
- THEN
- BEGIN
- LN$RC[0] = "YES";
- END
- ELSE
- BEGIN
- LN$RC[0] = "NO";
- END
- TEST J;
- LCN: # SET LOGICAL CHANNEL NUMBER #
- TEMP2 = XCDD(LCFV[J]);
- LN$LCN[0] = C<7,3>TEMP2;
- TEST J;
- PVC$MSB: # SAVE FIRST HALF OF PVC VALUE #
- B<48,4>PVCTEMP = LCFV[J];
- TEST J;
- PVC$LSB: # SAVE SECOND HALF OF PVC AND SET IN OUTPT#
- B<52,8>PVCTEMP = LCFV[J];
- TEMP2 = XCDD(PVCTEMP);
- LN$NPVC[0] = C<6,4>TEMP2;
- TEST J;
- DCE: # SET DCE VALUE #
- IF LCFV[J] EQ 1
- THEN
- LN$DCE[0] = "DCE";
- TEST J;
- PSN: # SET PSN VALUE IN OUTPUT LINE #
- IF LCFV[J] GR 250
- THEN
- LN$PSN[0] = PSNVAL[LCFV[J] - 246];
- ELSE
- LN$PSN[0] = PSNVAL[LCFV[J]];
- TEST J;
- SVC$MSB: # SAVE 1ST HALF OF SVC #
- B<48,4>NSVCTEMP = LCFV[J];
- TEST J;
- SVC$LSB: # SAVE 2ND HALF OF SVC AND SET IN OUTPUT #
- B<52,8>NSVCTEMP = LCFV[J];
- TEMP2 = XCDD(NSVCTEMP);
- LN$NSVC[0] = C<7,3>TEMP2;
- TEST J;
- RTIME: # SET RTIME VALUE IN OUTPUT LINE #
- TEMP1 = LCFV[J];
- TEMP2 = XCDD(TEMP1);
- LN$RTIME[0] = C<5,5>TEMP2;
- TEST J;
- DFL$MSB: # SAVE 1ST HALF OF DFL #
- B<44,8>DFLTEMP = LCFV[J];
- TEST J;
- DFL$LSB: # SAVE 2ND HALF OF DFL AND SET DFL VALUE #
- B<52,8>DFLTEMP = LCFV[J];
- TEMP2 = XCDD(DFLTEMP);
- LN$DFL[0] = C<5,5>TEMP2;
- TEST J;
- DTEA: # SET DTEA VALUE IN OUTPUT LINE #
- TEMP2 = B<0,4>LCFV[J] + ZERO; # CONVERT 1ST SEMI-OCTET #
- C<1,1>TEMP2 = B<4,4>LCFV[J] + ZERO; # CONVERT 2ND #
- LN$DTEA[0] = TEMP2;
- END
- END # J LOOP #
- PGLST(LN6);
- WRITEH(OUTFET,LIN$HDR,11); # WRITE LINE HEADER AND LINE #
- WRITEH(OUTFET,LIN$HDR2,11);
- WRITEH(OUTFET,LIN$LN,11);
- WRITEH(OUTFET,LIN$LN2,11);
- TRMLST;
- LN$FIL[0] = " ";
- LN$FL2[0] = " ";
- LN$IMD[0] = "NO";
- LN$LCN[0] = "0";
- END # FOUND #
- END # K LOOP #
- SSTATS(P<LINE$RECORD>,-1*LR$LENG);
- SSTATS(P<LIN$CON$REC>,-1*LC$LENG);
- RETURN;
- END # LINLST PROC #
- CONTROL EJECT;
- PROC LLKLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** LLKLST - LOGICAL LINK LISTER
- *
- * S.M. ILMBERGER 81/10/28
- *
- * LIST LOGICAL LINK INFO
- *
- * PROC LLKLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * FOR EACH ENTRY IN LOGLINK$XREF TABLE
- * IF THE LINK IS CONNECTED TO THE CURRENT COUPLER
- * PUT LOGLINK NAME IN LOGLINK LINE
- * IF LOGLINK IS HOST TO NPU
- * SEARCH NPUXREF TABLE FOR NCNAME VALUE
- * IF LOGLINK IS HOST TO HOST
- * SEARCH PLINK$XREF FOR NCNAME VALUE
- * SET LOGLINK STATUS
- * WRITE LOGLINK HEADER TO OUTPUT FILE
- * WRITE LOGLINK LINE TO OUTPUT FILE
- * END
- *
- #
- *ENDIF
- DEF CPL$TYPE # 0 #; # CODE FOR PLTYPE = COUPLER #
- ITEM FOUNDNCNAME B; # TRUE IF NCNAME VALUE WAS FOUND #
- ITEM I; # LOOP COUNTER #
- ITEM J; # LOOP COUNTER #
- ITEM LLKCNT I; # NUMBER OF LIGLINKS TO THIS COUPLER #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- LLKCNT = 0;
- FOR I=ENTRY1 STEP 1 UNTIL (LLWC[ENTRY0]-1)/LLENTSZ
- DO
- BEGIN
- IF CPL$ID EQ LLHNID1[I]
- THEN
- BEGIN
- LLKCNT = LLKCNT + 1;
- LLK$NAM[0] = LLNAME[I];
- FOUNDNCNAME = FALSE;
- IF LLHNID2[I] EQ LLNID2[I]
- THEN # LOGICAL LINK IS HOST TO NPU #
- BEGIN # SEARCH NPUXREF TABLE FOR NCNAME VALUE #
- FOR J=ENTRY1 STEP 1 WHILE J LQ (NPWC[ENTRY0]-1)/NPENTSZ
- AND NOT FOUNDNCNAME
- DO
- BEGIN
- IF NPNID[J] EQ LLHNID2[I]
- THEN
- BEGIN
- FOUNDNCNAME = TRUE;
- LLK$NCN[0] = NPNAME[J]; # SAVE NCNAME #
- END
- END # J LOOP #
- END
- ELSE # LOGICAL LINK IS HOST TO HOST #
- BEGIN # SEARCH PLINK XREF TABLE FOR NCNAME VALUE#
- FOR J=ENTRY1 STEP 1 WHILE J LQ (PLWC[ENTRY0]-1)/PLENTSZ
- AND NOT FOUNDNCNAME
- DO
- BEGIN
- IF PLTYPE[J] EQ CPL$TYPE
- AND PLHNID[J] EQ LLHNID2[I]
- THEN
- BEGIN
- FOUNDNCNAME = TRUE;
- LLK$NCN[0] = PLNAME[J];
- END
- END # J LOOP #
- END # ELSE #
- IF LLST[I] # SET LOGLINK STATUS #
- THEN
- LLK$STA[0] = "DI";
- ELSE
- LLK$STA[0] = "EN";
- IF LLKCNT EQ 1
- THEN # FIRST LOGLINK ON THIS NPU #
- BEGIN
- PGLST(LN3);
- WRITEH(OUTFET,LLK$HDR,5); # PRINT LOGICAL LINK HEADER #
- WRITEH(OUTFET,LLK$LN,5); # PRINT LOGLINK LINE #
- END
- ELSE
- BEGIN # NOT FIRST LOGLINK ON THIS NPU #
- PGLST(LN1);
- WRITEH(OUTFET,LLK$LN,5); # PRINT LOGLINK LINE #
- END
- LLK$FILL[0] = " ";
- END
- END # I LOOP #
- RETURN;
- END # LLKLST PROC #
- CONTROL EJECT;
- PROC NCBW; # GETS ONE 16 BIT ENTRY FROM THE NCB #
- BEGIN
- *IF,DEF,IMS
- #
- ** NCBW - NCB WORD
- *
- * S.M. ILMBERGER 81/10/28
- *
- * GET, ONE 16 BIT ENTRY FROM NCB
- *
- * PROC NCBW
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * IF BIT COUNT+16 <= 60
- * GET NEXT 16 BITS STARTING AT BIT COUNT
- * ADD 16 TO BIT COUNT
- * IF BIT COUNT+16 > 60
- * GET NEXT BITS STARTING AT BIT COUNT
- * GET REST OF BITS FROM NEXT WORD
- * INCREMENT WORD COUNT
- * CHANGE BIT COUNT
- * END
- *
- #
- *ENDIF
- # #
- # CODE BEGINS HERE #
- # #
- IF NCBIT + 16 LQ 60
- THEN # NEXT 16 BIT ENTRY IN SAME WORD #
- BEGIN
- TENTRY[0] = B<NCBIT,16>NCBWORD[NCBWD];
- IF NCBIT + 16 LS 60
- THEN # INCREMENT BIT COUNT #
- NCBIT = NCBIT + 16;
- ELSE # CHANGE BIT COUNT AND WORD COUNT #
- BEGIN
- NCBIT = 0;
- NCBWD = NCBWD + 1;
- END
- END
- ELSE
- BEGIN # NEXT 16 BIT ENTRY OVERLAPS WORD #
- B<0,60-NCBIT>TENTRY[0] =
- B<NCBIT,60-NCBIT>NCBWORD[NCBWD];
- B<60-NCBIT,NCBIT+16-60>TENTRY[0] =
- B<0,NCBIT+16-60>NCBWORD[NCBWD+1];
- NCBWD = NCBWD +1;
- NCBIT = NCBIT + 16 - 60;
- END
- END # NCBW PROC #
- CONTROL EJECT;
- PROC NCFLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** NCFLST - NCF LISTER
- *
- * S.M. ILMBERGER 81/10/28
- *
- * LIST ALL INFO CONTAINED IN THE NCF
- *
- * PROC NCFLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES
- * ABRT FROM NCFLST - NO SUCH RECORD TYPE
- * ABRT FROM NCFLST - READ ERROR
- * ERROR IN NCFLST-SUMMARY LISTING SUPPRESSED
- * ABRT FROM NCFLST - BAD NCF FILE RECORD
- *
- * METHOD
- *
- * SET UP NCF FET
- * FILL CIO BUFFER
- * READ THE RFX$TABLE INTO BUFFER
- * SET UP HEADER INFO
- * READ NCF$INDEX RECORD
- * FOR EACH ENTRY IN NCF$INDEX
- * READ RECORD INTO CORRESPONDING TABLE
- * PRINT NCF HEADER
- * CALL NPULST TO PRINT EACH NPU
- * CALL NODLST TO PRINT NODE INFO
- * END
- *
- #
- *ENDIF
- DEF PRF$7700L # 17 #; # PREFIX TABLE LENGTH #
- DEF PRUPLS1 # O"101" #;# PRU LENGTH IS 65 #
- DEF SIZERECTYPE # 8 #; # NUMBER OF DEFFERENT KINDS OF RECORDS #
- ITEM I; # LOOP COUNTER #
- ITEM J; # LOOP COUNTER #
- ITEM MATCH B;
- ARRAY NCRWB [0:0] S(65); # NETWORK CONFIGURATION FILE BUFFER #
- BEGIN
- ITEM NCRBUFF (00,00,60);
- END
- ARRAY RECNUM [SIZERECTYPE];
- BEGIN
- ITEM TABTYPE U(00,00,12) = [
- ,
- O"7700",
- O"1603",
- O"1630",
- O"2010",
- O"1414",
- O"1430",
- O"0430",
- O"1411"];
- END
- SWITCH REC$TYP ERR$T,
- HDR$REC,
- NCB$REC,
- NPU$XRF,
- PL$XREF,
- LLK$XREF,
- LN$XREF,
- DEV$XREF,
- LN$REC$IDX;
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- LST$TYP[0] = " NCF SUMMARY ";
- NCFFIRST[0] = LOC(NCRBUFF[0]);# POINT FET AT WORKING STORAGE BUFF#
- NCFIN[0] = LOC(NCRBUFF[0]);
- NCFOUT[0] = LOC(NCRBUFF[0]);
- NCFLIMIT[0] = LOC(NCRBUFF[0]) + PRUPLS1;
- SKIPEI(NCFFET);
- SKIPB(NCFFET,2);
- READ(NCFFET); # FILL CIO BUFFER #
- RECALL(NCFFET);
- READW(NCFFET,PRFX$TABLE,15,STMT$STAT); # READ PREFIX TABLE #
- SSTATS(P<NCF$INDEX>,2); # ALLOCATE SPACE #
- READW(NCFFET,NCF$INDEX,2,STMT$STAT); # READ NCF$INDEX #
- IF STMT$STAT EQ TRNS$OK
- THEN # IF READ WAS O.K. #
- BEGIN
- C<0,8>HD$TIME[0] = C<0,8>PT$TIME[0];# SAVE TIME AND DATE #
- C<0,8>HD$DATE[0] = C<0,8>PT$DATE[0];
- TITLE[0] = PT$TITLE[0]; # SAVE TITLE #
- NET$NAME[0] = PT$FNAME[0]; # SAVE NCF NAME #
- NCF$IDX$EC = (NCFWC[ENTRY0]-1)/NCFENTSZ;
- IF NCF$NAM[ENTRY0] NQ "NCF"
- THEN # IF THIS IS NOT IDENTIFIED AS -NCF- #
- BEGIN
- STMT$STAT = TRNS$OK + 1; # SET ERROR STATUS #
- END
- END
- IF NOT NCFGOOD[ENTRY0] OR
- STMT$STAT NQ TRNS$OK
- THEN # NCF FILE NOT GOOD #
- BEGIN
- MESSAGE(EM$ENT[ERMSG11],0); # SEND MESSAGE TO DAYFILE #
- ABRTFLG = TRUE; # SET ABORT FLAG #
- END
- ELSE
- BEGIN # GOOD NCF FILE #
- SSTATS(P<NCF$INDEX>,NCFWC[ENTRY0]);
- READW(NCFFET,NCF$INDEX,NCFWC[ENTRY0]-1,STMT$STAT);
- # READ REST OF NCF$INDEX #
- IF STMT$STAT NQ TRNS$OK
- THEN # CK READ STATUS #
- ERRMSG(ERMSG2,"NCFLST");
- FOR I=ENTRY0 STEP 1 UNTIL NCF$IDX$EC-1 # FOR EACH ENTRY #
- DO # IN NCF$INDEX READ RECORD INTO TABLE #
- BEGIN # I LOOP #
- MATCH = FALSE;
- FOR J=0 STEP 1 WHILE NOT MATCH
- AND J LQ SIZERECTYPE
- DO
- BEGIN # J LOOP #
- IF TABTYPE[J] EQ NCFRT[I]
- THEN
- MATCH = TRUE;
- IF MATCH
- THEN
- BEGIN # MATCH FOUND #
- GOTO REC$TYP[J];
- HDR$REC:
- TEST I;
- NPU$XRF:
- READREC(P<NPU$XREF>,I);
- TEST I;
- PL$XREF:
- READREC(P<PLINK$XREF>,I);
- TEST I;
- LLK$XREF:
- READREC(P<LOGLINK$XREF>,I);
- TEST I;
- LN$XREF:
- READREC(P<LINE$XREF>,I);
- TEST I;
- DEV$XREF:
- TEST I;
- LN$REC$IDX:
- READREC(P<LIN$REC$INDX>,I);
- TEST I;
- NCB$REC: # SKIP NCB RECORDS #
- TEST I;
- ERR$T:
- ERRMSG(ERMSG3,"NCFLST");
- END # MATCH #
- END # J LOOP #
- ERRMSG(ERMSG1,"NCFLST");
- END # I LOOP #
- HD$TYP[0] = "NCF";
- NAM$TYP[0] = "NCF";
- HDRLST; # PRINT NAME OF NCF AND TIME CREATED #
- NPULST; # PRINT NPU INFORMATION #
- NODLST; # PRINT NODE NUMBERS USED #
- SSTATS(P<NCF$INDEX>,-1*NCF$LENG); # RELEASE ALL TABLE SPACE #
- SSTATS(P<NCB$BUFFER>,-1*NCB$LENG);
- SSTATS(P<NPU$XREF>,-1*NP$LENG);
- SSTATS(P<PLINK$XREF>,-1*PL$LENG);
- SSTATS(P<LOGLINK$XREF>,-1*LL$LENG);
- SSTATS(P<LINE$XREF>,-1*LCT$LENG);
- SSTATS(P<LIN$REC$INDX>,-1*LI$LENG);
- SSTATS(P<SUP$TABLE>,-1*ST$LENG);
- END # GOOD NCF FILE #
- RETURN;
- END # NCFLST PROC #
- CONTROL EJECT;
- PROC NODLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** NODLST - NODE INFO LISTER
- *
- * S.M. ILMBERGER 81/10/28
- *
- * LIST ALL THE UNUSED NODE NUMBERS
- *
- * PROC NODLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGE NONE
- *
- * METHOD
- *
- * PRINT THE LARGEST NODE NUMBER USED FROM NODMAP
- * PRINTS ALL UNUSED NODE NUMBERS FROM UNSET BITS IN NODMAP
- * END
- *
- #
- *ENDIF
- DEF ENDOFLN # 98 #;
- DEF LGNOD # 255 #; # LARGEST NODE NUMBER POSSIBLE #
- DEF SMNOD # 1 #; # SMALLEST NODE NUMBER POSSIBLE #
- ITEM CHACNT; # CHARACTER COUNT #
- ITEM I; # LOOP COUNTER #
- ITEM MAXNODE1 I; # MAXIMUN NODE NUMBER #
- ITEM UNUSEDNODE B; # SET IF NOT ALL NODES USED #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- MAXNOD[0] = 0;
- NODNUMS[0] = " ";
- MAXNODE1 = 0;
- FOR I=LGNOD STEP -1 WHILE MAXNODE1 EQ 0
- AND I GQ SMNOD
- DO
- BEGIN # FIND LARGEST NODE NUMBER USED #
- WORD = (I - 1) / 60; # COMPUTE WORD AND #
- BIT = (I - 1) - (60 * WORD); # BIT TO REFER TO #
- IF B<BIT,1>NODEMAP[WORD] EQ 1
- THEN # FOR EACH NODE NUMBER USED #
- BEGIN
- MAXNODE1 = I;
- TEMP1 = I;
- TEMP2 = XCDD(TEMP1);
- MAXNOD[0] = C<7,3>TEMP2; # PUT NODE NUMBER IN OUTPUT LINE #
- END
- END
- IF MAXNODE1 GR 0
- THEN # AT LEAST 1 NODE NUMBER WAS USED #
- BEGIN
- PGLST(LN4);
- WRITEH(OUTFET,MAXN$HDR,4); # WRITE MAX NODE NUM USED TO OUTPUT #
- WRITEH(OUTFET,MAXN$LN,2);
- CHACNT = 0;
- PGLST(LN4);
- WRITEH(OUTFET,USEDN$HDR,3);
- UNUSEDNODE = FALSE;
- FOR I=SMNOD STEP 1 UNTIL MAXNODE1
- DO
- BEGIN # SEARCH FOR UNUSED NODE NUMBERS #
- WORD = (I - 1) / 60; # COMPUTE WORD AND #
- BIT = (I - 1) - (60 * WORD); # BIT TO REFER TO #
- IF B<BIT,1>NODEMAP[WORD] EQ 0 # FIND UNUSED NODE NUMBERS LESS#
- THEN # THEN THE MAX NODE NUMBER #
- BEGIN
- UNUSEDNODE = TRUE;
- TEMP1 = I;
- TEMP2 = XCDD(TEMP1);
- C<CHACNT,3>NODNUMS[0] = C<7,3>TEMP2;
- CHACNT = CHACNT + 5;
- IF CHACNT GQ ENDOFLN # MORE THAN 1 LINE OF UNUSED NODE NO#
- THEN
- BEGIN
- CHACNT = 0;
- WRITEH(OUTFET,UNODE$LN,11);# WRITE UNUSED NODE NUMBERS TO#
- NODNUMS[0] = " "; # OUTPUT FILE #
- PGLST(LN1);
- END
- END
- END
- IF CHACNT NQ 0
- THEN
- BEGIN
- WRITEH(OUTFET,UNODE$LN,11);
- UNODE$FIL1[0] = " ";
- END
- IF NOT UNUSEDNODE # ALL NODE NUMBERS LS THAN THE MAX #
- THEN # NODE WERE USED #
- BEGIN
- MAXNODE[0] = MAXNOD[0];
- WRITEH(OUTFET,ALLNODS,6);
- END
- END
- RETURN;
- END # NODELST PROC #
- CONTROL EJECT;
- PROC NPULST;
- BEGIN
- *IF,DEF,IMS
- #
- ** NPULST - NPU LISTER
- *
- * S.M. ILMBERGER 81/10/29
- *
- * LIST NPU INFO
- *
- * PROC NPULST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * FOR EACH ENTRY IN NPU$XREF TABLE
- * FORMAT NPU OUTPUT LINE
- * PRINT NPU HEADER
- * PRINT NPU LINE
- * GET RELATIVE PRU ADDRESS OF NCB THAT MATCHES CURRENT NPU
- * READ IN NCB RECORD
- * CALL SUPLST, TRKLST, CPLLST, LINLST AND TIPLST
- * TO PRINT RESPECTIVE INFO
- * END
- *
- #
- *ENDIF
- ITEM FOUND B; # FOUND RIGHT NCB RECORD #
- ITEM I; # LOOP COUNTER #
- ITEM INDX; # TEMP STORAGE FOR INDEX #
- ITEM J; # LOOP COUNTER #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- FOR I=ENTRY1 STEP 1 UNTIL (NPWC[ENTRY0]-1)/NPENTSZ
- DO # FOR EACH ENTRY IN NPU XREF TABLE #
- BEGIN
- NPU$NAM[0] = NPNAME[I]; # SET NPU NAME IN NPU OUTPUT LINE #
- TEMP1 = NPNID[I];
- TEMP2 = XCDD(TEMP1);
- NPU$NOD[0] = C<7,3>TEMP2; # SET NPU NODE ID IN NPU OUTPUT LINE#
- NODE$ID = NPNID[I]; # SAVE NPU NODE ID #
- NPU$VAR[0] = NPVARNT[I]; # SET NPU VARIANT IN NPU OUTPUT LINE #
- IF NPOPGO[I] # SET OPGO FLAG IN NPU OUTPUT LINE #
- THEN
- NPU$OP[0] = "YES";
- ELSE
- NPU$OP[0] = "NO";
- IF NPDMP[I]
- THEN #SET DMP FLAG IN OUTPUT LINE #
- NPU$DMP[0] = "YES";
- ELSE
- NPU$DMP[0] = "NO";
- PGLST(LN3);
- WRITEH(OUTFET,NPU$HDR,7); # WRITE NPU HEADER AND NPU OUTPUT #
- WRITEH(OUTFET,NPU$LN,7); # LINE TO OUTPUT FILE #
- FIL1[0] = " ";
- FOUND = FALSE;
- FOR J=ENTRY0 STEP 1 WHILE J LQ NCF$IDX$EC-1
- AND NOT FOUND # SEARCH NCF$INDEX FOR RELATIVE PRU #
- DO # ADDRESS OF NCB THAT MATCHES THE #
- BEGIN # CURRENT NPU #
- IF NCFNID[J] EQ NODE$ID
- THEN
- BEGIN
- FOUND = TRUE;
- INDX = J;
- END
- END # J LOOP #
- IF FOUND
- THEN
- BEGIN
- READREC(P<NCB$BUFFER>,INDX); # READ CORRECT NCB RECORD #
- SUPLST; # CALL SUPLINK LISTING PROC #
- TRKLST; # CALL TRUNK LISTING PROC #
- CPLLST; # CALL COUPLER LISTING PROC #
- LINLST; # CALL LINE LISTING PROC #
- TIPLST; # CALL TIPTYPE LISTING PROC #
- WORD = (NPNID[I]-1)/60; # COMPUTE WORD AND #
- BIT = (NPNID[I]-1) - (60 * WORD); # BIT TO REFER TO #
- B<BIT,1>NODEMAP[WORD] = 1;
- END # FOUND #
- END # I LOOP #
- RETURN;
- END # NPULST PROC #
- CONTROL EJECT;
- PROC OUTLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** OUTLST - OUTCALL LISTER
- *
- * S.M. ILMBERGER 81/10/29
- *
- * LIST OUTCALL INFO
- *
- * PROC OUTLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES
- * ABRT FROM OUTLST - READ ERROR
- *
- * METHOD
- *
- * IF AT LEAST ONE ENTRY EXISTS IN OUTCALL$TABLE
- * WRITE OUTCALL HEADER TO OUTPUT FILE
- * FOR EACH ENTRY IN OUTCALL$TABLE
- * FORMAT OUTCALL LINE
- * WRITE OUTCALL LINE TO OUTPUT FILE
- * IF NO ENTRIES EXIST IN INCALL$TABLE
- * READ -EOR-
- * END
- *
- #
- *ENDIF
- DEF ZERO # O"33" #; # DISPLAY CODE VALUE FOR ZERO #
- DEF UBZMUL # 100 #; # MULTIPLE OF 100 WITH WHICH UBZ WAS #
- # ENCODED #
- ITEM I; # LOOP COUNTER #
- ITEM ITEMP; # INTEGER TEMPORARY #
- ITEM ITEMP2; # INTEGER TEMPORARY #
- ITEM ITEMP3; # INTEGER TEMPORARY #
- ITEM CTEMP; # CHARACTER TEMPORARY #
- ITEM DTEMP; # INTEGER TEMPORARY #
- ARRAY FACTEMP [0:0] S(1); # FAC TEMPORARY #
- BEGIN
- ITEM FACT1 U(00,12,08); # FIRST TWO FAC DIGITS #
- ITEM FACT2 U(00,20,40); # LAST 10 FAC DIGITS #
- ITEM FACT12 U(00,12,48); # ENTIRE WORD OF FAC #
- END
- ITEM J; # INTEGER TEMPORARY #
- ARRAY DTEA$TEMP [0:0] S(1); # DTEA TEMPORARY #
- BEGIN
- ITEM DTEA1 U(00,00,52);
- ITEM DTEA2 U(00,52,08);
- ITEM DTEA I(00,00,60);
- END
- CONTROL EJECT;
- PROC PRHEX(POS);
- #
- * PROCEDURE PRHEX
- * IT CONVERTS EACH EVERY 4 BIT FROM UDATA FIELD
- * AND PACKS IT INTO THE OUTPUT LINE FOR UDATA.
- *
- * ENTRY CONDITION :
- * POS = OFFSET WITHIN THE OUTCALL PACKET.
- * EXIT CONDITION :
- * POS UNCHANGED.
- *
- *
- #
- BEGIN
- DEF SIXTY # 60 #; # CONSTANT 60 #
- ITEM POS ; # OFFSET WITH OUTCALL #
- ITEM WORDC ; # LOCAL WORD COUNT #
- ITEM INDIX, J ; # INDEXES #
- ITEM BITC ; # BIT COUNT #
- ITEM CTEMP C(10); # CHARACTER TEMPORARY #
- WORDC = POS; # SAVE OFFSET #
- BITC = 32; # SET BIT TO POINT TO #
- # FIRST BIT OF UDATA #
- PGLST(LN1); # CONDITIONAL NEW PAGE HEADING #
- WRITEH(OUTFET,OUTC$21,3);
- J = 0; # INDEX FOR AN OUTPUT LINE OF UDATA #
- OUTC$FL3[0] = " ";
- FOR INDIX = 0 STEP 1 UNTIL OBUDL[2]-1
- DO
- BEGIN
- # FOR THE WHOLE LENGTH #
- # OF UDL #
- IF BITC EQ SIXTY # IF END OF WORD REACHED#
- THEN
- BEGIN
- BITC = 0; # BIT COUNT RESET TO 0 #
- WORDC = WORDC + 1; # BUMP WORD COUNT #
- END
- CTEMP = XCHD(B<BITC,4>OBUDATA[WORDC]);
- # EXTRACT 4 BITS EACH #
- # TIME #
- C<J,1>OUTC$UDT[0] = C<9,1>CTEMP; # PUT INTO UDATA LINE #
- BITC = BITC + 4; # GET THE NEXT 4 BITS #
- J = J + 1; # INCR. OUTPUT LINE INDX#
- IF J GQ 100
- THEN # PRINT LINE OF UDATA IF BUFFER IS FULL #
- BEGIN
- PGLST(LN1); # NEW PAGE HEADING IF NEEDED #
- WRITEH(OUTFET,OUTC$LN3,13);
- J = 0; # RESET OUTPUT LINE INDEX FOR UDATA #
- OUTC$FL3[0] = " "; # CLEAR LINE BUFFER #
- END
- END # END OF DO LOOP #
- IF J GR 0
- THEN
- BEGIN # LAST LINE OF UDATA #
- PGLST(LN1); # NEW PAGE HEADING IF NEEDED #
- WRITEH(OUTFET,OUTC$LN3,13);
- END
- END # END OF PROC PRHEX #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- IF OBRWC[ENTRY1] GR 1
- THEN # AT LEAST 1 ENTRY EXISTS IN OUTCALL$TABL #
- BEGIN
- PGLST(LN3);
- WRITEH(OUTFET,OUT$HDR1,11);
- WRITEH(OUTFET,OUT$HDR2,9);
- READW(LCFFET,OUTCALL$TABL,1,LCF$STAT);
- # READ FIRST WORD OF OUTCALL$TABLE ENTRY #
- IF LCF$STAT NQ TRNS$OK
- THEN
- ERRMSG(ERMSG2,"OUTLST"); # PRINT READ ERROR MSG - ABORT #
- FOR I=ENTRY0 WHILE LCF$STAT EQ TRNS$OK
- DO
- BEGIN
- OUTCALL$EC = OBWC[ENTRY0]; # SAVE ENTRY WORD COUNT #
- IF OB$LENG LS OUTCALL$EC-1
- THEN # NOT ENOUGH SPACE IN OUTCALL$TABL FOR #
- BEGIN # ENTRY - ALLOCATE MORE #
- SSTATS(P<OUTCALL$TABL>,OUTCALL$EC-1-OB$LENG);
- END
- READW(LCFFET,OUTCALL$TABL,OUTCALL$EC-1,LCF$STAT);
- # READ REST OF ENTRY #
- IF LCF$STAT NQ TRNS$OK
- THEN
- ERRMSG(ERMSG2,"OUTLST"); # PRINT ERROR MSG - ABORT #
- OUTC$CC1[0] = "0"; # SET LINE TO DOUBLE SPACE #
- OUTC$NM1[0] = OBNAME1[I]; # SET NAME1 IN OUTCALL OUTPUT LINE#
- IF NOT OBPRI[1] # SET PRIV FLAG IN OUTCALL LINE #
- THEN
- OUTC$PRI[0] = "NO";
- ELSE
- OUTC$PRI[0] = "YES";
- IF OBPID[1] # IF PID SPECIFIED #
- THEN
- BEGIN
- OUTC$PID[0] = OBNAME2[I]; # UPDATE PID NAME #
- END
- ELSE
- BEGIN
- OUTC$NM2[0] = OBNAME2[I];# SET NAME2 IN OUTCALL OUTPUT LINE#
- END
- TEMP2 = XCDD(OBDBL[1]);
- OUTC$DBL[0] = C<9,1>TEMP2; # SET DBL IN OUTCALL OUTPUT LINE #
- TEMP2 = XCDD(OBABL[1]);
- OUTC$ABL[0] = C<9,1>TEMP2; # SET ABL IN OUTCALL OUTPUT LINE #
- TEMP2 = XCDD(OBSNODE[2]);
- OUTC$SND[0] = C<8,2>TEMP2; # SET SNODE IN OUTCALL OUTPUT LINE#
- TEMP2 = XCDD(OBPORT[1]);
- OUTC$PRT[0] = C<8,2>TEMP2; # SET PRT IN OUTCALL OUTPUT LINE#
- ITEMP2 = 1;
- FOR ITEMP = 1 STEP 1 UNTIL OBDPLS[2]
- DO
- BEGIN
- ITEMP2 = ITEMP2*2; # GET ACTUAL VALUE OF DPLS #
- END
- TEMP2 = XCDD(ITEMP2); # GET DISPLAY CODE OF DPLS #
- OUTC$DPS[0] = C<6,4>TEMP2;
- TEMP2 = XCDD(OBWS[2]);
- OUTC$WS[0] = C<9,1>TEMP2;
- DTEA1[0] = OBDTEA1[3];
- DTEA2[0] = OBDTEA2[4];
- DTEMP = 15 - OBAL1[3];
- FOR J=0 STEP 1 UNTIL OBAL1[3] - 1
- DO # FOR EACH BCD NUMBER IN DTEA VALUE #
- BEGIN # CONVERT NUMBER TO DISPLAY CODE #
- C<DTEMP + J,1>OUTC$DTA[0] = B<J*4,4>DTEA + ZERO;
- END
- TEMP1 = 5 + OBFACNUM[2]; # POINT TO PRID /UDATA VALUE #
- TEMP2 = XCHD(OBPRID[TEMP1]);
- OUTC$PRD[0] = C<2,6>TEMP2; # SET PRID IN OUTPUT LINE #
- PGLST(LN2);
- WRITEH(OUTFET,OUTC$LN1,11); # WRITE OUTCALL LINE #
- OUTC$FL1[0] = " ";
- TEMP2 = XCDD(OBUBL[1]);
- OUTC$UBL[0] = C<9,1>TEMP2;
- TEMP2 = XCDD(OBUBZ[1]);
- OUTC$UBZ[0] = C<8,2>TEMP2; # SET UBZ IN OUTCALL OUTPUT LINE#
- TEMP2 = XCDD(OBDBZ[1]);
- OUTC$DBZ[0] = C<6,4>TEMP2; # SET DBZ IN OUTCALL OUTPUT LINE#
- TEMP2 = XCDD(OBDNODE[2]); # SET DNODE IN OUTPUT LINE #
- OUTC$DND[0] = C<7,3>TEMP2; # SET DNODE IN OUTPUT LINE #
- TEMP2 = XCDD(OBACC[2]);
- OUTC$ACL[0] = C<8,2>TEMP2;
- PGLST(LN1); # INCREMENT LINE COUNT #
- WRITEH(OUTFET,OUTC$LN2,9); # WRITE LINE TO OUTPUT FILE #
- IF OBUDL[2] EQ 0 # NONE SPECIFIED FOR USER DATA #
- THEN
- BEGIN
- PGLST(LN1); # CHECK IF NEW PAGE NEEDED #
- WRITEH(OUTFET,OUTC$21,3);
- OUTC$FL1[0] = " ** NONE **";
- PGLST(LN1);
- WRITEH(OUTFET,OUTC$LN1,4);
- OUTC$FL1[0] = " ";
- END
- ELSE
- BEGIN
- TEMP1 = 5 + OBFACNUM[2]; # POINT TO PRID /UDATA VALUE #
- PRHEX(TEMP1) ; # GET HEX DATA FROM UDATA #
- END
- OUTC$FL2 = " ";
- PGLST(LN1);
- WRITEH(OUTFET,OUT$HDR3,3); # WRITE FACILITIES HEADER #
- IF OBFACNUM[2] EQ 0
- THEN # IF NO FACILITY CODES #
- BEGIN
- OUTC$FL1[0] = " ** NONE **";
- PGLST(LN1);
- WRITEH(OUTFET,OUTC$LN1,4);
- OUTC$FL1[0] = " ";
- END
- OUTC$FL3[0] = " ";
- FOR TEMP1=5 WHILE TEMP1 LS OBFACNUM[2]+5
- DO # FOR EACH FACILITY CODE #
- BEGIN
- FOR ITEMP3=20 STEP 13 WHILE TEMP1 LS OBFACNUM[2]+5 AND
- ITEMP3 LS 120
- DO # FILL LINE UNTIL FULL #
- BEGIN
- FACT12[0] = B<0,OBFACL[TEMP1]*4>OBFAC[TEMP1];
- IF OBFACL[TEMP1] GR 10
- THEN
- BEGIN
- CTEMP = XCHD(FACT1[0]);
- C<ITEMP3,2>OUTC$FL3[0] = C<8,2>CTEMP;
- END
- C<ITEMP3+2,10>OUTC$FL3[0] = XCHD(FACT2[0]);
- TEMP1 = TEMP1 + 1;
- END
- PGLST(LN1); # INCREMENT LINE COUNT #
- WRITEH(OUTFET,OUTC$LN3,13); # WRITE LINE TO OUTPUT FILE #
- OUTC$FL3[0] = " "; # CLEAR LINE IMAGE BUFFER #
- END
- READW(LCFFET,OUTCALL$TABL,1,LCF$STAT);
- # READ FIRST WORD OF NEXT ENTRY #
- END # I LOOP #
- END
- ELSE # NO ENTRIES IN OUTCALL$TABL #
- BEGIN
- READW(LCFFET,OUTCALL$TABL,1,LCF$STAT); # READ -EOR- #
- IF LCF$STAT NQ LOC(OBWORD[0]) # CK STATUS OF READ #
- THEN
- ERRMSG(ERMSG2,"OUTLST");
- END
- RETURN;
- END # OUTLST PROC #
- CONTROL EJECT;
- PROC PGLST(NUMLN); # LISTS THE PAGE HEADER #
- BEGIN
- *IF,DEF,IMS
- #
- ** PGLST - PAGE HEADER LISTER
- *
- * S.M. ILMBERGER 81/10/29
- *
- * PRINTS PAGE HEADER IF NECESSARY
- *
- * PROC PGLST(NUMLN)
- *
- * ENTRY NUMLN - NUMBER OF LINES TO BE PRINTED
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * IF A NEW PAGE IS REQUESTED
- * PAGE EJECT AND PRINT PAGE HEADER
- * CLEAR LINE COUNT
- * ELSE
- * IF NUMLINE+LINCOUNT > LENGTH OF PAGE
- * PAGE EJECT AND PRINT PAGE HEADER
- * CLEAR LINE COUNT
- * ELSE
- * ADD NUMLINES TO LINE-COUNT
- * END
- *
- #
- *ENDIF
- ITEM NUMLN I; # NUMBER OF LINES TO BE PRINTED #
- DEF PGLNGTH # 57 #; # NUMBER OF LINES ON PAGE #
- ITEM LNCNT = 0; # LINE COUNT #
- ITEM PGNM = 0; # INTEGER PAGE NUMBER #
- # #
- # CODE BEGINS HERE #
- # #
- IF NUMLN EQ NEWPAGE
- THEN # FORCE A NEW PAGE #
- BEGIN
- PGNM = PGNM + 1;
- TEMP2 = XCDD(PGNM);
- PAGE$N[0] = C<5,5>TEMP2;
- WRITEH(OUTFET,PG$HDR,13); # WRITE PAGE HEADER #
- LNCNT = 1;
- END
- ELSE
- BEGIN
- IF LNCNT+NUMLN GR PGLNGTH
- THEN # NEXT LINE WILL NOT FIT ON PAGE #
- BEGIN # PAGE EJECT AND PRINT PAGE HEADER #
- PGNM = PGNM + 1;
- TEMP2 = XCDD(PGNM);
- PAGE$N[0] = C<5,5>TEMP2;
- WRITEH(OUTFET,PG$HDR,13);
- WRITEH(OUTFET,BLNK$LN,1);
- LNCNT = NUMLN + 2;
- END
- ELSE
- BEGIN # NEXT LINE WILL FIT ON PAGE #
- LNCNT = LNCNT + NUMLN; # INCREMENT LINE COUNT #
- END
- END
- RETURN;
- END # PGLST PROC #
- CONTROL EJECT;
- PROC RDNCB(ASCIILITERAL,NCB$TAB);
- # READS TABLES FROM NCB #
- BEGIN
- *IF,DEF,IMS
- #
- ** RDNCB - READ NCB
- *
- * S.M. ILMBERGER 81/10/29
- *
- * LOCATE AND READ SUPERVISORY TABLE FROM NCB
- *
- * PROC RDNCB(ASCIILITERAL,NCB$TAB)
- *
- * ENTRY ASCIILITERAL - ASCII CHAR TO SEARCH NCB FOR
- * NCB$TAB - ADDRESS OF TABLE TO PUT SUPERVISORY INFO IN
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * SEARCH NCB UNTIL ASCIILITERAL TABLE HEADER IS FOUND
- * FOR EACH ENTRY IN TABLE
- * READ ENTRY INTO SUP$TABLE
- * END
- *
- #
- *ENDIF
- ITEM ASCIILITERAL U;
- ITEM NCB$TAB; # ADDRESS OF TABLE TO READ INTO #
- ITEM I; # LOOP COUNTER #
- ITEM J; # LOOP COUNTER #
- ARRAY ENT [0:0] S(1);
- BEGIN
- ITEM ENTRYF U(00,44,08);
- ITEM ENTCNT U(00,52,08);
- ITEM TENTRY U(00,44,16);
- END
- BASED ARRAY NCBINFO [0:0] S(1);
- BEGIN
- ITEM NCBENT U(00,44,16);
- END
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- NCBWD = 3;
- NCBIT = 52;
- TENTRY[0] = 0;
- FOR I=0 WHILE ENTRYF[ENTRY0] NQ ASCIILITERAL
- DO
- BEGIN # SEARCH NCB UNTIL "S" IS FOUND #
- SERMSGX; # CK IF SERVICE MESSAGE BOUNDARY CROSSED #
- IF NCBIT + 16 LQ 60
- THEN
- BEGIN
- TENTRY[ENTRY0] = B<NCBIT,16>NCBWORD[NCBWD];
- IF NCBIT + 16 LS 60
- THEN
- NCBIT = NCBIT + 16;
- ELSE
- BEGIN # NCBIT + 16 = 60 #
- NCBIT = 0;
- NCBWD = NCBWD + 1;
- END
- END
- ELSE
- BEGIN # NCBIT + 16 GR 60 #
- B<0,60-NCBIT>TENTRY[ENTRY0] = B<NCBIT,60-NCBIT>NCBWORD[NCBWD];
- B<60-NCBIT,NCBIT+16-60>TENTRY[ENTRY0] =
- B<0,NCBIT+16-60>NCBWORD[NCBWD+1];
- NCBWD = NCBWD + 1;
- NCBIT = NCBIT + 16 - 60;
- END
- END
- IF ENTCNT[ENTRY0]+1 GR ST$LENG
- THEN
- SSTATS(NCB$TAB,ENTCNT[ENTRY0]+1-ST$LENG);
- P<NCBINFO> = NCB$TAB;
- NCBENT[0] = TENTRY[ENTRY0];
- FOR J=1 STEP 1 UNTIL ENTCNT[ENTRY0]
- DO # READ REST OF SUPERVISORY TABLE #
- BEGIN
- SERMSGX; # CK IF SERVICE MESSAGE BOUNDARY CROSSED #
- IF NCBIT + 16 LQ 60
- THEN
- BEGIN
- NCBENT[J] = B<NCBIT,16>NCBWORD[NCBWD];
- IF NCBIT + 16 LS 60
- THEN
- NCBIT = NCBIT + 16;
- ELSE
- BEGIN # NCBIT + 16 = 60 #
- NCBIT = 0;
- NCBWD = NCBWD + 1;
- END
- END
- ELSE
- BEGIN # NCBIT + 16 GR 60 #
- B<0,60-NCBIT>NCBENT[J] =
- B<NCBIT,60-NCBIT>NCBWORD[NCBWD];
- B<60-NCBIT,NCBIT+16-60>NCBENT[J] =
- B<0,NCBIT+16-60>NCBWORD[NCBWD+1];
- NCBWD = NCBWD + 1;
- NCBIT = NCBIT + 16 - 60;
- END
- END
- RETURN;
- END # RDNCB PROC #
- CONTROL EJECT;
- PROC READREC(POINTER,(INDEX));
- BEGIN
- *IF,DEF,IMS
- #
- ** READREC - READ RECOR
- *
- * S.M. ILMBERGER 81/10/29
- *
- * READ MCF FILE RECORDS
- *
- * PROC READREC(POINTER,(INDEX))
- *
- * ENTRY POINTER - ADDRESS OF TABLE TO READ INTO
- * INDEX - INDEX OF NCF$INDEX TABLE ENTRY
- *
- * EXIT NONE
- *
- * MESSAGES
- * ABRT FROM READREC - CAN'T READ NCF RECDS
- *
- * METHOD
- *
- * ALLOCATE TABLE SPACE
- * POINT FET AT WORKING STARAGE BUFFER
- * READ NCFFET RECORD INTO TABLE
- * END
- *
- #
- *ENDIF
- ITEM POINTER U;
- ITEM INDEX U;
- DEF STAT$EOF # O"33" #; # STATUS'S FOR NCFFET READS #
- DEF STAT$EOI # O"1033" # ;
- DEF STAT$EOR # O"23" #;
- DEF STAT$FUL # O"3" #;
- ITEM SIZE I;
- # #
- # CODE BEGINS HERE #
- # #
- SIZE = ( (NCFRL[INDEX] + PRULNGTH - 1) / PRULNGTH + 1) * PRULNGTH;
- SSTATS(POINTER,SIZE); # ALLOCATE TABLE SPACE #
- NCFRR[0] = NCFRANINDX[INDEX];
- NCFFIRST[0] = POINTER; # POINT FET AT WORKING STORAGE BUFFER #
- NCFIN[0] = POINTER;
- NCFOUT[0] = POINTER;
- NCFLIMIT[0] = POINTER + SIZE + 1;
- READ(NCFFET); # FILL CIO BUFFER #
- RECALL(NCFFET);
- IF NCFCODE[0] NQ STAT$EOR
- THEN
- ERRMSG(ERMSG7,"READREC");
- RETURN;
- END # READREC PROC #
- CONTROL EJECT;
- PROC SERMSGX; # CHECKS FOR SERVICE MESSAGE CROSSINE IN NCB #
- BEGIN
- *IF,DEF,IMS
- #
- ** SERMSGX - SERVICE MESSAGE CROSSING
- *
- * S.M. ILMBERGER 81/10/29
- *
- * CHECK IF SERVICE MESSAGE BOUNDARY IS CROSSED
- *
- * PROC SERMSGX
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * IF A SERVICE MESSAGE BOUNDARY IS CROSSED
- * SKIP THE NEXT SERVICE MESSAGE HEADER
- * END
- *
- #
- *ENDIF
- # #
- # CODE BEGINS HERE #
- # #
- IF (NCBWD / SERMSG) * SERMSG EQ NCBWD
- AND NCBIT EQ 52
- THEN # SERVICE MESSAGE IS CROSSED #
- NCBWD = NCBWD + 3;
- RETURN;
- END # SERMSGX PROC #
- CONTROL EJECT;
- PROC SRCLST;
- # THIS PROC LISTS THE INPUT SOURCE LINES #
- BEGIN
- *IF,DEF,IMS
- #
- ** SRCLST - SOURCE LISTER
- *
- * S.M.ILMBERGER81/10/29
- *
- * PRODUCE SOURCE LISTING
- *
- * PROC SRCLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * SET UP ERROR-2-FET
- * FILL ERROR-2-BUFFER
- * SET UP SECONDARY-INPUT-FET
- * FILL SEC-INP-BUFFER
- * WRITE SOURCE HEADER TO OUTPUT FILE
- * IF NO PASS-2 ERRORS EXIST
- * FOR EACH LINE IN SEC-INP-BUFFER
- * WRITE SEC-INP-LINE TO OUTPUT-FILE
- * IF PASS-2 ERRORS EXIST
- * FOR EACH LINE IN SEC-INP-BUFFER
- * IF PASS-2 ERRORS IXIST FOR LINE NUMBER
- * PLAG ERROR POSITION ON LINE
- * WRITE SEC-INP-LINE TO OUTPUT FILE
- * END
- #
- *ENDIF
- ITEM ER2$STAT; # STATUS OF READ #
- ITEM ERRDONE B; # ALL ERRORS PROCESSED WHEN SET #
- ITEM I; # LOOP COUNTER #
- ITEM J; # LOOP COUNTER #
- ARRAY ERR2$LN [0:0] S(2);
- BEGIN
- ITEM ERR2$CODE I(00,00,12); # ERROR CODE #
- ITEM ERR2$LIN I(00,12,18); # LINE NUMBER #
- ITEM ERR2$CLWD C(01,00,10); # CLARIFIER WORD #
- ITEM ERR2$WD1 U(00,00,60);
- ITEM ERR2$WD2 U(01,00,60);
- END
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- LST$TYP[0] = "SOURCE LISTING ";
- PGLST(NEWPAGE);
- E2FIRST[0] = LOC(E2WBWORD[0]); # POINT FET AT ERROR-1 WORKING #
- E2OUT[0] = LOC(E2WBWORD[0]); # STORAGE BUFFER #
- E2IN[0] = LOC(E2WBWORD[0]);
- E2LIMIT[0] = LOC(E2WBWORD[0]) + PRULNGTH + 1;
- REWIND(ERR2FET);
- READ(ERR2FET); # FILL CIO BUFFER #
- RECALL(ERR2FET);
- SECFIRST[0] = LOC(SECWORD[0]); # SET UP SECONDARY INPUT WORKING#
- SECIN[0] = LOC(SECWORD[0]); # STORAGE BUFFER #
- SECOUT[0] = LOC(SECWORD[0]);
- SECLIMIT[0] = LOC(SECWORD[0]) + PRULNGTH + 1;
- REWIND(SECFET);
- READ(SECFET); # FILL CIO BUFFER #
- RECALL(SECFET);
- PGLST(LN3);
- WRITEH(OUTFET,SOURCE$HDR,2);
- READW(ERR2FET,ERR2$LN,2,ER2$STAT);
- IF ER2$STAT NQ TRNS$OK # NO PASS2 ERRORS #
- OR ERR2$LIN[0] EQ 0
- THEN # NO PASS 2 ERRORS #
- BEGIN
- READH(SECFET,OUTPT$BUFFER,11,STMT$STAT);
- FOR I=1 WHILE STMT$STAT EQ TRNS$OK
- DO
- BEGIN # READ SOURCE LISTING AND WRITE IT TO #
- # OUTPUT BUFFER #
- PGLST(LN1);
- WRITEH(OUTFET,OUTPT$BUFFER,11);
- OUTBUFF1[0] = " ";
- READH(SECFET,OUTPT$BUFFER,11,STMT$STAT);
- END
- END
- ELSE
- BEGIN # PASS 2 ERRORS EXIST #
- ERRDONE = FALSE;
- READH(SECFET,OUTPT$BUFFER,11,STMT$STAT);
- FOR I=0 WHILE STMT$STAT EQ TRNS$OK
- DO
- BEGIN # FOR ALL OF SECONDARY INPUT FIL#
- IF NOT ERRDONE
- THEN # CK FOR ERRORS #
- BEGIN
- TEMP1 = ERR2$LIN[0];
- TEMP2 = XCDD(TEMP1);
- IF OUTLNUM[0] EQ C<5,5>TEMP2
- THEN
- BEGIN
- OUTELINE[0] = "***";
- READW(ERR2FET,ERR2$LN,2,ER2$STAT);
- IF ER2$STAT NQ TRNS$OK OR ERR2$LIN[0] EQ 0
- THEN
- ERRDONE = TRUE;
- TEMP1 = ERR2$LIN[0];
- TEMP2 = XCDD(TEMP1);
- IF OUTLNUM[0] EQ C<5,5>TEMP2 # SEE IF 2 OR MORE ERRORS #
- THEN # ON SAME LINE #
- BEGIN
- FOR J=0 WHILE (OUTLNUM[0] EQ C<5,5>TEMP2
- AND ERR2$LIN[0] NQ 0)
- DO
- BEGIN # SKIP ERRORS WITH DUPLICATE LINE NUMBERS #
- READW(ERR2FET,ERR2$LN,2,ER2$STAT);
- IF ER2$STAT NQ TRNS$OK OR ERR2$LIN[0] EQ 0
- THEN
- ERRDONE = TRUE;
- TEMP1 = ERR2$LIN[0];
- TEMP2 = XCDD(TEMP1);
- END
- END
- END
- END
- PGLST(LN1);
- WRITEH(OUTFET,OUTPT$BUFFER,11); # WRITE SECONDARY INPUT LINE #
- OUTBUFF1[0] = " "; # TO OUTPUT BUFFER #
- READH(SECFET,OUTPT$BUFFER,11,STMT$STAT);
- END # I LOOP #
- END # ELSE #
- RETURN;
- END # SRCLST PROC #
- CONTROL EJECT;
- PROC SUPLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** SUPLST - SUPLINK LISTER
- *
- * S.M. ILMBERGER 81/10/29
- *
- * LIST SUPLINK INFO
- *
- * PROC SUPLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * WRITE SUPLINK HEADER TO OUTPUT FILE
- * READ SUPERVISORY TABLE FROM THE NCB
- * FOR EACH ENTRY IN SUPERVISORY TABLE
- * FOR EACH ENTRY IN LOGLINK TABLE
- * IF ROUTING ORDINAL MATCHES HOST ID AND LLNOD-ID MATCHES
- * NPU ID
- * FORMAT SUPLINK LINE
- * WRITE SUPLINK LINE TO OUTPUT FILE
- * END
- #
- *ENDIF
- DEF ASCII$S # O"123" #;# OCTAL VALUE FOR ASCII "S" #
- DEF SUPTABENTSZ # 1 #; # SUPERVISORY TABLE ENTRY SIZE #
- ITEM FOUND B;
- ITEM I; # LOOP COUNTER #
- ITEM J; # LOOP COUNTER #
- ITEM SLK$CNT I; # SUPLINK COUNT #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- SLK$CNT = 0;
- PGLST(LN3);
- WRITEH(OUTFET,SUP$HDR,3);
- RDNCB(ASCII$S,P<SUP$TABLE>); # READ SUPLINK TAB FROM NCB #
- FOR I=ENTRY1 STEP STENTSZ UNTIL ST$ENT[0]
- DO # FOR EACH ENTRY IN SUPERVISORY TABLE #
- BEGIN
- FOUND = FALSE;
- FOR J=ENTRY1 STEP 1 WHILE # SEARCH LOGLIND TAB FOR MATCH#
- (NOT FOUND AND J LQ (LLWC[ENTRY0]-1)/LLENTSZ)
- DO
- BEGIN
- IF ST$RO[I] EQ LLHNID1[J] # IF ROUTING ORDINAL MATCHES HOST #
- AND NODE$ID EQ LLNID2[J] # ID AND NPU NODE ID MATCHES #
- THEN
- BEGIN # MATCH IS FOUND #
- FOUND = TRUE;
- SLK$NAM[0] = LLNAME[J]; # SET SUPLINK NAME IN SUPLINK LINE #
- SLK$CNT = SLK$CNT + 1;
- IF SLK$CNT EQ 1
- THEN
- BEGIN
- WRITEH(OUTFET,SUP$LN,3); # WRITE SUPLINK LINE #
- END
- ELSE
- BEGIN
- PGLST(LN1);
- WRITEH(OUTFET,SUP$LN,3);
- END
- SLK$FIL1[0] = " ";
- END
- END
- END
- RETURN;
- END # SUPLST PROC #
- CONTROL EJECT;
- PROC TIPLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** TIPLST - TIPTYPE LISTER
- *
- * S.M. ILMBERGER 81/10/29
- *
- * LIST ALL TIPTYPES USED FOR EACH NPU
- *
- * PROC TIPLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * FOR EACH BIT IN TYPTYPES-USED TABLE
- * IF BIT IS SET
- * SAVE CORRESPONDING NAME IN TIP-LINE
- * IF AT LEAST ONE TIPTYPE WAS USED
- * WRITE TIPTYPE HEADER TO OUTPUT FILE
- * WRITE TIPTYPE LINE TO OUTPUT FILE
- * END
- *
- #
- *ENDIF
- DEF ENDTIP # 10 #; # LAST TIP NUMBER #
- DEF FSTIP # 0 #; # FIRST TIP NUMBER #
- ITEM I; # LOOP COUNTER #
- ITEM J; # SCRATCH ITEM #
- ARRAY TIPNMS [0:10] S(1);
- ITEM TIPNAMES C(00,00,10) = [" ",
- " ASYNC",
- " MODE4",
- " HASP",
- " X25",
- " BSC",
- " SYNAUTO",
- " TT12",
- " TT13",
- " TT14",
- " 3270"
- ];
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- J = 1; # INITIALIZE POINTER TO OUTPUT LINE #
- FOR I=FSTIP STEP 1 UNTIL ENDTIP # SEARCH TIP LIST TABLE #
- DO # IF A BIT IS SET FOR A TIPTYPE #
- BEGIN # SAVE TIPTYPE IN TIPLST LINE #
- IF B<I,1>TIPMAP[0] EQ 1
- THEN
- BEGIN
- TIPS[J] = TIPNAMES[I];
- J = J + 1; # INCREMENT OUTPUT LINE POINTER #
- END
- END
- IF J NQ 1 # AT LEAST ONE TIPTYPE WAS USED #
- THEN
- BEGIN
- PGLST(LN4);
- WRITEH(OUTFET,TIP$HDR,4); # WRITE TIPLIST HEADER #
- WRITEH(OUTFET,TIP$LN,10); # WRITE TIPLIST LINE #
- END
- TIP$FILL[0] = " ";
- TIPMAP[0] = 0;
- RETURN;
- END #TIPLST PROC #
- CONTROL EJECT;
- PROC TRKLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** TRKLST - TRUNK STATEMENT LISTER
- *
- * S.M. ILMBERGER 81/10/29
- *
- * LIST TRUNK INFO
- *
- * PROC TRKLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES NONE
- *
- * METHOD
- *
- * FOR EACH TRUNK ENTRY IN PHYSICAL LINE XREF TABLE
- * IF NODE MATCHES CURRENT NPU NODE
- * SEARCH NPU$XREF TABLE FOR N1 AND N2 NAMES
- * FORMAT REST OF TRUNK LINE
- * WRITE TRUNK LINE TO OUTPUT FILE
- * END
- *
- #
- *ENDIF
- ITEM FOUNDNPU1 B; # SET IF N1 NAME FOUND #
- ITEM FOUNDNPU2 B; # SET IF N2 NAME FOUND #
- ITEM I; # LOOP COUNTER #
- ITEM J; # LOOP COUNTER #
- ITEM TRKCNT I; # NUMBER OF TRUNKS #
- DEF TRK$TYP # 1 #; # INDICATES PLINK IS TRUNK #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- TRKCNT = 0;
- FOR I=ENTRY1 STEP 1 UNTIL (PLWC[ENTRY0]-1)/PLENTSZ
- DO # FOR EACH ENTRY IN PHYSICAL LINK TAB #
- BEGIN
- IF PLTYPE[I] EQ TRK$TYP AND # LINK TYPE IS TRUNK AND NODE ID#
- (PLNID1[I] EQ NODE$ID OR PLNID2[I] EQ NODE$ID) # MATCHES #
- THEN
- BEGIN
- TRKCNT = TRKCNT + 1;
- TRK$NAM[0] = PLNAME[I]; # SET TRUNK NAME IN TRUNK OUTPT LINE #
- FOUNDNPU1 = FALSE;
- FOUNDNPU2 = FALSE;
- FOR J=ENTRY1 STEP 1 WHILE J LQ (NPWC[ENTRY0]-1)/NPENTSZ
- AND ( NOT FOUNDNPU1 OR NOT FOUNDNPU2)
- DO # SEARCH NPUXREF TABLE FOR NPU NAMES TO #
- BEGIN # PRINT IN N1 AND N2 POSITIONS #
- IF NPNID[J] EQ PLNID1[I]
- THEN
- BEGIN
- TRK$N1[0] = NPNAME[J]; # SET NAME1 IN TRUNK OUTPUT LINE #
- FOUNDNPU1 = TRUE;
- END
- IF NPNID[J] EQ PLNID2[I]
- THEN
- BEGIN
- TRK$N2[0] = NPNAME[J]; # SET NAME2 IN TRUNK OUTPUT LINE #
- FOUNDNPU2 = TRUE;
- END
- END # J LOOP #
- TEMP1 = PLP1[I];
- TEMP2 = XCDD(DC$FRAME(PLFRAME[I])); # CONVERTS CODE TO CHAR#
- TRK$FRAME[0] = C<6,4>TEMP2; # ASSIGN FRAME CODE #
- TEMP2 = XCHD(TEMP1);
- TRK$P1[0] = C<8,2>TEMP2; # SET P1 IN TRUNK OUTPUT LINE #
- TEMP1 = PLP2[I];
- TEMP2 = XCHD(TEMP1);
- TRK$P2[0] = C<8,2>TEMP2; # SET P2 IN TRUNK OUTPUT LINE #
- IF PLNLD1[I] # SET NOLOAD1 FLAG IN TRUNK OUTPT#
- THEN
- TRK$NOLO1[0] = "YES";
- ELSE
- TRK$NOLO1[0] = "NO";
- IF PLNLD2[I] # SET NOLOAD2 FLAG IN TRUNK OUTPT#
- THEN
- TRK$NOLO2[0] = "YES";
- ELSE
- TRK$NOLO2[0] = "NO";
- IF PLST[I] # SET STATUS FLAG IN TRUNK LINE #
- THEN
- TRK$STA[0] = "DI";
- ELSE
- TRK$STA[0] = "EN";
- IF TRKCNT EQ 1
- THEN
- BEGIN
- PGLST(LN3);
- WRITEH(OUTFET,TRK$HDR,9); # WRITE TRUNK HEADER TO OUTPUT #
- WRITEH(OUTFET,TRK$LN,9); # WRITE TRUNK LINE TO OUTPUT FILE#
- END
- ELSE
- BEGIN
- PGLST(LN1);
- WRITEH(OUTFET,TRK$LN,9); # WRITE TRUNK LINE TO OUTPUT FILE#
- END
- TRK$FIL[0] = " ";
- END
- END # I LOOP #
- RETURN;
- END # TRKLST PROC #
- CONTROL EJECT;
- PROC TRMLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** TRMLST - TERMINAL LISTER
- *
- * S.M. ILMBERGER 81/10/29
- *
- * LIST TERMINAL STATEMENT INFO
- *
- * PROC TRMLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSGES
- * ABRT FROM TRMLST - FN VAL NOT TERM FN
- *
- * METHOD
- *
- * FOR EACH TERMINAL ENTRY ON CURRENT LINE
- * FORMAT TERMINAL OUTPUT LINE FROM TERMINAL ITEMS
- * FOR EACH TERMINAL FNFV PAIR - STORE INFO INTO TERMINAL LINE
- * WRITE TERMINAL HEADER
- * WRITE TERMINAL LINE TO OUTPUT FILE
- * CALL DEVLST
- * END
- *
- #
- *ENDIF
- DEF BCE$TIP # 4 #; # TIPTYPE FOR BCE #
- DEF HASP$TIP # 3 #; # TIPTYPE FOR HASP #
- DEF MAX$FN # 148 #; # MAX POSSIBLE FN VALUE #
- DEF MAXCSET # 15 #; # MAX CODE FOR CSET #
- DEF MAXTC # 31 #; # MAX TERMINAL CLASS CODE #
- DEF MAXTSPEED # 11 #; # MAX CODE FOR TSPEED #
- DEF MD4$TIP # 2 #; # TIPTYPE FOR MODE4 #
- DEF TT$12 # 12 #; # TIPTYPE FOR USER TIP TT12 #
- DEF TT$3270 # 15 #; # TIPTYPE FOR 3270 #
- ITEM I; # INDEX VARIABLE #
- ITEM INDX I;
- ITEM J; # LOOP COUNTER #
- ITEM K; # LOOP COUNTER #
- ITEM CTEMP C(10); # CHARACTER TEMPORARY #
- ITEM FIR$SEMI B; # FLAG FOR FIRST HALF OF A PAD SEMI-OCTET #
- ITEM PAD$INDX; # POINTS TO PAD VALUES ON OUTPUT LINE #
- ARRAY CSET$NAMES [0:16] S(1);
- ITEM CSET C(00,00,07) = [" ","BCD","ASCII","APLTP",
- "APLBP","EBCD","EBCDAPL","CORRES","CORAPL",
- "EBCDIC",,,,,,"CSET15"];
- ARRAY CTYP$NAMES [0:2] S(1);
- ITEM CTYP$VAL C(00,00,03) = ["SVC","PVC"];
- ARRAY FNFVTABLE [0:0] S(1);
- BEGIN
- ITEM FNFV$ENT U(00,44,16);
- ITEM FN$ENT U(00,44,08);
- ITEM FV$ENT U(00,52,08);
- END
- ARRAY STIP1$NAMES [0:6] S(1);
- ITEM STIP1 C(00,00,05)=[ ,"N2741","M4A","POST","PAD","2780"];
- ARRAY STIP2$NAMES [0:6] S(1);
- ITEM STIP2 C(00,00,05) = [ ,"2741","M4C","PRE","USER","3780"];
- ARRAY TC$TYPES [0:32] S(1);
- ITEM TC C(00,00,05) =
- [ " ","M33","713","721","2741","M40","H2000",
- "X364","T4014","HASP","200UT","714X","711","714","HPRE","734",
- "2780","3780","3270", , , , , , , , , ,"TC28","TC29","TC30",
- "TC31"];
- ARRAY TSPEEEDS [0:11] S(1);
- ITEM TSPEED C(00,00,05) = [" ","110","134","150","300","600",
- "1200","2400","4800","9600","19200","38400"];
- ARRAY YESNOTAB [0:2] S(1);
- ITEM YESNOENT C(00,00,03) = ["NO","YES"];
- SWITCH TER$FN
- ERRTER, # 0 # ERRTER, # 1 # ERRTER, # 2 # ERRTER, # 3 #
- ERRTER, # 4 # ERRTER, # 5 # ERRTER, # 6 # ERRTER, # 7 #
- ERRTER, # 8 # ERRTER, # 9 # ERRTER, # 10 # ERRTER, # 11 #
- ERRTER, # 12 # ERRTER, # 13 # ERRTER, # 14 # ERRTER, # 15 #
- ERRTER, # 16 # ERRTER, # 17 # ERRTER, # 18 # ERRTER, # 19 #
- TSTJ , # 20 # ERRTER, # 21 # TSTJ , # 22 # TSTJ , # 23 #
- TSTJ , # 24 # TSTJ , # 25 # TSTJ , # 26 # TSTJ , # 27 #
- TSTJ , # 28 # TSTJ , # 29 # TSTJ , # 30 # TSTJ , # 31 #
- TSTJ , # 32 # ERRTER, # 33 # TSTJ , # 34 # TSTJ , # 35 #
- TSTJ , # 36 # TSTJ , # 37 # TSTJ , # 38 # TSTJ , # 39 #
- TSTJ , # 40 # TSTJ , # 41 # TSTJ , # 42 # TSTJ , # 43 #
- TSTJ , # 44 # TSTJ , # 45 # ERRTER, # 46 # ERRTER, # 47 #
- TSTJ , # 48 # TSTJ , # 49 # TSTJ , # 50 # TSTJ , # 51 #
- TSTJ , # 52 # TSTJ , # 53 # TSTJ , # 54 # TSTJ , # 55 #
- ERRTER, # 56 # TSTJ , # 57 # TSTJ , # 58 # TSTJ , # 59 #
- TSTJ , # 60 # TSTJ , # 61 # TSTJ , # 62 # TSTJ , # 63 #
- TSTJ , # 64 # TSTJ , # 65 # TSTJ , # 66 # TSTJ , # 67 #
- TSTJ , # 68 # TSTJ , # 69 # ERRTER, # 70 # TSTJ , # 71 #
- W , # 72 # CTYP , # 73 # NCIR , # 74 # NEN , # 75 #
- TSTJ , # 76 # RIC , # 77 # BCF , # 78 # MREC , # 79 #
- TSTJ , # 80 # ERRTER, # 81 # ERRTER, # 82 # ERRTER, # 83 #
- ERRTER, # 84 # ERRTER, # 85 # ERRTER, # 86 # ERRTER, # 87 #
- COLECT, # 88 # ERRTER, # 89 # TSTJ , # 90 # TSTJ , # 91 #
- TSTJ , # 92 # TSTJ , # 93 # TSTJ , # 94 # TSTJ , # 95 #
- TSTJ , # 96 # TSTJ , # 97 # TSTJ , # 98 # TSTJ , # 99 #
- ERRTER, #100 # ERRTER, #101 # TSTJ , #102 # ERRTER, #103 #
- ERRTER, #104 # ERRTER, #105 # ERRTER, #106 # ERRTER, #107 #
- ERRTER, #108 # ERRTER, #109 # ERRTER, #110 # EOF, #111 #
- TSTJ, #112 # PAD, #113 # PAD, #114 # PAD, #115 #
- PAD, #116 # PAD, #117 # PAD, #118 # PAD, #119 #
- PAD, #120 # PAD, #121 # PAD, #122 # PAD, #123 #
- PAD, #124 # PAD, #125 # PAD, #126 # PAD, #127 #
- PAD, #128 # PAD, #129 # PAD, #130 # PAD, #131 #
- PAD, #132 # PAD, #133 # PAD, #134 # PAD, #135 #
- PAD, #136 # PAD, #137 # PAD, #138 # PAD, #139 #
- PAD, #140 # PAD, #141 # PAD, #142 # PAD, #143 #
- PAD, #144 # TSTJ, #145 # TSTJ, #146 # TSTJ, #147 #
- TSTJ; #148 #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- I = 1;
- FOR K=1 WHILE I LS LINREC$WC-2
- DO
- BEGIN
- TER$FIL[0] = " "; # CLEAR TRM LINE 1 #
- TER$FIL2[0] = " "; # CLEAR TRM LINE 2 #
- TER$PAD = " ";
- FIR$SEMI = TRUE; # SET FLAGF TO TRUE #
- PAD$INDX = 0; # RESET PRINTABLE PAD CHAR INDEX #
- IF TESTIP[I+1] EQ 6
- THEN # USER DEFINED TIP #
- BEGIN
- TER$STIP[0] = "USER";
- END
- ELSE
- BEGIN # REGULAR TIPTYPE #
- IF TESTIP[I+1] EQ 1
- THEN
- TER$STIP[0] = STIP1[TETP[I+1]]; # SET STIP IN TRM OUTPT LIN#
- ELSE
- BEGIN
- IF TESTIP[I+1] EQ 2
- THEN
- TER$STIP[0] = STIP2[TETP[I+1]]; # SET STIP IN TRM LINE #
- ELSE
- BEGIN
- IF TESTIP[I+1] EQ 3
- THEN
- BEGIN
- TER$STIP[0] = "XAA"; # SET XAA STIP #
- END
- END
- END
- END
- IF TETC[I+1] LQ MAXTC
- THEN # CK IF VALID TC #
- TER$TC[0] = TC[TETC[I+1]]; # SET TERMINAL CLASS IN TRM LINE #
- IF TECD[I+1] LQ MAXCSET
- THEN # CK IF VALID CSET #
- TER$CSET[0] = CSET[TECD[I+1]]; # SET CSET IN TRM OUTPUT LINE #
- IF TETS[I+1] LQ MAXTSPEED
- THEN
- TER$TSP[0] = TSPEED[TETS[I+1]]; # SET TSPEED IN TERMINAL LINE#
- IF (TETP[I+1] EQ HASP$TIP OR # HASP OR BCE TIP #
- TETP[I+1] EQ BCE$TIP) AND
- TEA1[I+1] NQ 0
- THEN
- BEGIN
- TEMP2 = XCDD(TEA1[I+1]);
- TER$CO[0] = C<7,3>TEMP2; # SET CO IN TRM OUTPUT LINE #
- END
- ELSE IF TETP[I+1] EQ MD4$TIP OR
- (TETP[I+1] GQ TT$12 AND TETP[I+1] LQ TT$3270)
- THEN
- BEGIN
- TEMP2 = XCHD(TEA1[I+1]);
- TER$CA[0] = C<8,2>TEMP2; # SET CA IN TRM OUTPUT LINE #
- END
- WORD = I + 4; # REFERENCE 1ST WORD OF FNFV ENTRIES #
- BIT = 24;
- FOR J=1 STEP 1 UNTIL DEFNFV[I+3]
- DO # GET NEXT NPU WORD - 16 BITS AND STORE IN FNFV TABLE#
- BEGIN
- IF BIT+16 LQ 60
- THEN
- BEGIN
- FNFV$ENT[0] = B<BIT,16>LRWORD[WORD];
- IF BIT + 16 LS 60
- THEN
- BIT = BIT + 16;
- ELSE
- BEGIN
- BIT = 0;
- WORD = WORD + 1;
- END
- END
- ELSE
- BEGIN # BIT + 16 GR 60 #
- B<0,60-BIT>FNFV$ENT[0] = B<BIT,60-BIT>LRWORD[WORD];
- B<60-BIT,BIT+16-60>FNFV$ENT[0] =
- B<0,BIT+16-60>LRWORD[WORD+1];
- WORD = WORD + 1;
- BIT = BIT +16 - 60;
- END
- IF FN$ENT[0] GR MAX$FN
- THEN # FN VALUE TO LARGE #
- ERRMSG(ERMSG10,"TRMLST");
- ELSE
- GOTO TER$FN[FN$ENT[0]];
- ERRTER:
- ERRMSG(ERMSG10,"TRMLST"); # BAD FN VALUE #
- TSTJ:
- TEST J; # FN VALUE NOT FOR TERMINAL STATEMENT #
- RIC:
- TER$RIC[0] = YESNOENT[FV$ENT[0]]; # SET RIC IN TRM LINE #
- TEST J;
- BCF: # SET BCF FLAG IN TERMINAL OUTPUT LINE #
- TER$BCF[0] = YESNOENT[FV$ENT[0]];
- TEST J;
- MREC: # SET MREC VALUE IN TERMINAL OUTPUT LINE #
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1);
- TER$MREC[0] = C<9,1>TEMP2;
- TEST J;
- W: # SET W VALUE IN TERMINAL OUTPUT LINE #
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1);
- TER$W[0] = C<9,1>TEMP2;
- TEST J;
- CTYP: # SET CTYPE FLAG IN TERMINAL OUTPUT LINE #
- TER$CTYP[0] = CTYP$VAL[FV$ENT[0]];
- TEST J;
- NCIR: # SET NCIR VALUE IN TERMINAL OUTPUT LINE #
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1);
- TER$NCIR[0] = C<7,3>TEMP2;
- TEST J;
- NEN: # SET NEN VLAUE IN TERMINAL OUTPUT LINE #
- TEMP1 = FV$ENT[0];
- TEMP2 = XCDD(TEMP1);
- TER$NEN[0] = C<7,3>TEMP2;
- TEST J;
- EOF: TER$EOF[0] = YESNOENT[FV$ENT[0]]; # PUT EOF FLAG ON LIST#
- TEST J;
- PAD:
- CTEMP = XCHD(FV$ENT[0]);
- C<PAD$INDX,2>TER$PAD = C<8,2>CTEMP;
- IF FIR$SEMI # IF FIRST HALF FOR A SEMIOCTET#
- THEN
- BEGIN
- PAD$INDX = PAD$INDX + 2;
- FIR$SEMI = FALSE;
- END
- ELSE
- BEGIN # SECOND HALF OF A SEMIOCTET #
- PAD$INDX = PAD$INDX + 3;
- FIR$SEMI = TRUE;
- END
- TEST J;
- COLECT: # SET COLLECT VALUE IN TRMNL OUTPUT LINE #
- TER$CLCT[0] = YESNOENT[FV$ENT[0]];
- TEST J;
- END # J LOOP #
- PGLST(LN4);
- WRITEH(OUTFET,TER$HDR1,11);# WRITE TERMINAL HEADER #
- WRITEH(OUTFET,TER$HDR2,3);
- WRITEH(OUTFET,TER$LN1,11); # WRITE TERMINAL OUTPUT LINE #
- WRITEH(OUTFET,TER$LN2,13);
- TER$FIL[0] = " ";
- TER$FIL2[0] = " ";
- INDX = I; # SET INDX TO 1ST WORD OF TER ENTRY #
- DEVLST(INDX); # PROCESS DEVICE STATEMENTS #
- I = I + TEWC[I];
- END # I LOOP #
- RETURN;
- END # TRMLST PROC #
- CONTROL EJECT;
- PROC USERLST;
- BEGIN
- *IF,DEF,IMS
- #
- ** USERLST - USER STATEMENT LISTER
- *
- * S.M. ILMBERGER 81/10/29
- *
- * LISTS INFO FROM USER$TABLE
- *
- * PROC USERLST
- *
- * ENTRY NONE
- *
- * EXIT NONE
- *
- * MESSAGES
- * ABRT FROM USERLST - READ ERROR
- *
- * METHOD
- *
- * IF AT LEAST ONE ENTRY EXISTST ISN USER$TABLE
- * WRITE USER HEADER TO OUTPUT FILE
- * FOR EACH ENTRY IN USER$TABLE
- * FORMAT USER LINE FROM INFO IN USER$TABLE
- * WRITE USER LINE TO OUTPUT FILE
- * IF NO ENTRIES IN USER$TABLE
- * READ -EOR-
- * END
- *
- #
- *ENDIF
- ITEM I; # LOOP COUNTER #
- ARRAY MDP [0:4] S(1);
- ITEM M$D$P C(00,00,03) = [" ","MAN","DEF","PRI"];
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- IF UTWC[ENTRY1] GR 1
- THEN # AT LEAST ONE ENTRY EXISTS IN USER$TAB #
- BEGIN
- PGLST(LN2); # COUNT LINES TO BE PRINTED #
- WRITEH(OUTFET,USER$HDR,9);
- # WRITE USER HEADER #
- READW(LCFFET,USER$TABLE,UTENTSZ,LCF$STAT);
- IF LCF$STAT NQ TRNS$OK # CK STATUS OF READ #
- THEN
- ERRMSG(ERMSG2,"USERLST");# PRINT READ ERROR MSG - ABORT #
- FOR I=ENTRY0 WHILE LCF$STAT EQ TRNS$OK
- DO
- BEGIN
- USER$NAM[0] = UTNAME[I]; # SET USER NAME IN USER OUTPUT LINE#
- IF UTFAM[I+1] NQ 0
- THEN # SET USER FAMILY NAME IN USER OUTPUT LINE #
- USER$FAM[0] = XSFW(UTFAM[I+1]);
- ELSE # NAME FIELD IS ZERO #
- BEGIN
- IF UTCODE[I+1] NQ 0
- THEN # IF FAM WAS ORIGINALLY SPECIFIED #
- BEGIN
- USER$FAM[0] = "0"; # PUT VALUE OF -0- FOR FAM NAME #
- END
- END
- USER$FST[0] = M$D$P[UTCODE[I+1]]; # SET USER FAM FLAG #
- IF UTUSER[I+2] NQ 0
- THEN # PUT USER NAME IN USER LINE #
- USER$USER[0] = XSFW(UTUSER[I+2]);
- USER$UST[0] = M$D$P[UTCODE[I+2]]; # SET USER FLAG IN USER LIN#
- IF UTAPPL[I+3] NQ 0
- THEN
- USER$APPL[0] = UTAPPL[I+3]; # SET APPL NAME IN USER LINE #
- USER$AST[0] = M$D$P[UTCODE[I+3]]; # SET APPL FLAG IN USER LIN#
- PGLST(LN1);
- WRITEH(OUTFET,USER$LN,9); # WRITE USER LINE TO OUTPUT FILE #
- USER$FIL[0] = " ";
- READW(LCFFET,USER$TABLE,UTENTSZ,LCF$STAT);
- END # I LOOP #
- END
- ELSE # NO ENTRIES EXIST IN USER$TABLE #
- BEGIN
- READW(LCFFET,USER$TABLE,1,LCF$STAT); # READ -EOR- #
- IF LCF$STAT NQ LOC(UTWORD[0]) # CK STATUS OF READ #
- THEN
- ERRMSG(ERMSG2,"USERLST");
- END
- RETURN;
- END # USRLST PROC #
- CONTROL EJECT;
- # #
- # CODE BEGINS HERE #
- # #
- # SET UP OUTFILE FET #
- OUTFIRST[0] = LOC(OUTWORD[0]);
- OUTIN[0] = LOC(OUTWORD[0]);
- OUTOUT[0] = LOC(OUTWORD[0]);
- OUTLIMIT[0] = LOC(OUTWORD[0]) + PRULNGTH + 1;
- # SET UP PAGE HEADER #
- LST$TYP[0] = " "; # CLEAR LISTING TYPE #
- VER$NUM[0] = C<9,3>NAMVER[0]; # SET PROGRAM VERSION #
- LEV$NUM[0] = C<2,3>NAMLV[0]; # SET PROGRAM LEVEL #
- PDATE(TEMPACKED); # GET PACKED DATE AND TIME #
- TEMPT = 0;
- B<42,18>TEMPT = B<42,18>TEMPACKED;
- TIM[0] = ETIME(TEMPT); # UNPACK TIME - STORE IN TABLE #
- TEMP1 = 0;
- C<7,3>TEMP1 = C<4,3>TEMPACKED; # SET UP FOR EDATE #
- TEMPD = EDATE(TEMP1); # UNPACK DATE #
- DAT[0] = TEMPD; # SET DATE #
- PAGE$N[0] = "0";
- IF CRERUN
- THEN # CREATION RUN #
- BEGIN
- TITLE[0] = TITLE$WORD[0];
- IF LISTFLG # IF LISTING IS NOT TO BE SUPPRESSED #
- THEN
- BEGIN
- IF LISTN
- THEN # NORMAL LISTING REQUIRED #
- SRCLST;
- IF ERRCNT GR 0
- OR WARNCNT GR 0
- THEN # ERROR LISTING IS NECESSARY #
- ERRLST;
- IF LISTD
- THEN # DEFINE LISTING REQUIRED #
- DEFLST;
- IF LISTS
- THEN # EXPANDED SOURCE LISTING REQUIRED #
- EXSLST;
- IF LISTF AND ERRCNT EQ 0
- THEN # SUMMARY LISTING REQUIRED #
- BEGIN
- IF NCFDIV
- THEN # NCF SUMMARY REQUIRED #
- NCFLST;
- IF LCFDIV
- THEN # LCF SUMMARY REQUIRED #
- LCFLST;
- END
- WRITER(OUTFET); # FLUSH CIO BUFFER FOR OUTPUT FILE #
- END
- ELSE # LISTING IS TO BE SUPPRESS (L=0) #
- BEGIN
- IF ERRCNT GR 0 # IF FATAL ERRORS EXIST #
- THEN
- BEGIN
- ERRLST; # GENERATE ERROR SUMMARY #
- WRITER(OUTFET); # FLUSH CIO BUFFER FOR OUTPUT FILE #
- END
- END
- END
- ELSE
- BEGIN # SUMMARY RUN #
- IF LISTFLG # IF LISTING IS NOT TO BE SUPPRESSED #
- THEN
- BEGIN
- IF LISTNF
- THEN # NCF SUMMARY REQUIRED #
- BEGIN
- NCFLFN[0] = NFFILE;
- NCFLST;
- END
- IF LISTLF
- THEN # LCF SUMMARY REQUIRED #
- BEGIN
- LCFLFN[0] = LFFILE;
- LCFLST;
- END
- WRITER(OUTFET); # FLUSH CIO BUFFER FOR OUTPUT FILE #
- END
- END
- RETURN;
- END
- TERM
cdc/nos2.source/nam5871/ndllist.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator