cdc:nos2.source:nam5871:dldirc1
Table of Contents
DLDIRC1
Table Of Contents
- [00006] PROC DLDIRC1(LEFTSYM, ERRCODE)
- [00047] PROC DLCKDA
- [00048] PROC DLCKTI
- [00049] PROC DLCONVH
- [00050] PROC DLCONVT
Source Code
- DLDIRC1.txt
- *DECK DLDIRC1
- USETEXT DLFPDEF
- USETEXT DIERR
- USETEXT DIRTBL
- USETEXT VDDIR
- PROC DLDIRC1(LEFTSYM, ERRCODE);# INDIVIDUAL DIRECTIVE PROCESSOR #
- *IF DEF,IMS
- #
- *1DC DLDIRC1
- *
- * 1.PROC NAME AUTHOR DATE.
- * DLDIRC1 P.C.TAM 78/11/10
- *
- * 2. FUNCTIONAL DESCRIPTION.
- * INDIVIDUAL DIRECTIVE PROCESSOR
- *
- * 3. METHOD USED.
- * MATCH INPUT AGAINST VALID DIRECTIVE LIST,
- * GET ITS MATCH AND PROCEED TO PROCESS INPUT
- *
- * 4. ENTRY PARAMETER.
- * LEFTSYM DIRECTIVE ITEM ASSEMBLED
- *
- * 5. EXIT PARAMETER.
- * ERRCODE RETURN IF ERROR ENCOUNTERED
- * DURING PROCESSING
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
- * DIERR DIRTBL DLFPDEF VDDIR
- *
- * 7. ROUTINES CALLED.
- * DLCKDA CHECK DATE FOR ERROR
- * DLCKTI CHECK TIME FOR ERROR
- * DLCONVH CONVERT HEX TO BINARY
- * DLCONVT CONVERT DECIMAL TO BINARY
- *
- * 8. DAYFILE MESSAGES.
- * NONE.
- *
- #
- *ENDIF
- #
- EXTERNAL VARIABLES
- #
- XREF
- BEGIN
- PROC DLCKDA; # CHECK DATE FOR ERROR #
- PROC DLCKTI; # CHECK CLOCK TIME FOR ERROR #
- PROC DLCONVH; # CONVERT DISPLAY HEXADECIMAL TO BINARY #
- PROC DLCONVT; # CONVERT DISPLAY DECIMAL TO BINARY #
- END
- #
- LOCAL VARIABLES
- #
- SWITCH DIRTYPE
- , L$BD, L$BT, L$CN, L$DN, L$ED, L$ET, L$LE,
- L$NM, L$PS, L$PF, L$SM, L$SN,
- L$B, L$C, L$E, L$F, L$N,
- L$P, L$R, L$T, L$U, L$X;
- ITEM
- LEFTSYM I, # INPUT ASSEMBLED DIRECTIVE ITEM #
- ERRCODE I, # OUTPUT ERROR CODE IF ANY #
- CHART I, # TEMPORARY VARIABLE #
- LENGTH I, # TEMPORARY VARIABLE. #
- MATCH B, # TEMPORARY VARIABLE #
- I I, # TEMPORARY LOOP VARIABLE #
- K I, # TEMPORARY VARIABLE #
- UNPWD I, # TEMPORARY VARIABLE #
- UNPTR I; # TEPORARY VARIABLE #
- # ******************************************************************** #
- BEGIN
- # PRESET LOCAL VARIABLES #
- ERRCODE = 0;
- MATCH = FALSE;
- # LOOP TO MATCH INPUT WITH VALID DIRECTIVES #
- FOR I = 1 STEP 1 WHILE I LQ DIRNO AND NOT MATCH
- DO
- BEGIN # LOOP TO FIND A MATCH #
- K = VDLEN[I]; # LENGTH OF DIRECTIVE KEYWORD #
- IF C<0, K>LEFTSYM EQ C<0, K>VDENTR[I]
- THEN
- BEGIN
- MATCH = TRUE;
- K = I;
- END
- END
- IF NOT MATCH
- THEN
- BEGIN # ILLEGAL DIRECTIVE #
- ERRCODE = D$ERR3;
- END
- ELSE
- BEGIN # MATCH FOUND #
- # GET VALUE OF DIRECTIVE EXPRESSION IF ANY #
- I = VDLEN[K]; # LENGTH OF DIRECTIVE #
- UNPWD = 0;
- UNPTR = 10 - I;
- C<0, UNPTR>UNPWD = C<I, UNPTR>LEFTSYM;
- # SWITCH TO PROCESS DIFFERENT DIRECTIVES #
- GOTO DIRTYPE[K];
- L$BD: # BD= DIRECTIVE #
- DLCKDA(UNPWD, K); # CHECK DATE STRING #
- IF K EQ 0
- THEN
- BEGIN # SET SELECTION VALUE #
- DIRVALU[ID$BD] = LEFTSYM;
- DIRID[ID$BD] = ID$BD;
- END
- ELSE # ERROR IN BD= DIRECTIVE #
- ERRCODE = D$BDER;
- GOTO ENDP;
- L$BT: # BT= DIRECTIVE #
- DLCKTI(UNPWD, K); # CHECK TIME FOR ERROR #
- IF K EQ 0
- THEN
- BEGIN # SET SELECTION VALUE #
- DIRVALU[ID$BT] = LEFTSYM;
- DIRID[ID$BT] = ID$BT;
- END
- ELSE # ERROR IN BT= DIRECTIVE #
- ERRCODE = D$BTER;
- GOTO ENDP;
- L$CN: # CN= DIRECTIVE #
- DLCONVT(UNPWD, K, MATCH);# CONVERT DECIMAL DC TO BIN #
- IF MATCH AND # NUMERIC FIELD #
- MINCN LQ K AND K LQ MAXCN AND# CN WITH RANGE #
- C<I, 1> LEFTSYM NQ 0# CONNECTION NUMBER PRESENTS #
- THEN
- BEGIN
- DIRVALU[ID$CN] = K; # SET CONNECTION NUMBER SELECTED #
- DIRID[ID$CN] = ID$CN; # SET ID FIELD #
- END
- ELSE # ERROR IN CN= DIRECTIVE #
- BEGIN
- ERRCODE = D$CNER;
- END
- GOTO ENDP;
- L$DN: # DN= DIRECTIVE #
- DLCONVT(UNPWD, K, MATCH);# CONVERT DECIMAL DC TO BINARY #
- IF MATCH AND # FIELD NUMERIC #
- C<I, 1> LEFTSYM NQ 0# DESTINATION NUMBER PRESENT #
- THEN
- BEGIN # SET DIRECTIVE VALUE #
- DIRVALU[ID$DN] = K;
- DIRID[ID$DN] = ID$DN;
- END
- ELSE # ERROR IN DN= DIRECTIVE #
- ERRCODE = D$DNER; # ERROR IN DN= DIRECTIVE #
- GOTO ENDP;
- L$ED: # ED= DIRECTIVE #
- DLCKDA(UNPWD, K); # CHECK DATE STRING #
- IF K EQ 0
- THEN
- BEGIN # SET SELECTION VALUE #
- DIRVALU[ID$ED] = LEFTSYM;
- DIRID[ID$ED] = ID$ED;
- END
- ELSE # ERROR IN ED= DIRECTIVE #
- ERRCODE = D$EDER;
- GOTO ENDP;
- L$ET: # ET= DIRECTIVE #
- DLCKTI(UNPWD, K); # CHECK TIME FOR ERROR #
- IF K EQ 0
- THEN
- BEGIN # SET SELECTION VALUE #
- DIRVALU[ID$ET] = LEFTSYM;
- DIRID[ID$ET] = ID$ET;
- END
- ELSE # ERROR IN ET= DIRECTIVE #
- ERRCODE = D$ETER;
- GOTO ENDP;
- L$LE: # LE= DIRECTIVE #
- DLCONVT(UNPWD, K, MATCH);# CONVERT DECIMAL DC TO BINARY #
- IF MATCH AND # NUMERIC VALUE #
- C<I, 1> LEFTSYM NQ 0 AND# VALUE PRESENT #
- 1 LQ K AND K LQ TLWMAX # LENGTH WITHIN RANGE #
- THEN
- BEGIN # SET SELECTION VALUE #
- DIRVALU[ID$LE] = K;
- DIRID[ID$LE] = ID$LE;
- END
- ELSE # ERROR IN LE= DIRECTIVE #
- BEGIN
- ERRCODE = D$LEER;
- END
- GOTO ENDP;
- L$NM: # NM= DIRECTIVE #
- DLCONVT(UNPWD, K, MATCH);# CONVERT DECIMAL DC TO BINARY #
- IF MATCH AND # NUMERIC FIELD #
- C<I, 1> LEFTSYM NQ 0 AND # VALUE PRESENT #
- (0 LQ K AND K LQ 1000000) # RANGE 0 TO 1000000 #
- THEN
- BEGIN # SET SELECTION VALUE #
- DIRVALU[ID$NM] = K;
- DIRID[ID$NM] = ID$NM;
- END
- ELSE # ERROR IN NM= DIRECTIVE #
- BEGIN
- ERRCODE = D$NMER;
- END
- GOTO ENDP;
- L$PS: # PS= DIRECTIVE #
- DLCONVH(UNPWD,K,CHART,LENGTH); # CONVERT HEX DC TO BINARY. #
- IF CHART EQ 0 AND LENGTH EQ 4 # CONVERSION OK. #
- THEN
- BEGIN
- DIRVALU[ID$PS] = K;
- DIRID[ID$PS] = ID$PS;
- DIRWD0[ID$PF] = 0;
- END
- ELSE # ERROR IN PS= DIRECTIVE #
- ERRCODE = D$PSER;
- GOTO ENDP;
- L$PF: # PF= DIRECTIVE #
- DLCONVH(UNPWD,K,CHART,LENGTH); # CONVERT HEX DC TO BINARY. #
- IF CHART EQ 0 AND LENGTH EQ 2 # CONVERSION OK. #
- THEN
- BEGIN
- DIRVALU[ID$PF] = K;
- DIRID[ID$PF] = ID$PF;
- DIRWD0[ID$PS] = 0;
- END
- ELSE # ERROR IN PF= DIRECTIVE #
- ERRCODE = D$PFER;
- GOTO ENDP;
- L$SM: # SM= DIRECTIVE #
- DLCONVT(UNPWD, K, MATCH);# CONVERT DECIMAL DC TO BINARY #
- IF MATCH AND # SUPPRESS MESSAGE NUMBER NUMERIC #
- C<I, 1> LEFTSYM NQ 0 AND # VALUE PRESENT #
- (0 LQ K AND K LQ 1000000) # RANGE 0 TO 1000000 #
- THEN
- BEGIN
- DIRVALU[ID$SM] = K;
- DIRID[ID$SM] = ID$SM;
- END
- ELSE # ERROR IN SM= DIRECTIVE #
- BEGIN
- ERRCODE = D$SMER;
- END
- GOTO ENDP;
- L$SN: # SN= DIRECTIVE #
- DLCONVT(UNPWD, K, MATCH);# CONVERT DECIMAL DC TO BINARY #
- IF MATCH AND # SOURCE NUMBER NUMERIC #
- C<I,1>LEFTSYM NQ 0 # NUMBER PRESENT #
- THEN
- BEGIN # SET DIRECTIVE VALUE #
- DIRVALU[ID$SN] = K;
- DIRID[ID$SN] = ID$SN;
- END
- ELSE # ERROR IN SN= DIRECTIVE #
- ERRCODE = D$SNER;
- GOTO ENDP;
- L$B: # B DIRECTIVE #
- IF C<I,1>LEFTSYM EQ 0 # VALID B DIRECTIVE #
- THEN
- BEGIN # SET B DIRECTIVE SELECTED #
- DIRVALU[ID$B] = 1;
- DIRID[ID$B] = ID$B;
- END
- ELSE # ERROR IN B DIRECTIVE #
- ERRCODE = D$BERR;
- GOTO ENDP;
- L$C: # C DIRECTIVE #
- IF C<I,1>LEFTSYM EQ 0 # VALID C DIRECTIVE #
- THEN
- BEGIN # SET C DIRECTIVE SELECTED #
- DIRVALU[ID$C] = 1;
- DIRID[ID$C] = ID$C;
- END
- ELSE # ERROR IN C DIRECTIVE #
- ERRCODE = D$CERR;
- GOTO ENDP;
- L$E: # E DIRECTIVE #
- IF C<I,1>LEFTSYM EQ 0 # VALID E DIRECTIVE #
- THEN
- BEGIN # SET E DIRECTIVE SELECTED #
- DIRVALU[ID$E] = 1;
- DIRID[ID$E] = ID$E;
- END
- ELSE # ERROR IN E DIRECTIVE #
- ERRCODE = D$EERR;
- GOTO ENDP;
- L$F: # F DIRECTIVE #
- IF C<I,1>LEFTSYM EQ 0 # VALID F DIRECTIVE #
- THEN
- BEGIN # SET F DIRECTIVE SELECTED #
- DIRVALU[ID$F] = 1;
- DIRID[ID$F] = ID$F;
- END
- ELSE # ERROR IN F DIRECTIVE #
- ERRCODE = D$FERR;
- GOTO ENDP;
- L$N: # N DIRECTIVE #
- IF C<I>LEFTSYM EQ 0 # VALID N DIRECTIVE #
- THEN
- BEGIN # SET N DIRECTIVE SELECTED #
- DIRVALU[ID$N] = 1;
- DIRID[ID$N] = ID$N;
- END
- ELSE
- ERRCODE = D$NERR; # ERROR IN N DIRECTIVE #
- GOTO ENDP;
- L$P: # P DIRECTIVE #
- IF C<I,1>LEFTSYM EQ 0 # VALID P DIRECTIVE #
- THEN
- BEGIN # SET P DIRECTIVE SELECTED #
- DIRVALU[ID$P] = 1;
- DIRID[ID$P] = ID$P;
- END
- ELSE # ERROR IN P DIRECTIVE #
- ERRCODE = D$PERR;
- GOTO ENDP;
- L$R: # R DIRECTIVE #
- IF C<I,1>LEFTSYM EQ 0 # VALID R DIRECTIVE #
- THEN
- BEGIN # SET R DIRECTIVE SELECTED #
- DIRVALU[ID$R] = 1;
- DIRID[ID$R] = ID$R;
- END
- ELSE
- ERRCODE = D$RERR;
- GOTO ENDP;
- L$T: # T DIRECTIVE #
- IF C<I,1>LEFTSYM EQ 0 # VALID T DIRECTIVE #
- THEN
- BEGIN # SET T DIRECTIVE SELECTED #
- DIRVALU[ID$T] = 1;
- DIRID[ID$T] = ID$T;
- END
- ELSE # ERROR IN E DIRECTIVE #
- ERRCODE = D$TERR;
- GOTO ENDP;
- L$U: # U DIRECTIVE #
- IF C<I,1>LEFTSYM EQ 0 # VALID U DIRECTIVE #
- THEN
- BEGIN # SET U DIRECTIVE SELECTED #
- DIRVALU[ID$U] = 1;
- DIRID[ID$U] = ID$U;
- END
- ELSE # ERROR IN U DIRECTIVE #
- ERRCODE = D$UERR;
- GOTO ENDP;
- L$X: # X DIRECTIVE #
- IF C<I,1>LEFTSYM EQ 0 # VALID X DIRECTIVE #
- THEN
- BEGIN # SET X DIRECTIVE SELECTED #
- DIRVALU[ID$X] = 1;
- DIRID[ID$X] = ID$X;
- END
- ELSE # ERROR IN R DIRECTIVE #
- ERRCODE = D$XERR;
- ENDP:
- END
- END
- TERM
cdc/nos2.source/nam5871/dldirc1.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator