*DECK NDLCKRG
USETEXT NDLER2T
USETEXT NDLTBLT
USETEXT NDLDATT
PROC NDLCKRG(KWID,VALUE,VAL$STAT);
BEGIN
*IF,DEF,IMS
#
** NDLCKRG - CHECK RANGE FOR PARAMETER.
*
* D.K. ENDO 81/10/12
*
* THIS PROCEDURE CHECKS RANGE TABLE FOR PARAMETER AND THEN CHECKS
* IF VALUE IS WITHIN RANGE.
*
* PROC NDLCKRG(KWID,VALUE,VAL$STAT)
*
* ENTRY KWID = KEYWORD I.D.
* VALUE = VALUE ASSIGNED TO KEYWORD
*
* EXIT VAL$STAT = STATUS FLAG, SET IF VALUE IS O.K.
*
* METHOD
*
* SEARCH RANGE TABLE FOR KEYWORD I.D.
* IF FOUND
* CHECK IF VALUE IS WITHIN LEGAL LIMITS
* IF NOT WITHIN RANGE
* CONVERT NUMBER TO DISPLAY CODE.
* FLAG ERROR -- VALUE OUT OF RANGE.
*
#
*ENDIF
ITEM KWID; # KEYWORD I.D. #
ITEM VALUE; # VALUE ASSIGNED TO KEYWORD #
ITEM VAL$STAT B; # RETURN STATUS -- SET IF VALUE IS O.K. #
#
**** PROC NDLCKRG - XREF LIST BEGINS
#
XREF
BEGIN
PROC NDLEM2; # MAKES ENTRY IN ERROR-FILE-2 #
FUNC XCDD C(10); # CONVERTS INTEGER TO DECIMAL DISPLAY CODE#
FUNC XCHD C(10); # CONVERTS INTERGER TO HEX DISPLAY CODE #
END
#
****
#
ITEM CHARVAL C(10); # CHARACTER TEMPORARY FOR VALUE #
ITEM FOUND B; # KEYWORD I.D. FOUND FLAG #
ITEM I; # SCRATCH ITEM #
DEF MAXRT # 66 #;
ARRAY RANGE$TABLE [0:MAXRT] S(2);
BEGIN
ITEM RTWC U(0,51,9) = [MAXRT];
ITEM RTKWID U(0,0,9) = [, 21, # P1 #
23, # P2 #
30, # NI #
31, # PORT #
35, # AL #
37, # DFL #
38, # FRAME #
39, # RTIME #
40, # RCOUNT #
41, # NSVC #
46, # LCN #
55, # CA #
56, # CO #
58, # MREC #
59, # W #
61, # NCIR #
62, # NEN #
68, # ABL #
69, # DBZ #
70, # UBZ #
71, # DBL #
72, # UBL #
73, # XBZ #
74, # DO #
75, # STREAM #
76, # HN #
80, # P80 #
81, # P81 #
82, # P82 #
83, # P83 #
84, # P84 #
85, # P85 #
86, # P86 #
87, # P87 #
88, # P88 #
89, # P89 #
90, # AB #
92, # BS #
93, # B1 #
94, # B2 #
95, # CI #
96, # CN #
97, # CT #
98, # DLC #
100, # DLX #
103, # LI #
107, # PL #
108, # PW #
111, # XLC #
112, # XLX #
115, # ELX #
123, # EBX #
125, # MC #
126, # XLY #
130, # MCI #
131, # MLI #
146, # MXCOPYS #
154, # SNODE #
155, # DNODE #
156, # ACCLEV #
157, # DHOST #
158, # DPLR #
159, # DPLS #
162, # WR #
163, # WS #
200, # SHOST #
];
ITEM RTTYPE U(0,9,3) = [, 2, # P1 #
2, # P2 #
1, # NI #
2, # PORT #
1, # AL #
1, # DFL #
1, # FRAME #
1, # RTIME #
1, # RCOUNT #
1, # NSVC #
1, # LCN #
2, # CA #
1, # CO #
1, # MREC #
1, # W #
1, # NCIR #
1, # NEN #
1, # ABL #
1, # DBZ #
1, # UBZ #
1, # DBL #
1, # UBL #
1, # XBZ #
1, # DO #
1, # STREAM #
1, # HN #
2, # P80 #
2, # P81 #
2, # P82 #
2, # P83 #
2, # P84 #
2, # P85 #
2, # P86 #
2, # P87 #
2, # P88 #
2, # P89 #
2, # AB #
2, # BS #
2, # B1 #
2, # B2 #
2, # CI #
2, # CN #
2, # CT #
1, # DLC #
2, # DLX #
1, # LI #
1, # PL #
1, # PW #
1, # XLC #
2, # XLX #
2, # ELX #
2, # EBX #
2, # MC #
2, # XLY #
1, # MCI #
1, # MLI #
1, # MXCOPYS #
1, # SNODE #
1, # DNODE #
1, # ACCLEV #
2, # DHOST #
1, # DPLR #
1, # DPLS #
1, # WR #
1, # WS #
2, # SHOST #
];
ITEM RTMIN (0,12,18) = [, 1, # P1 #
1, # P2 #
1, # NI #
1, # PORT #
0, # AL #
16, # DFL #
1, # FRAME #
0, # RTIME #
1, # RCOUNT #
0, # NSVC #
0, # LCN #
X"70", # CA #
1, # CO #
1, # MREC #
1, # W #
1, # NCIR #
1, # NEN #
1, # ABL #
1, # DBZ #
1, # UBZ #
1, # DBL #
1, # UBL #
200, # XBZ #
1, # DO #
1, # STREAM #
1, # HN #
0, # P80 #
0, # P81 #
0, # P82 #
0, # P83 #
0, # P84 #
0, # P85 #
0, # P86 #
0, # P87 #
0, # P88 #
0, # P89 #
0, # AB #
0, # BS #
0, # B1 #
0, # B2 #
0, # CI #
0, # CN #
0, # CT #
1, # DLC #
0, # DLX #
0, # LI #
0, # PL #
0, # PW #
1, # XLC #
0, # XLX #
0, # ELX #
0, # EBX #
0, # MC #
0, # XLY #
0, # MCI #
0, # MLI #
1, # MXCOPYS #
0, # SNODE #
0, # DNODE #
0, # ACCLEV #
0, # DHOST #
16, # DPLR #
16, # DPLS #
1, # WR #
1, # WS #
0, # SHOST #
];
ITEM RTMAX (1,0,60) = [, 254, # P1 #
254, # P2 #
254, # NI #
254, # PORT #
7, # AL #
1024, # DFL #
7, # FRAME #
25500, # RTIME #
15, # RCOUNT #
255, # NSVC #
255, # LCN #
X"7F", # CA #
255, # CO #
7, # MREC #
7, # W #
255, # NCIR #
255, # NEN #
7, # ABL #
2043, # DBZ #
20, # UBZ #
7, # DBL #
31, # UBL #
2043, # XBZ #
7, # DO #
7, # STREAM #
255, # HN #
255, # P80 #
255, # P81 #
255, # P82 #
255, # P83 #
255, # P84 #
255, # P85 #
255, # P86 #
255, # P87 #
255, # P88 #
255, # P89 #
127, # AB #
127, # BS #
127, # B1 #
127, # B2 #
99, # CI #
127, # CN #
127, # CT #
4095, # DLC #
255, # DLX #
99, # LI #
255, # PL #
255, # PW #
4095, # XLC #
255, # XLX #
127, # ELX #
X"FF", # EBX #
255, # MC #
255, # XLY #
250, # MCI #
250, # MLI #
15, # MXCOPYS #
255, # SNODE #
255, # DNODE #
15, # ACCLEV #
X"FF", #DHOST #
1024, # DPLR #
1024, # DPLS #
7, # WR #
7, # WS #
X"FFFFFF", # SHOST #
];
END
SWITCH VALTYPE , # UNKNOWN #
DECIMAL , # DECIMAL #
HEXIDECIMAL ; # HEXIDEC #
CONTROL EJECT;
# #
# NDLCKRG CODE BEGINS HERE #
# #
VAL$STAT = TRUE; # SET RETURN STATUS TO O.K. #
FOUND = FALSE; # CLEAR FOUND FLAG #
FOR I=1 STEP 1 WHILE NOT FOUND AND I LQ MAXRT DO
BEGIN # SEARCH RANGE TABLE FOR KEYWORD I.D. #
IF KWID EQ RTKWID[I]
THEN # IF KEYWORD I.D. MATCHES #
BEGIN
FOUND = TRUE; # SET FOUND FLAG #
IF VALUE LS RTMIN[I] OR VALUE GR RTMAX[I]
THEN # VALUE IS OUT OF RANGE #
BEGIN
GOTO VALTYPE[RTTYPE[I]]; # CONVERT VALUE TO DISPLAY CODE #
DECIMAL:
CHARVAL = XCDD(VALUE); # CONVERT TO DISPLAY CODE #
GOTO NEXT;
HEXIDECIMAL:
CHARVAL = XCHD(VALUE); # CONVERT TO HEXIDECIMAL #
GOTO NEXT;
NEXT:
IF RTKWID[I] EQ KID"AL" # IF AL IS THE KEYWORD #
THEN
BEGIN
NDLEM2(ERR163,STLNUM[0],CHARVAL); # FLAG WARNING #
END
ELSE
BEGIN
NDLEM2(ERR100,STLNUM[0],CHARVAL);
END
VAL$STAT = FALSE; # RETURN ERROR STATUS #
END
END
END
RETURN; # **** RETURN **** #
END # NDLCKRG #
TERM