Trailing-Edge
-
PDP-10 Archives
-
BB-H348C-RM_1982
-
swskit-v21/listings/tkb-vnp/rtxt.bpt
There are no other files named rtxt.bpt in the archive.
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1 !<SAUTER.TKB20>RTXT.BLI.72, 19-Dec-78 07:38:06, Edit by SROBINSON
2 !<SAUTER.TKB20>RTXT.BLI.68, 3-Nov-78 15:07:40, Edit by SROBINSON
3 !<SAUTER.TKB20>RTXT.BLI.67, 10-Oct-78 13:37:02, Edit by SROBINSON
4 MODULE RTXT ( !READ TEXT FILES
5 IDENT = 'X0.2-1'
6 ) =
7 BEGIN
8 !
9 !
10 !
11 ! COPYRIGHT (C) 1978 BY
12 ! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
13 !
14 !
15 ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
16 ! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
17 ! INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
18 ! COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
19 ! OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
20 ! TRANSFERRED.
21 !
22 !
23 ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
24 ! AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
25 ! CORPORATION.
26 !
27 ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
28 ! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
29 !
30
31 !++
32 ! FACILITY: VNP-20
33 !
34 ! ABSTRACT:
35 !
36 !
37 ! THIS MODULE READS THE TEXT FILES, CETAB.MAC AND THE .DAT FILES,
38 ! STORING THE INFORMATION FOR THE REST OF VNP20 TO PROCESS.
39 !
40 !
41 ! ENVIRONMENT: TOPS-20 USER MODE
42 !
43 ! AUTHOR: J. SAUTER, CREATION DATE: 05-JUN-78
44 !
45 ! MODIFIED BY:
46 !
47 ! Scott G. Robinson, 6-OCT-78 : VERSION X0.1-2A
48 ! - Add support for passwords
49 !
50 ! Scott G. Robinson, 10-OCT-78 : VERSION X0.2
51 ! - TOPS-20 Release 4 modifications
52 ! Make STA$DF processor really do it correctly
53 ! Make UNT$DF processor account for itself
54 !
55 ! Scott G. Robinson, 19-DEC-78 : VERSION X0.2-1
56 ! - Add support for TSK$DF
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
57 !
58 ! , : VERSION
59 ! 01 -
60 !--
61
62 !<BLF/PAGE>
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
63 !
64 ! TABLE OF CONTENTS:
65 !
66
67 FORWARD ROUTINE
68 RCET : NOVALUE, !READ CETAB.MAC
69 CLASS, !CLASSIFY A CHARACTER
70 SCAN : NOVALUE, !SCAN NEXT ATOM
71 R_BUF : NOVALUE, !READ BUF$DF LINE
72 R_PDV : NOVALUE, !READ PDV$DF LINE
73 R_SLT : NOVALUE, !READ SLT$DF LINE
74 R_STA : NOVALUE, !READ STA$DF LINE
75 R_LLC : NOVALUE, !READ LLC$DF LINE
76 R_DLC : NOVALUE, !READ DLC$DF LINE
77 R_DDM : NOVALUE, !READ DDM$DF LINE
78 R_CNT : NOVALUE, !READ CNT$DF LINE
79 R_UNT : NOVALUE, !READ UNT$DF LINE
80 R_NOD : NOVALUE, !READ NOD$DF LINE
81 R_PSW : NOVALUE, !READ PSW$DF LINE
82 R_TSK : NOVALUE, !READ TSK$DF LINE
83 R_PAR : NOVALUE, !READ PAR$DF LINE
84 R_END : NOVALUE; !READ END$DF LINE
85
86 !
87 ! INCLUDE FILES:
88 !
89
90 LIBRARY 'VNP-LIB.L36';
91
92 !REQUIRE 'BLOCKH.REQ'; !PREPARE TO DEFINE STORAGE BLOCKS
93 !REQUIRE 'FILE.REQ'; !DEFINE FILE BLOCK
94 !REQUIRE 'FILSW.REQ'; !DEFINE FILE SWITCHES
95 !REQUIRE 'VNPVAL.REQ'; !VALUES BLOCK
96 !REQUIRE 'LLC.REQ'; !DEFINE LLC BLOCK
97 !REQUIRE 'DLC.REQ'; !DEFINE DLC BLOCK
98 !REQUIRE 'DDM.REQ'; !DEFINE DDM BLOCK
99 !REQUIRE 'BLOCKT.REQ'; !END OF DEFINING STORAGE BLOCKS
100 !
101 ! MACROS:
102 !
103 ! NONE
104 !
105 ! EQUATED SYMBOLS:
106 !
107
108 LITERAL
109 DEBUG = 0;
110
111 !
112 ! OFFSETS INTO 'RESULT', THE ARRAY RETURNED BY SCAN.
113 !
114
115 LITERAL
116 RESULT_TYPE = 0, !TYPE FIELD
117 RESULT_VALUE = 1; !VALUE FIELD
118
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
119 !
120 ! VALUES OF THE TYPE FIELD
121 !
122
123 LITERAL
124 RT_NAME = 1, !VALUE IS TEXT OF NAME
125 RT_NUMBER = 2, !VALUE IS NUMBER (UNSIGNED)
126 RT_SPECIAL = 3; !VALUE IS SPECIAL CHAR (-1 IS EOL)
127
128 !
129 !
130 ! OWN STORAGE:
131 !
132 ! NONE
133 !
134 ! EXTERNAL REFERENCES:
135 !
136
137 EXTERNAL ROUTINE
138 OPEN, !OPEN A FILE
139 CLOSE : NOVALUE, !CLOSE A FILE
140 INPUT, !READ FROM A FILE
141 OUTPUT : NOVALUE, !OUTPUT TO A FILE
142 BLD_CHAIN, !ADD AN ITEM TO A CHAIN
143 GETBLK, !GET A BLOCK OF STORAGE
144 ERROR : NOVALUE, !SIGNAL PROGRAMMING ERROR
145 ERRMSG : NOVALUE, !ERROR MESSAGE
146 PCRLF : NOVALUE, !PRINT CRLF
147 OUTNUM : NOVALUE, !PRINT NUMBER
148 OUTSTR : NOVALUE; !PRINT A STRING
149
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
150 GLOBAL ROUTINE RCET (FILE_CHAN, FILE_PTR, VALUES) : NOVALUE = !READ CETAB.MAC
151
152 !++
153 ! FUNCTIONAL DESCRIPTION:
154 !
155 ! READ CETAB.MAC FOR VNP20, AND STORE ITS VALUES.
156 !
157 ! FORMAL PARAMETERS:
158 !
159 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ CETAB.MAC
160 ! FILE_PTR - FILE BLOCK WITH CETAB.MAC FILLED IN.
161 ! VALUES - BLOCK IN WHICH TO STORE RESULTS
162 !
163 ! IMPLICIT INPUTS:
164 !
165 ! NONE
166 !
167 ! IMPLICIT OUTPUTS:
168 !
169 ! FILLS THE 'VALUES' BLOCK WITH STUFF READ FROM CETAB.MAC
170 !
171 ! ROUTINE VALUE:
172 !
173 ! NONE
174 !
175 ! SIDE EFFECTS
176 !
177 ! READS CETAB.MAC
178 !
179 !--
180
181 BEGIN
182
183 BIND
184 ROUTINE_NAME = UPLIT (%ASCIZ'RCET');
185
186 MAP
187 FILE_PTR : REF FILE_BLOCK,
188 VALUES : REF VNPVAL_BLOCK;
189
190 LOCAL
191 LOOK_DONE,
192 NAME,
193 RESULT : VECTOR [20],
194 SAVE_CHAR,
195 SUBR,
196 VAL_POINTER;
197
198 IF (OPEN (.FILE_CHAN, FILE_PTR [FILE_NAME], 1, 0, UPLIT (%ASCIZ'TXT')) NEQ 0)
199 THEN
200 BEGIN !SUCCESSFUL INPUT OPEN
201
202 IF (DEBUG GEQ 1)
203 THEN
204 BEGIN !DEBUG
205 PCRLF (1);
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
206 OUTSTR (1, UPLIT (%ASCIZ'----- OPEN CETAB.MAC'));
207 END; !DEBUG
208
209 !
210 ! INITIALIZE THE CHAIN TO THE LLCS
211 !
212 VALUES [LLC_CHAIN] = 0;
213 !
214 ! LOOK FOR BUF$DF MACRO
215 !
216 SAVE_CHAR = -1;
217 LOOK_DONE = 0;
218
219 WHILE (.LOOK_DONE EQL 0) DO
220 BEGIN
221 SCAN (.FILE_CHAN, .FILE_PTR, SAVE_CHAR, RESULT);
222
223 IF ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] EQL %C';')) THEN
224 !SKIP A COMMENT
225
226 DO
227 SCAN (.FILE_CHAN, .FILE_PTR, SAVE_CHAR, RESULT)
228 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
229
230 IF ((.RESULT [RESULT_TYPE] EQL RT_NAME) AND !
231 (CH$EQL (7, CH$PTR (RESULT [RESULT_VALUE]), 7, CH$PTR (UPLIT (%ASCIZ'BUF$DF')))))
232 THEN
233 LOOK_DONE = 1
234 ELSE !NOT BUF$DF, SKIP TO NEXT LINE
235
236 DO
237 SCAN (.FILE_CHAN, .FILE_PTR, SAVE_CHAR, RESULT)
238 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
239
240 IF ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] EQL -2))
241 THEN
242 LOOK_DONE = -1;
243
244 END;
245
246 IF (.LOOK_DONE LEQ 0)
247 THEN
248 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0)
249 ELSE
250 BEGIN
251 R_BUF (.FILE_CHAN, .FILE_PTR, SAVE_CHAR, .VALUES);
252 !
253 ! EACH LINE OF CETAB.MAC, UP TO THE END$DF LINE, IS TO BE
254 ! PROCESSED.
255 !
256 LOOK_DONE = 0;
257
258 WHILE (.LOOK_DONE EQL 0) DO
259 BEGIN
260 SCAN (.FILE_CHAN, .FILE_PTR, SAVE_CHAR, RESULT);
261
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
262 IF ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] EQL %C';')) THEN
263 !SKIP A COMMENT LINE
264
265 DO
266 SCAN (.FILE_CHAN, .FILE_PTR, SAVE_CHAR, RESULT)
267 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
268
269 !
270 ! THE RESULT VECTOR CONTAINS THE MACRO NAME
271 !
272
273 IF (.RESULT [RESULT_TYPE] NEQ RT_NAME)
274 THEN
275 BEGIN
276 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
277 LOOK_DONE = -1;
278 END
279 ELSE
280 BEGIN
281 !
282 ! COMPUTE A NUMBER BASED ON THE NAME, SO WE CAN DISPATCH ON IT.
283 !
284 NAME = CH$RCHAR (CH$PTR (RESULT [RESULT_VALUE], 0)) + !
285 (256*CH$RCHAR (CH$PTR (RESULT [RESULT_VALUE], 1))) + !
286 (65536*CH$RCHAR (CH$PTR (RESULT [RESULT_VALUE], 2)));
287
288 IF (CH$NEQ (4, CH$PTR (RESULT [RESULT_VALUE], 3), !
289 4, CH$PTR (UPLIT (%ASCIZ'$DF'))))
290 THEN
291 BEGIN
292 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
293 LOOK_DONE = -1;
294 END
295 ELSE
296 BEGIN
297 !
298 ! DISPATCH ON THE NAME
299 !
300 SUBR = (SELECTONE .NAME OF
301 SET
302 [%C'C' + (256*%C'N') + (65536*%C'T')] : R_CNT;
303 [%C'U' + (256*%C'N') + (65536*%C'T')] : R_UNT;
304 [%C'P' + (256*%C'D') + (65536*%C'V')] : R_PDV;
305 [%C'S' + (256*%C'L') + (65536*%C'T')] : R_SLT;
306 [%C'S' + (256*%C'T') + (65536*%C'A')] : R_STA;
307 [%C'L' + (256*%C'L') + (65536*%C'C')] : R_LLC;
308 [%C'D' + (256*%C'L') + (65536*%C'C')] : R_DLC;
309 [%C'D' + (256*%C'D') + (65536*%C'M')] : R_DDM;
310 [%C'N' + (256*%C'O') + (65536*%C'D')] : R_NOD;
311 [%C'P' + (256*%C'S') + (65536*%C'W')] : R_PSW;
312 [%C'T' + (256*%C'S') + (65536*%C'K')] : R_TSK;
313 [%C'P' + (256*%C'A') + (65536*%C'R')] : R_PAR;
314 [%C'E' + (256*%C'N') + (65536*%C'D')] : R_END;
315 [OTHERWISE] : 0;
316 TES);
317
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
318 IF (.SUBR EQL 0)
319 THEN
320 BEGIN
321 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
322 LOOK_DONE = -1;
323 END
324 ELSE
325 BEGIN
326 (.SUBR) (.FILE_CHAN, .FILE_PTR, SAVE_CHAR, .VALUES);
327
328 IF (.SUBR EQL R_END) THEN LOOK_DONE = 1;
329
330 END;
331
332 END;
333
334 END;
335
336 END;
337
338 END;
339
340 CLOSE (.FILE_CHAN);
341
342 IF (DEBUG GEQ 1)
343 THEN
344 BEGIN !DEBUG
345 PCRLF (1);
346 OUTSTR (1, UPLIT (%ASCIZ'----- CLOSE CETAB.MAC'));
347 END; !DEBUG
348
349 END;
350
351 END; !OF RCET
352
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
353 ROUTINE CLASS (CHAR) = !CLASSIFY A CHARACTER
354
355 !++
356 ! FUNCTIONAL DESCRIPTION:
357 !
358 ! CLASSIFY A CHARACTER AS TO ALPHABETIC, NUMERIC, SPECIAL OR CONTROL/DEL.
359 !
360 ! FORMAL PARAMETERS:
361 !
362 ! CHAR - THE CHARACTER TO CLASSIFY
363 !
364 ! IMPLICIT INPUTS:
365 !
366 ! NONE
367 !
368 ! IMPLICIT OUTPUTS:
369 !
370 ! NONE
371 !
372 ! ROUTINE VALUE:
373 !
374 ! 1 = ALPHABETIC, 2 = NUMERIC, 3 = SPECIAL, 4 = CONTROL OR DEL
375 !
376 ! SIDE EFFECTS
377 !
378 ! NONE
379 !
380 !--
381
382 BEGIN
383
384 BIND
385 ROUTINE_NAME = UPLIT (%ASCIZ'CLASS');
386
387 SELECTONE .CHAR OF
388 SET
389
390 [%C'A' TO %C'Z', %C'a' TO %C'z', %C'$', %C'.'] :
391 1; !ALPHABETIC (INCLUDING $ AND .)
392
393 [%C'0' TO %C'9'] :
394 2; !NUMERIC
395
396 [%C'!', !
397 %C'"', !
398 %C'#', !
399 %C'%', !
400 %C'&', !
401 %O'47', !SINGLE QUOTE
402 %C'(', !
403 %C')', !
404 %C'*', !
405 %C'+', !
406 %C',', !
407 %C'-', !
408 %C'/', !
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
409 %C':', !
410 %C';', !
411 %C'<', !
412 %C'=', !
413 %C'>', !
414 %C'?', !
415 %C'@', !
416 %C'[', !
417 %C'\', !
418 %C']', !
419 %C'^', !
420 %C'_', !
421 %C'`', !
422 %C'{', !
423 %C'|', !
424 %C'}', !
425 %C'~'] :
426 3; !SPECIAL (BUT NEITHER $ NOR .)
427
428 [OTHERWISE] :
429 4; !CONTROL AND DEL
430 TES
431
432 END;
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
433 ROUTINE SCAN (FILE_CHAN, FILE_PTR, SAVE_CHAR, RESULT) : NOVALUE = !SCAN NEXT ATOM
434
435 !++
436 ! FUNCTIONAL DESCRIPTION:
437 !
438 ! SCAN NEXT ATOM (NAME, NUMBER, SPECIAL CHAR) FROM THE FILE
439 !
440 ! FORMAL PARAMETERS:
441 !
442 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
443 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
444 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL.
445 ! SET TO -1 ON FIRST CALL.
446 ! RESULT - VECTOR INTO WHICH TO STORE RESULTS
447 !
448 ! IMPLICIT INPUTS:
449 !
450 ! NONE
451 !
452 ! IMPLICIT OUTPUTS:
453 !
454 ! FILLS THE 'RESULT' ARRAY WITH THE NEXT ATOM SCANNED
455 !
456 ! ROUTINE VALUE:
457 !
458 ! NONE
459 !
460 ! SIDE EFFECTS
461 !
462 ! READS THE SPECIFIED FILE
463 !
464 !--
465
466 BEGIN
467
468 BIND
469 ROUTINE_NAME = UPLIT (%ASCIZ'SCAN-TEXT-FILE');
470
471 MAP
472 FILE_PTR : REF FILE_BLOCK,
473 RESULT : REF VECTOR;
474
475 LOCAL
476 CHAR,
477 SCAN_DONE,
478 DECIMAL_NUM,
479 OCTAL_NUM,
480 SCAN_POINTER;
481
482 !
483 ! CLASSIFY ATOM BASED ON FIRST CHARACTER. LEADING BLANKS,
484 ! TABS, CARRIAGE RETURNS AND FORM FEEDS ARE SKIPPED.
485 !
486 CHAR = ..SAVE_CHAR;
487
488 IF (.CHAR EQL -2)
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
489 THEN
490 ERROR (UPLIT (%ASCIZ'EOF IGNORED IN SCAN'))
491 ELSE
492 BEGIN
493
494 IF (.CHAR LSS 0) THEN CHAR = INPUT (.FILE_CHAN);
495
496 WHILE ((.CHAR EQL %O'40') OR (.CHAR EQL %O'11') OR (.CHAR EQL %O'15') OR (.CHAR EQL %O'14')) DO
497 CHAR = INPUT (.FILE_CHAN);
498
499 IF (.CHAR LSS 0)
500 THEN
501 BEGIN !END OF FILE
502 RESULT [RESULT_TYPE] = 3;
503 RESULT [RESULT_VALUE] = -2;
504 .SAVE_CHAR = -2;
505 END
506 ELSE
507 BEGIN !NOT END OF FILE
508
509 CASE CLASS (.CHAR) FROM 1 TO 4 OF
510 SET
511
512 [1] : !ALPHABETIC (INCLUDES $ AND .)
513 BEGIN
514 RESULT [RESULT_TYPE] = 1;
515 SCAN_POINTER = CH$PTR (RESULT [RESULT_VALUE], -1);
516
517 DO
518 BEGIN
519 CH$A_WCHAR (.CHAR, SCAN_POINTER);
520 CHAR = INPUT (.FILE_CHAN);
521 END
522 UNTIL (CLASS (.CHAR) GTR 2);
523
524 CH$A_WCHAR (0, SCAN_POINTER); !TERMINATE WITH NULL
525 .SAVE_CHAR = .CHAR;
526 END;
527
528 [2] : !NUMERIC
529 BEGIN
530 RESULT [RESULT_TYPE] = 2;
531 OCTAL_NUM = 0;
532 DECIMAL_NUM = 0;
533
534 DO
535 BEGIN
536 OCTAL_NUM = (.OCTAL_NUM*8) + (.CHAR - %C'0');
537 DECIMAL_NUM = (.DECIMAL_NUM*10) + (.CHAR - %C'0');
538 CHAR = INPUT (.FILE_CHAN);
539 END
540 UNTIL (CLASS (.CHAR) NEQ 2);
541
542 IF (.CHAR EQL %C'.')
543 THEN
544 BEGIN !NUMBER SPECIFIED AS DECIMAL
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
545 RESULT [RESULT_VALUE] = .DECIMAL_NUM;
546 .SAVE_CHAR = -1;
547 END
548 ELSE
549 BEGIN
550 RESULT [RESULT_VALUE] = .OCTAL_NUM;
551 .SAVE_CHAR = .CHAR;
552 END;
553
554 END;
555
556 [3] : !SPECIAL CHARACTER
557 BEGIN
558 RESULT [RESULT_TYPE] = 3;
559 RESULT [RESULT_VALUE] = .CHAR;
560 .SAVE_CHAR = -1;
561 END;
562
563 [4] : !CONTROL CHARACTER
564 BEGIN
565 RESULT [RESULT_TYPE] = 3;
566 RESULT [RESULT_VALUE] = -1;
567 .SAVE_CHAR = -1;
568 END;
569 TES;
570
571 END;
572
573 IF (DEBUG GEQ 1)
574 THEN
575 BEGIN !DEBUG
576 PCRLF (1);
577 OUTSTR (1, UPLIT (%ASCIZ' SCAN: TYPE ='));
578 OUTNUM (1, .RESULT [RESULT_TYPE], 8, 0);
579 OUTSTR (1, UPLIT (%ASCIZ', VALUE ='));
580
581 CASE .RESULT [RESULT_TYPE] FROM 1 TO 3 OF
582 SET
583
584 [1] : !NAME
585 OUTSTR (1, RESULT [RESULT_VALUE]);
586
587 [2] : !NUMBER, PRINT IN DECIMAL
588 OUTNUM (1, .RESULT [RESULT_VALUE], 10, 0);
589
590 [3] : !SPECIAL CHARACTER
591 BEGIN
592
593 IF (.RESULT [RESULT_VALUE] LSS 0)
594 THEN
595 OUTNUM (1, .RESULT [RESULT_VALUE], 10, 0)
596 ELSE
597 OUTPUT (1, .RESULT [RESULT_VALUE]);
598
599 END;
600 TES;
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
601
602 END; !DEBUG
603
604 END;
605
606 END; !OF SCAN
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
607 ROUTINE R_BUF (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ BUF$DF LINE
608
609 !++
610 ! FUNCTIONAL DESCRIPTION:
611 !
612 ! READ AND PROCESS THE BUF$DF LINE OF CETAB.MAC
613 !
614 ! FORMAL PARAMETERS:
615 !
616 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
617 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
618 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
619 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
620 !
621 ! IMPLICIT INPUTS:
622 !
623 ! NONE
624 !
625 ! IMPLICIT OUTPUTS:
626 !
627 ! NONE
628 !
629 ! ROUTINE VALUE:
630 !
631 ! NONE
632 !
633 ! SIDE EFFECTS
634 !
635 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
636 !
637 !--
638
639 BEGIN
640
641 BIND
642 ROUTINE_NAME = UPLIT (%ASCIZ'READ-BUF$DF');
643
644 MAP
645 FILE_PTR : REF FILE_BLOCK,
646 VALUES : REF VNPVAL_BLOCK;
647
648 LOCAL
649 RESULT : VECTOR [20],
650 VAL_POINTER;
651
652 !
653 ! SCAN EACH ARGUMENT OF BUF$DF, PUTTING IT INTO THE 'VALUES' BLOCK.
654 !
655 VAL_POINTER = 1;
656
657 WHILE (.VAL_POINTER LEQ 8) DO
658 BEGIN
659 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
660
661 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
662 THEN
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
663 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0,
664 0, 0)
665 ELSE
666 BEGIN
667
668 CASE .VAL_POINTER FROM 1 TO 8 OF
669 SET
670
671 [1] :
672 VALUES [CCBNM] = .RESULT [RESULT_VALUE];
673
674 [2] :
675 VALUES [CCBSZ] = .RESULT [RESULT_VALUE];
676
677 [3] :
678 VALUES [RDBNM] = .RESULT [RESULT_VALUE];
679
680 [4] :
681 VALUES [RDBSZ] = .RESULT [RESULT_VALUE];
682
683 [5] :
684 VALUES [SDBNM] = .RESULT [RESULT_VALUE];
685
686 [6] :
687 VALUES [SDBSZ] = .RESULT [RESULT_VALUE];
688
689 [7] :
690 VALUES [RDBTH] = .RESULT [RESULT_VALUE];
691
692 [8] :
693 VALUES [XMTBF] = .RESULT [RESULT_VALUE];
694 TES;
695
696 VAL_POINTER = .VAL_POINTER + 1;
697
698 IF (.VAL_POINTER LEQ 8)
699 THEN
700 BEGIN
701 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
702
703 IF ((.RESULT [RESULT_TYPE] NEQ RT_SPECIAL) OR (.RESULT [RESULT_VALUE] NEQ %C','))
704 THEN
705 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
706
707 END;
708
709 END;
710
711 END;
712
713 !
714 ! FINISHED WITH BUF$DF, SKIP TO END OF LINE
715 !
716
717 DO
718 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
719 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
720
721 END; !OF R_BUF
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
722 ROUTINE R_PDV (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ PDV$DF LINE
723
724 !++
725 ! FUNCTIONAL DESCRIPTION:
726 !
727 ! READ AND PROCESS THE PDV$DF LINE OF CETAB.MAC
728 !
729 ! FORMAL PARAMETERS:
730 !
731 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
732 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
733 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
734 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
735 !
736 ! IMPLICIT INPUTS:
737 !
738 ! NONE
739 !
740 ! IMPLICIT OUTPUTS:
741 !
742 ! NONE
743 !
744 ! ROUTINE VALUE:
745 !
746 ! NONE
747 !
748 ! SIDE EFFECTS
749 !
750 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
751 !
752 !--
753
754 BEGIN
755
756 BIND
757 ROUTINE_NAME = UPLIT (%ASCIZ'READ-PDV$DF');
758
759 MAP
760 FILE_PTR : REF FILE_BLOCK,
761 VALUES : REF VNPVAL_BLOCK;
762
763 LOCAL
764 RESULT : VECTOR [20],
765 VAL_POINTER;
766
767 !
768 ! THIS MACRO IS NOT USED BY VNP20
769 !
770 !
771 ! FINISHED WITH PDV$DF, SKIP TO END OF LINE
772 !
773
774 DO
775 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
776 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
777
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
778 END; !OF R_PDV
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
779 ROUTINE R_SLT (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ SLT$DF LINE
780
781 !++
782 ! FUNCTIONAL DESCRIPTION:
783 !
784 ! READ AND PROCESS THE SLT$DF LINE OF CETAB.MAC
785 !
786 ! FORMAL PARAMETERS:
787 !
788 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
789 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
790 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
791 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
792 !
793 ! IMPLICIT INPUTS:
794 !
795 ! NONE
796 !
797 ! IMPLICIT OUTPUTS:
798 !
799 ! NONE
800 !
801 ! ROUTINE VALUE:
802 !
803 ! NONE
804 !
805 ! SIDE EFFECTS
806 !
807 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
808 ! AND GETS STORAGE FROM THE FREE LIST
809 !
810 !--
811
812 BEGIN
813
814 BIND
815 ROUTINE_NAME = UPLIT (%ASCIZ'READ-SLT$DF');
816
817 MAP
818 FILE_PTR : REF FILE_BLOCK,
819 VALUES : REF VNPVAL_BLOCK;
820
821 LOCAL
822 SLT_PTR : REF SLT_BLOCK,
823 RESULT : VECTOR [20],
824 VAL_POINTER,
825 SCAN_DONE,
826 SEARCH_DONE;
827
828 !
829 ! ALLOCATE AN SLT BLOCK AND LINK IT IN WITH THE OTHERS, IF ANY.
830 !
831
832 IF ((SLT_PTR = GETBLK (SLT_TYP, SLT_LEN)) EQL 0)
833 THEN
834 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
835 ELSE
836
837 IF ((VALUES [SLT_CHAIN] = BLD_CHAIN (.VALUES, .VALUES [SLT_CHAIN], .SLT_PTR)) EQL 0)
838 THEN
839 ERRMSG (0,
840 1, ROUTINE_NAME, 0, 0, 0, 0)
841 ELSE
842 BEGIN
843 VAL_POINTER = 1;
844 SCAN_DONE = 0;
845
846 WHILE (.SCAN_DONE EQL 0) DO
847 BEGIN
848 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
849
850 IF ((.RESULT [RESULT_TYPE] NEQ RT_SPECIAL) OR (.RESULT [RESULT_VALUE] NEQ %C','))
851 THEN
852 BEGIN
853
854 CASE .VAL_POINTER FROM 1 TO 7 OF
855 SET
856
857 [1] : !DDM NAME
858 BEGIN
859
860 IF (.RESULT [RESULT_TYPE] NEQ RT_NAME)
861 THEN
862 ERRMSG (0, 24, ROUTINE_NAME,
863 FILE_PTR [FILE_NAME], 0, 0, 0)
864 ELSE
865 CH$MOVE (4, CH$PTR (RESULT [RESULT_VALUE]), CH$PTR (SLT_PTR [SLT_DDM]));
866
867 END;
868
869 [2] : !DLC NAME
870 BEGIN
871
872 IF (.RESULT [RESULT_TYPE] NEQ RT_NAME)
873 THEN
874 ERRMSG (0, 24, ROUTINE_NAME,
875 FILE_PTR [FILE_NAME], 0, 0, 0)
876 ELSE
877 CH$MOVE (4, CH$PTR (RESULT [RESULT_VALUE]), CH$PTR (SLT_PTR [SLT_DLC]));
878
879 END;
880
881 [3] : !LLC NAME
882 BEGIN
883
884 IF (.RESULT [RESULT_TYPE] NEQ RT_NAME)
885 THEN
886 ERRMSG (0, 24, ROUTINE_NAME,
887 FILE_PTR [FILE_NAME], 0, 0, 0)
888 ELSE
889 CH$MOVE (4, CH$PTR (RESULT [RESULT_VALUE]), CH$PTR (SLT_PTR [SLT_LLC]));
890
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
891 END;
892
893 [4] : !FLAGS, IGNORE.
894 BEGIN
895 END;
896
897 [5] : !CONTROLLER NUMBER
898 BEGIN
899
900 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
901 THEN
902 ERRMSG (0, 24, ROUTINE_NAME,
903 FILE_PTR [FILE_NAME], 0, 0, 0)
904 ELSE
905 SLT_PTR [SLT_CONT] = .RESULT [RESULT_VALUE];
906
907 END;
908
909 [6] : !UNIT NUMBER
910 BEGIN
911
912 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
913 THEN
914 ERRMSG (0, 24, ROUTINE_NAME,
915 FILE_PTR [FILE_NAME], 0, 0, 0)
916 ELSE
917 SLT_PTR [SLT_UNIT] = .RESULT [RESULT_VALUE];
918
919 END;
920
921 [7] : !"ENABLE", IGNORE.
922 BEGIN
923 END;
924
925 [OUTRANGE] :
926 BEGIN
927 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
928 SCAN_DONE = 1;
929 END;
930 TES;
931
932 !
933 ! SCAN FOR THE NEXT COMMA
934 !
935 SEARCH_DONE = 0;
936
937 WHILE (.SEARCH_DONE EQL 0) DO
938 BEGIN
939 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
940
941 IF (.RESULT [RESULT_TYPE] EQL RT_SPECIAL)
942 THEN
943
944 IF (.RESULT [RESULT_VALUE] LSS 0)
945 THEN
946 SEARCH_DONE = -1
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
947 ELSE
948
949 IF (.RESULT [RESULT_VALUE] EQL %C',') THEN SEARCH_DONE = 1;
950
951 END;
952
953 IF (.SEARCH_DONE LSS 0) THEN SCAN_DONE = .SEARCH_DONE;
954
955 END;
956
957 VAL_POINTER = .VAL_POINTER + 1;
958 END;
959
960 END;
961
962 !
963 ! SAVE POINTER TO THE SLT BLOCK FOR THE STA$DF SCANNER
964 !
965 VALUES [CURRENT_SLT] = .SLT_PTR;
966 !
967 ! FINISHED WITH SLT$DF, SKIP TO END OF LINE
968 !
969
970 IF (.SCAN_DONE GTR 0)
971 THEN
972
973 DO
974 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
975 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
976
977 END; !OF R_SLT
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
978 ROUTINE R_STA (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ STA$DF LINE
979
980 !++
981 ! FUNCTIONAL DESCRIPTION:
982 !
983 ! READ AND PROCESS THE STA$DF LINE OF CETAB.MAC
984 !
985 ! FORMAL PARAMETERS:
986 !
987 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
988 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
989 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
990 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
991 !
992 ! IMPLICIT INPUTS:
993 !
994 ! NONE
995 !
996 ! IMPLICIT OUTPUTS:
997 !
998 ! NONE
999 !
1000 ! ROUTINE VALUE:
1001 !
1002 ! NONE
1003 !
1004 ! SIDE EFFECTS
1005 !
1006 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
1007 ! AND GETS STORAGE FROM THE FREE LIST
1008 !
1009 !--
1010
1011 BEGIN
1012
1013 BIND
1014 ROUTINE_NAME = UPLIT (%ASCIZ'READ-STA$DF');
1015
1016 MAP
1017 FILE_PTR : REF FILE_BLOCK,
1018 VALUES : REF VNPVAL_BLOCK;
1019
1020 LOCAL
1021 STA_PTR : REF STA_BLOCK,
1022 SLT_PTR : REF SLT_BLOCK,
1023 RESULT : VECTOR [20],
1024 VAL_POINTER,
1025 SCAN_DONE,
1026 SEARCH_DONE;
1027
1028 !
1029 ! GET THE POINTER TO THE CURRENT SLT BLOCK, WHICH REPRESENTS THE
1030 ! SYSTEM LINE THAT THIS STATION BELONGS ON.
1031 !
1032 SLT_PTR = .VALUES [CURRENT_SLT];
1033 !
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1034 ! ALLOCATE A STA BLOCK AND LINK IT WITH THE OTHERS FOR THIS SLT,
1035 ! IF ANY.
1036 !
1037
1038 IF ((STA_PTR = GETBLK (STA_TYP, STA_LEN)) EQL 0)
1039 THEN
1040 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
1041 ELSE
1042
1043 IF ((SLT_PTR [SLT_STA] = BLD_CHAIN (.SLT_PTR, .SLT_PTR [SLT_STA], .STA_PTR)) EQL 0)
1044 THEN
1045 ERRMSG (0,
1046 1, ROUTINE_NAME, 0, 0, 0, 0)
1047 ELSE
1048 BEGIN
1049 VAL_POINTER = 1;
1050 SCAN_DONE = 0;
1051 SLT_PTR [SLT_NUM_OF_STA] = .SLT_PTR [SLT_NUM_OF_STA] + 1;
1052
1053 WHILE (.SCAN_DONE EQL 0) DO
1054 BEGIN
1055 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
1056
1057 IF ((.RESULT [RESULT_TYPE] NEQ RT_SPECIAL) OR (.RESULT [RESULT_VALUE] NEQ %C','))
1058 THEN
1059 BEGIN
1060
1061 CASE .VAL_POINTER FROM 1 TO 2 OF
1062 SET
1063
1064 [1] : !STATION NUMBER
1065 BEGIN
1066
1067 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
1068 THEN
1069 ERRMSG (0, 24, ROUTINE_NAME,
1070 FILE_PTR [FILE_NAME], 0, 0, 0)
1071 ELSE
1072 STA_PTR [STA_NUM] = .RESULT [RESULT_VALUE];
1073
1074 END;
1075
1076 [2] : !LLC NAME
1077 BEGIN
1078
1079 IF (.RESULT [RESULT_TYPE] NEQ RT_NAME)
1080 THEN
1081 ERRMSG (0, 24, ROUTINE_NAME,
1082 FILE_PTR [FILE_NAME], 0, 0, 0)
1083 ELSE
1084 CH$MOVE (4, CH$PTR (RESULT [RESULT_VALUE]), CH$PTR (STA_PTR [STA_LLC]));
1085
1086 END;
1087
1088 [OUTRANGE] :
1089 BEGIN
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1090 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
1091 SCAN_DONE = 1;
1092 END;
1093 TES;
1094
1095 !
1096 ! SCAN FOR THE NEXT COMMA
1097 !
1098 SEARCH_DONE = 0;
1099
1100 WHILE (.SEARCH_DONE EQL 0) DO
1101 BEGIN
1102 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
1103
1104 IF (.RESULT [RESULT_TYPE] EQL RT_SPECIAL)
1105 THEN
1106
1107 IF (.RESULT [RESULT_VALUE] LSS 0)
1108 THEN
1109 SEARCH_DONE = -1
1110 ELSE
1111
1112 IF (.RESULT [RESULT_VALUE] EQL %C',') THEN SEARCH_DONE = 1;
1113
1114 END;
1115
1116 IF (.SEARCH_DONE LSS 0) THEN SCAN_DONE = .SEARCH_DONE;
1117
1118 END;
1119
1120 VAL_POINTER = .VAL_POINTER + 1;
1121 END;
1122
1123 END;
1124
1125 !
1126 ! FINISHED WITH STA$DF, SKIP TO END OF LINE
1127 !
1128
1129 IF (.SCAN_DONE GTR 0)
1130 THEN
1131
1132 DO
1133 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
1134 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
1135
1136 END; !OF R_STA
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1137 ROUTINE R_LLC (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ LLC$DF LINE
1138
1139 !++
1140 ! FUNCTIONAL DESCRIPTION:
1141 !
1142 ! READ AND PROCESS THE LLC$DF LINE OF CETAB.MAC
1143 !
1144 ! FORMAL PARAMETERS:
1145 !
1146 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
1147 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
1148 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
1149 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
1150 !
1151 ! IMPLICIT INPUTS:
1152 !
1153 ! NONE
1154 !
1155 ! IMPLICIT OUTPUTS:
1156 !
1157 ! NONE
1158 !
1159 ! ROUTINE VALUE:
1160 !
1161 ! NONE
1162 !
1163 ! SIDE EFFECTS
1164 !
1165 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
1166 ! AND GETS STORAGE FROM THE FREE LIST
1167 !
1168 !--
1169
1170 BEGIN
1171
1172 BIND
1173 ROUTINE_NAME = UPLIT (%ASCIZ'READ-LLC$DF');
1174
1175 MAP
1176 FILE_PTR : REF FILE_BLOCK,
1177 VALUES : REF VNPVAL_BLOCK;
1178
1179 LOCAL
1180 LLC_PTR : REF LLC_BLOCK,
1181 RESULT : VECTOR [20],
1182 VAL_POINTER,
1183 SCAN_DONE,
1184 SEARCH_DONE;
1185
1186 !
1187 ! ALLOCATE AN LLC BLOCK AND LINK IT IN WITH THE OTHERS, IF ANY.
1188 !
1189
1190 IF ((LLC_PTR = GETBLK (LLC_TYP, LLC_LEN)) EQL 0)
1191 THEN
1192 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1193 ELSE
1194
1195 IF ((VALUES [LLC_CHAIN] = BLD_CHAIN (.VALUES, .VALUES [LLC_CHAIN], .LLC_PTR)) EQL 0)
1196 THEN
1197 ERRMSG (0,
1198 1, ROUTINE_NAME, 0, 0, 0, 0)
1199 ELSE
1200 BEGIN
1201 VAL_POINTER = 1;
1202 SCAN_DONE = 0;
1203 LLC_PTR [LLC_PLKNUM] = 0;
1204 LLC_PTR [LLC_LLKNUM] = 0;
1205
1206 WHILE (.SCAN_DONE EQL 0) DO
1207 BEGIN
1208 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
1209
1210 IF ((.RESULT [RESULT_TYPE] NEQ RT_SPECIAL) OR (.RESULT [RESULT_VALUE] NEQ %C','))
1211 THEN
1212 BEGIN
1213
1214 CASE .VAL_POINTER FROM 1 TO 6 OF
1215 SET
1216
1217 [1] : !NAME
1218 BEGIN
1219
1220 IF (.RESULT [RESULT_TYPE] NEQ RT_NAME)
1221 THEN
1222 ERRMSG (0, 24, ROUTINE_NAME,
1223 FILE_PTR [FILE_NAME], 0, 0, 0)
1224 ELSE
1225 CH$MOVE (4, CH$PTR (RESULT [RESULT_VALUE]), CH$PTR (LLC_PTR [LLC_NAME]));
1226
1227 END;
1228
1229 [2] : !FLAGS, IGNORE THEM.
1230 BEGIN
1231 END;
1232
1233 [3] : !PRIORITY, IGNORE IT.
1234 BEGIN
1235 END;
1236
1237 [4] : !NUMBER OF PHYSICAL LINKS
1238 BEGIN
1239
1240 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
1241 THEN
1242 ERRMSG (0, 24, ROUTINE_NAME,
1243 FILE_PTR [FILE_NAME], 0, 0, 0)
1244 ELSE
1245 LLC_PTR [LLC_PLKNUM] = .RESULT [RESULT_VALUE];
1246
1247 END;
1248
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1249 [5] : !NUMBER OF LOGICAL LINKS
1250 BEGIN
1251
1252 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
1253 THEN
1254 ERRMSG (0, 24, ROUTINE_NAME,
1255 FILE_PTR [FILE_NAME], 0, 0, 0)
1256 ELSE
1257 LLC_PTR [LLC_LLKNUM] = .RESULT [RESULT_VALUE];
1258
1259 END;
1260
1261 [6] : !DEVICE NAME
1262 BEGIN
1263
1264 IF (.RESULT [RESULT_TYPE] NEQ RT_NAME)
1265 THEN
1266 ERRMSG (0, 24, ROUTINE_NAME,
1267 FILE_PTR [FILE_NAME], 0, 0, 0)
1268 ELSE
1269 CH$MOVE (4, CH$PTR (RESULT [RESULT_VALUE]), CH$PTR (LLC_PTR [LLC_DEV]));
1270
1271 END;
1272
1273 [OUTRANGE] :
1274 BEGIN
1275 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
1276 SCAN_DONE = 1;
1277 END;
1278 TES;
1279
1280 !
1281 ! SCAN FOR THE NEXT COMMA
1282 !
1283 SEARCH_DONE = 0;
1284
1285 WHILE (.SEARCH_DONE EQL 0) DO
1286 BEGIN
1287 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
1288
1289 IF (.RESULT [RESULT_TYPE] EQL RT_SPECIAL)
1290 THEN
1291
1292 IF (.RESULT [RESULT_VALUE] LSS 0)
1293 THEN
1294 SEARCH_DONE = -1
1295 ELSE
1296
1297 IF (.RESULT [RESULT_VALUE] EQL %C',') THEN SEARCH_DONE = 1;
1298
1299 END;
1300
1301 IF (.SEARCH_DONE LSS 0) THEN SCAN_DONE = .SEARCH_DONE;
1302
1303 END;
1304
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1305 VAL_POINTER = .VAL_POINTER + 1;
1306 END;
1307
1308 END;
1309
1310 !
1311 ! FINISHED WITH LLC$DF, SKIP TO END OF LINE
1312 !
1313
1314 IF (.SCAN_DONE GTR 0)
1315 THEN
1316
1317 DO
1318 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
1319 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
1320
1321 END; !OF R_LLC
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1322 ROUTINE R_DLC (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ DLC$DF LINE
1323
1324 !++
1325 ! FUNCTIONAL DESCRIPTION:
1326 !
1327 ! READ AND PROCESS THE DLC$DF LINE OF CETAB.MAC
1328 !
1329 ! FORMAL PARAMETERS:
1330 !
1331 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
1332 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
1333 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
1334 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
1335 !
1336 ! IMPLICIT INPUTS:
1337 !
1338 ! NONE
1339 !
1340 ! IMPLICIT OUTPUTS:
1341 !
1342 ! NONE
1343 !
1344 ! ROUTINE VALUE:
1345 !
1346 ! NONE
1347 !
1348 ! SIDE EFFECTS
1349 !
1350 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
1351 ! AND GETS STORAGE FROM THE FREE LIST
1352 !
1353 !--
1354
1355 BEGIN
1356
1357 BIND
1358 ROUTINE_NAME = UPLIT (%ASCIZ'READ-DLC$DF');
1359
1360 MAP
1361 FILE_PTR : REF FILE_BLOCK,
1362 VALUES : REF VNPVAL_BLOCK;
1363
1364 LOCAL
1365 DLC_PTR : REF DLC_BLOCK,
1366 RESULT : VECTOR [20],
1367 VAL_POINTER,
1368 SCAN_DONE,
1369 SEARCH_DONE;
1370
1371 !
1372 ! ALLOCATE AN DLC BLOCK AND LINK IT IN WITH THE OTHERS, IF ANY.
1373 !
1374
1375 IF ((DLC_PTR = GETBLK (DLC_TYP, DLC_LEN)) EQL 0)
1376 THEN
1377 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1378 ELSE
1379
1380 IF ((VALUES [DLC_CHAIN] = BLD_CHAIN (.VALUES, .VALUES [DLC_CHAIN], .DLC_PTR)) EQL 0)
1381 THEN
1382 ERRMSG (0,
1383 1, ROUTINE_NAME, 0, 0, 0, 0)
1384 ELSE
1385 BEGIN
1386 VAL_POINTER = 1;
1387 SCAN_DONE = 0;
1388
1389 WHILE (.SCAN_DONE EQL 0) DO
1390 BEGIN
1391 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
1392
1393 CASE .VAL_POINTER FROM 1 TO 3 OF
1394 SET
1395
1396 [1] : !NAME
1397 BEGIN
1398
1399 IF (.RESULT [RESULT_TYPE] NEQ RT_NAME)
1400 THEN
1401 ERRMSG (0, 24, ROUTINE_NAME,
1402 FILE_PTR [FILE_NAME], 0, 0, 0)
1403 ELSE
1404 CH$MOVE (4, CH$PTR (RESULT [RESULT_VALUE]), CH$PTR (DLC_PTR [DLC_NAME]));
1405
1406 END;
1407
1408 [2] : !FLAGS, IGNORE THEM.
1409 BEGIN
1410 END;
1411
1412 [3] : !PRIORITY, IGNORE IT.
1413 BEGIN
1414 END;
1415
1416 [OUTRANGE] :
1417 BEGIN
1418 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
1419 SCAN_DONE = 1;
1420 END;
1421 TES;
1422
1423 !
1424 ! SCAN FOR THE NEXT COMMA
1425 !
1426 SEARCH_DONE = 0;
1427
1428 WHILE (.SEARCH_DONE EQL 0) DO
1429 BEGIN
1430 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
1431
1432 IF (.RESULT [RESULT_TYPE] EQL RT_SPECIAL)
1433 THEN
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1434
1435 IF (.RESULT [RESULT_VALUE] LSS 0)
1436 THEN
1437 SEARCH_DONE = -1
1438 ELSE
1439
1440 IF (.RESULT [RESULT_VALUE] EQL %C',') THEN SEARCH_DONE = 1;
1441
1442 END;
1443
1444 IF (.SEARCH_DONE LSS 0) THEN SCAN_DONE = .SEARCH_DONE;
1445
1446 VAL_POINTER = .VAL_POINTER + 1;
1447 END;
1448
1449 END;
1450
1451 !
1452 ! FINISHED WITH DLC$DF, SKIP TO END OF LINE
1453 !
1454
1455 IF (.SCAN_DONE GTR 0)
1456 THEN
1457
1458 DO
1459 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
1460 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
1461
1462 END; !OF R_DLC
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1463 ROUTINE R_DDM (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ DDM$DF LINE
1464
1465 !++
1466 ! FUNCTIONAL DESCRIPTION:
1467 !
1468 ! READ AND PROCESS THE DDM$DF LINE OF CETAB.MAC
1469 !
1470 ! FORMAL PARAMETERS:
1471 !
1472 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
1473 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
1474 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
1475 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
1476 !
1477 ! IMPLICIT INPUTS:
1478 !
1479 ! NONE
1480 !
1481 ! IMPLICIT OUTPUTS:
1482 !
1483 ! NONE
1484 !
1485 ! ROUTINE VALUE:
1486 !
1487 ! NONE
1488 !
1489 ! SIDE EFFECTS
1490 !
1491 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
1492 ! AND GETS STORAGE FROM THE FREE LIST
1493 !
1494 !--
1495
1496 BEGIN
1497
1498 BIND
1499 ROUTINE_NAME = UPLIT (%ASCIZ'READ-DDM$DF');
1500
1501 MAP
1502 FILE_PTR : REF FILE_BLOCK,
1503 VALUES : REF VNPVAL_BLOCK;
1504
1505 LOCAL
1506 DDM_PTR : REF DDM_BLOCK,
1507 RESULT : VECTOR [20],
1508 VAL_POINTER,
1509 SCAN_DONE,
1510 SEARCH_DONE;
1511
1512 !
1513 ! ALLOCATE A DDM BLOCK AND LINK IT IN WITH THE OTHERS, IF ANY.
1514 !
1515
1516 IF ((DDM_PTR = GETBLK (DDM_TYP, DDM_LEN)) EQL 0)
1517 THEN
1518 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1519 ELSE
1520
1521 IF ((VALUES [DDM_CHAIN] = BLD_CHAIN (.VALUES, .VALUES [DDM_CHAIN], .DDM_PTR)) EQL 0)
1522 THEN
1523 ERRMSG (0,
1524 1, ROUTINE_NAME, 0, 0, 0, 0)
1525 ELSE
1526 BEGIN
1527 VAL_POINTER = 1;
1528 SCAN_DONE = 0;
1529
1530 WHILE (.SCAN_DONE EQL 0) DO
1531 BEGIN
1532 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
1533
1534 CASE .VAL_POINTER FROM 1 TO 3 OF
1535 SET
1536
1537 [1] : !NAME
1538 BEGIN
1539
1540 IF (.RESULT [RESULT_TYPE] NEQ RT_NAME)
1541 THEN
1542 ERRMSG (0, 24, ROUTINE_NAME,
1543 FILE_PTR [FILE_NAME], 0, 0, 0)
1544 ELSE
1545 CH$MOVE (4, CH$PTR (RESULT [RESULT_VALUE]), CH$PTR (DDM_PTR [DDM_NAME]));
1546
1547 END;
1548
1549 [2] : !FLAGS, IGNORE THEM.
1550 BEGIN
1551 END;
1552
1553 [3] : !PRIORITY, IGNORE IT.
1554 BEGIN
1555 END;
1556
1557 [OUTRANGE] :
1558 BEGIN
1559 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
1560 SCAN_DONE = 1;
1561 END;
1562 TES;
1563
1564 !
1565 ! SCAN FOR THE NEXT COMMA
1566 !
1567 SEARCH_DONE = 0;
1568
1569 WHILE (.SEARCH_DONE EQL 0) DO
1570 BEGIN
1571 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
1572
1573 IF (.RESULT [RESULT_TYPE] EQL RT_SPECIAL)
1574 THEN
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1575
1576 IF (.RESULT [RESULT_VALUE] LSS 0)
1577 THEN
1578 SEARCH_DONE = -1
1579 ELSE
1580
1581 IF (.RESULT [RESULT_VALUE] EQL %C',') THEN SEARCH_DONE = 1;
1582
1583 END;
1584
1585 IF (.SEARCH_DONE LSS 0) THEN SCAN_DONE = .SEARCH_DONE;
1586
1587 VAL_POINTER = .VAL_POINTER + 1;
1588 END;
1589
1590 END;
1591
1592 !
1593 ! SAVE POINTER TO DDM FOR UNT$DF AND CNT$DF SCANNERS
1594 !
1595 VALUES [CURRENT_DDM] = .DDM_PTR;
1596 !
1597 ! FINISHED WITH DDM$DF, SKIP TO END OF LINE
1598 !
1599
1600 IF (.SCAN_DONE GTR 0)
1601 THEN
1602
1603 DO
1604 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
1605 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
1606
1607 END; !OF R_DDM
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1608 ROUTINE R_CNT (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ CNT$DF LINE
1609
1610 !++
1611 ! FUNCTIONAL DESCRIPTION:
1612 !
1613 ! READ AND PROCESS THE CNT$DF LINE OF CETAB.MAC
1614 !
1615 ! FORMAL PARAMETERS:
1616 !
1617 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
1618 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
1619 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
1620 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
1621 !
1622 ! IMPLICIT INPUTS:
1623 !
1624 ! NONE
1625 !
1626 ! IMPLICIT OUTPUTS:
1627 !
1628 ! NONE
1629 !
1630 ! ROUTINE VALUE:
1631 !
1632 ! NONE
1633 !
1634 ! SIDE EFFECTS
1635 !
1636 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
1637 ! AND GETS STORAGE FROM THE FREE LIST
1638 !
1639 !--
1640
1641 BEGIN
1642
1643 BIND
1644 ROUTINE_NAME = UPLIT (%ASCIZ'READ-CNT$DF');
1645
1646 MAP
1647 FILE_PTR : REF FILE_BLOCK,
1648 VALUES : REF VNPVAL_BLOCK;
1649
1650 LOCAL
1651 CNT_PTR : REF CNT_BLOCK,
1652 DDM_PTR : REF DDM_BLOCK,
1653 RESULT : VECTOR [20],
1654 VAL_POINTER,
1655 SCAN_DONE,
1656 SEARCH_DONE;
1657
1658 !
1659 ! FETCH A POINTER TO THE LAST DDM BLOCK
1660 !
1661 DDM_PTR = .VALUES [CURRENT_DDM];
1662 !
1663 ! ALLOCATE A CNT BLOCK AND LINK IT IN WITH THE OTHERS, IF ANY.
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1664 !
1665
1666 IF ((CNT_PTR = GETBLK (CNT_TYP, CNT_LEN)) EQL 0)
1667 THEN
1668 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
1669 ELSE
1670
1671 IF ((DDM_PTR [DDM_CNT] = BLD_CHAIN (.DDM_PTR, .DDM_PTR [DDM_CNT], .CNT_PTR)) EQL 0)
1672 THEN
1673 ERRMSG (0,
1674 1, ROUTINE_NAME, 0, 0, 0, 0)
1675 ELSE
1676 BEGIN
1677 VAL_POINTER = 1;
1678 SCAN_DONE = 0;
1679
1680 WHILE (.SCAN_DONE EQL 0) DO
1681 BEGIN
1682 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
1683
1684 CASE .VAL_POINTER FROM 1 TO 4 OF
1685 SET
1686
1687 [1] : !CONTROLLER NUMBER
1688 BEGIN
1689
1690 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
1691 THEN
1692 ERRMSG (0, 24, ROUTINE_NAME,
1693 FILE_PTR [FILE_NAME], 0, 0, 0)
1694 ELSE
1695 CNT_PTR [CNT_CONT] = .RESULT [RESULT_VALUE];
1696
1697 END;
1698
1699 [2] : !VECTOR
1700 BEGIN
1701
1702 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
1703 THEN
1704 ERRMSG (0, 24, ROUTINE_NAME,
1705 FILE_PTR [FILE_NAME], 0, 0, 0)
1706 ELSE
1707 CNT_PTR [CNT_VECTOR] = .RESULT [RESULT_VALUE];
1708
1709 END;
1710
1711 [3] : !CSR
1712 BEGIN
1713
1714 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
1715 THEN
1716 ERRMSG (0, 24, ROUTINE_NAME,
1717 FILE_PTR [FILE_NAME], 0, 0, 0)
1718 ELSE
1719 CNT_PTR [CNT_CSR] = .RESULT [RESULT_VALUE];
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1720
1721 END;
1722
1723 [4] : !PRIORITY
1724 BEGIN
1725
1726 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
1727 THEN
1728 ERRMSG (0, 24, ROUTINE_NAME,
1729 FILE_PTR [FILE_NAME], 0, 0, 0)
1730 ELSE
1731 CNT_PTR [CNT_PRIORITY] = .RESULT [RESULT_VALUE];
1732
1733 END;
1734
1735 [OUTRANGE] :
1736 BEGIN
1737 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
1738 SCAN_DONE = 1;
1739 END;
1740 TES;
1741
1742 !
1743 ! SCAN FOR THE NEXT COMMA
1744 !
1745 SEARCH_DONE = 0;
1746
1747 WHILE (.SEARCH_DONE EQL 0) DO
1748 BEGIN
1749 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
1750
1751 IF (.RESULT [RESULT_TYPE] EQL RT_SPECIAL)
1752 THEN
1753
1754 IF (.RESULT [RESULT_VALUE] LSS 0)
1755 THEN
1756 SEARCH_DONE = -1
1757 ELSE
1758
1759 IF (.RESULT [RESULT_VALUE] EQL %C',') THEN SEARCH_DONE = 1;
1760
1761 END;
1762
1763 IF (.SEARCH_DONE LSS 0) THEN SCAN_DONE = .SEARCH_DONE;
1764
1765 VAL_POINTER = .VAL_POINTER + 1;
1766 END;
1767
1768 END;
1769
1770 !
1771 ! STORE POINTER TO DDM BLOCK, FOR REDUNDENCY
1772 !
1773 CNT_PTR [CNT_DDM] = .DDM_PTR;
1774 !
1775 ! SAVE POINTER TO CNT FOR UNT$DF SCANNER
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1776 !
1777 VALUES [CURRENT_CNT] = .CNT_PTR;
1778 !
1779 ! FINISHED WITH CNT$DF, SKIP TO END OF LINE
1780 !
1781
1782 IF (.SCAN_DONE GTR 0)
1783 THEN
1784
1785 DO
1786 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
1787 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
1788
1789 END; !OF R_CNT
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1790 ROUTINE R_UNT (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ UNT$DF LINE
1791
1792 !++
1793 ! FUNCTIONAL DESCRIPTION:
1794 !
1795 ! READ AND PROCESS THE UNT$DF LINE OF CETAB.MAC
1796 !
1797 ! FORMAL PARAMETERS:
1798 !
1799 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
1800 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
1801 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
1802 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
1803 !
1804 ! IMPLICIT INPUTS:
1805 !
1806 ! NONE
1807 !
1808 ! IMPLICIT OUTPUTS:
1809 !
1810 ! NONE
1811 !
1812 ! ROUTINE VALUE:
1813 !
1814 ! NONE
1815 !
1816 ! SIDE EFFECTS
1817 !
1818 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
1819 ! AND GETS STORAGE FROM THE FREE LIST
1820 !
1821 !--
1822
1823 BEGIN
1824
1825 BIND
1826 ROUTINE_NAME = UPLIT (%ASCIZ'READ-UNT$DF');
1827
1828 MAP
1829 FILE_PTR : REF FILE_BLOCK,
1830 VALUES : REF VNPVAL_BLOCK;
1831
1832 LOCAL
1833 UNT_PTR : REF UNT_BLOCK,
1834 CNT_PTR : REF CNT_BLOCK,
1835 DDM_PTR : REF DDM_BLOCK,
1836 RESULT : VECTOR [20],
1837 VAL_POINTER,
1838 SCAN_DONE,
1839 SEARCH_DONE;
1840
1841 !
1842 ! FETCH POINTERS TO THE LAST DDM AND CNT BLOCKS
1843 !
1844 DDM_PTR = .VALUES [CURRENT_DDM];
1845 CNT_PTR = .VALUES [CURRENT_CNT];
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1846 !
1847 ! ALLOCATE A UNT BLOCK AND LINK IT IN WITH THE OTHERS, IF ANY.
1848 !
1849
1850 IF ((UNT_PTR = GETBLK (UNT_TYP, UNT_LEN)) EQL 0)
1851 THEN
1852 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
1853 ELSE
1854
1855 IF ((CNT_PTR [CNT_UNT] = BLD_CHAIN (.CNT_PTR, .CNT_PTR [CNT_UNT], .UNT_PTR)) EQL 0)
1856 THEN
1857 ERRMSG (0,
1858 1, ROUTINE_NAME, 0, 0, 0, 0)
1859 ELSE
1860 BEGIN
1861 CNT_PTR [CNT_NUM_OF_UNTS] = .CNT_PTR [CNT_NUM_OF_UNTS] + 1;
1862 VAL_POINTER = 1;
1863 SCAN_DONE = 0;
1864
1865 WHILE (.SCAN_DONE EQL 0) DO
1866 BEGIN
1867 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
1868
1869 CASE .VAL_POINTER FROM 1 TO 4 OF
1870 SET
1871
1872 [1] : !UNIT NUMBER
1873 BEGIN
1874
1875 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
1876 THEN
1877 ERRMSG (0, 24, ROUTINE_NAME,
1878 FILE_PTR [FILE_NAME], 0, 0, 0)
1879 ELSE
1880 UNT_PTR [UNT_UNIT] = .RESULT [RESULT_VALUE];
1881
1882 END;
1883
1884 [2] : !PARM MASK
1885 BEGIN
1886
1887 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
1888 THEN
1889 ERRMSG (0, 24, ROUTINE_NAME,
1890 FILE_PTR [FILE_NAME], 0, 0, 0)
1891 ELSE
1892 UNT_PTR [UNT_PARMSK] = .RESULT [RESULT_VALUE];
1893
1894 END;
1895
1896 [3] : !PARM
1897 BEGIN
1898
1899 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
1900 THEN
1901 ERRMSG (0, 24, ROUTINE_NAME,
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1902 FILE_PTR [FILE_NAME], 0, 0, 0)
1903 ELSE
1904 UNT_PTR [UNT_PARM] = .RESULT [RESULT_VALUE];
1905
1906 END;
1907
1908 [4] : !SECONDARY CSR
1909 BEGIN
1910
1911 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
1912 THEN
1913 ERRMSG (0, 24, ROUTINE_NAME,
1914 FILE_PTR [FILE_NAME], 0, 0, 0)
1915 ELSE
1916 UNT_PTR [UNT_SECCSR] = .RESULT [RESULT_VALUE];
1917
1918 END;
1919
1920 [OUTRANGE] :
1921 BEGIN
1922 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
1923 SCAN_DONE = 1;
1924 END;
1925 TES;
1926
1927 !
1928 ! SCAN FOR THE NEXT COMMA
1929 !
1930 SEARCH_DONE = 0;
1931
1932 WHILE (.SEARCH_DONE EQL 0) DO
1933 BEGIN
1934 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
1935
1936 IF (.RESULT [RESULT_TYPE] EQL RT_SPECIAL)
1937 THEN
1938
1939 IF (.RESULT [RESULT_VALUE] LSS 0)
1940 THEN
1941 SEARCH_DONE = -1
1942 ELSE
1943
1944 IF (.RESULT [RESULT_VALUE] EQL %C',') THEN SEARCH_DONE = 1;
1945
1946 END;
1947
1948 IF (.SEARCH_DONE LSS 0) THEN SCAN_DONE = .SEARCH_DONE;
1949
1950 VAL_POINTER = .VAL_POINTER + 1;
1951 END;
1952
1953 END;
1954
1955 !
1956 ! STORE POINTERS TO DDM AND CNT BLOCKS, FOR REDUNDENCY
1957 !
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1958 UNT_PTR [UNT_DDM] = .DDM_PTR;
1959 UNT_PTR [UNT_CNT] = .CNT_PTR;
1960 !
1961 ! FINISHED WITH UNT$DF, SKIP TO END OF LINE
1962 !
1963
1964 IF (.SCAN_DONE GTR 0)
1965 THEN
1966
1967 DO
1968 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
1969 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
1970
1971 END; !OF R_UNT
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1972 ROUTINE R_NOD (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ NOD$DF LINE
1973
1974 !++
1975 ! FUNCTIONAL DESCRIPTION:
1976 !
1977 ! READ AND PROCESS THE NOD$DF LINE OF CETAB.MAC
1978 !
1979 ! FORMAL PARAMETERS:
1980 !
1981 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
1982 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
1983 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
1984 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
1985 !
1986 ! IMPLICIT INPUTS:
1987 !
1988 ! NONE
1989 !
1990 ! IMPLICIT OUTPUTS:
1991 !
1992 ! NONE
1993 !
1994 ! ROUTINE VALUE:
1995 !
1996 ! NONE
1997 !
1998 ! SIDE EFFECTS
1999 !
2000 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
2001 !
2002 !--
2003
2004 BEGIN
2005
2006 BIND
2007 ROUTINE_NAME = UPLIT (%ASCIZ'READ-NOD$DF');
2008
2009 MAP
2010 FILE_PTR : REF FILE_BLOCK,
2011 VALUES : REF VNPVAL_BLOCK;
2012
2013 LOCAL
2014 RESULT : VECTOR [20],
2015 VAL_POINTER;
2016
2017 !
2018 ! THIS LINE IS NOT USED BY VNP20
2019 !
2020 !
2021 ! FINISHED WITH NOD$DF, SKIP TO END OF LINE
2022 !
2023
2024 DO
2025 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
2026 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
2027
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
2028 END; !OF R_NOD
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
2029 ROUTINE R_PSW (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ PSW$DF LINE
2030
2031 !++
2032 ! FUNCTIONAL DESCRIPTION:
2033 !
2034 ! READ AND PROCESS THE PSW$DF LINE OF CETAB.MAC
2035 !
2036 ! FORMAL PARAMETERS:
2037 !
2038 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
2039 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
2040 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
2041 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
2042 !
2043 ! IMPLICIT INPUTS:
2044 !
2045 ! NONE
2046 !
2047 ! IMPLICIT OUTPUTS:
2048 !
2049 ! NONE
2050 !
2051 ! ROUTINE VALUE:
2052 !
2053 ! NONE
2054 !
2055 ! SIDE EFFECTS
2056 !
2057 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
2058 !
2059 !--
2060
2061 BEGIN
2062
2063 BIND
2064 ROUTINE_NAME = UPLIT (%ASCIZ'READ-PSW$DF');
2065
2066 MAP
2067 FILE_PTR : REF FILE_BLOCK,
2068 VALUES : REF VNPVAL_BLOCK;
2069
2070 LOCAL
2071 SCAN_DONE,
2072 SEARCH_DONE,
2073 RESULT : VECTOR [20],
2074 VAL_POINTER,
2075 CHAR,
2076 STR_PTR;
2077
2078 !
2079 ! SCAN EACH ARGUMENT OF PSW$DF AND PUT INTO VALUES ARRAY
2080 !
2081 VAL_POINTER = 1;
2082 SCAN_DONE = 0;
2083
2084 WHILE (.SCAN_DONE EQL 0) DO
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
2085 BEGIN
2086
2087 CASE .VAL_POINTER FROM 1 TO 2 OF
2088 SET
2089
2090 [1] : !RECEIVE PASSWORD
2091 BEGIN
2092 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
2093
2094 IF (.RESULT [RESULT_TYPE] NEQ RT_SPECIAL)
2095 THEN
2096 ERRMSG (0, 24, ROUTINE_NAME,
2097 FILE_PTR [FILE_NAME], 0, 0, 0)
2098 ELSE
2099 BEGIN
2100 STR_PTR = 0;
2101
2102 WHILE (.STR_PTR LSS LEN_PASWRD) DO
2103 BEGIN
2104 CHAR = INPUT (.FILE_CHAN);
2105
2106 IF (CLASS (.CHAR) EQL RT_SPECIAL) THEN EXITLOOP;
2107
2108 CH$WCHAR (.CHAR, CH$PTR (VALUES [RCV_PASWRD], .STR_PTR));
2109 STR_PTR = .STR_PTR + 1;
2110 END;
2111
2112 IF (.STR_PTR EQL 0) THEN CH$WCHAR (0, CH$PTR (VALUES [RCV_PASWRD], 0));
2113
2114 END;
2115
2116 END;
2117
2118 [2] : !TRANSMIT PASSWORD
2119 BEGIN
2120 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
2121
2122 IF (.RESULT [RESULT_TYPE] NEQ RT_SPECIAL)
2123 THEN
2124 ERRMSG (0, 24, ROUTINE_NAME,
2125 FILE_PTR [FILE_NAME], 0, 0, 0)
2126 ELSE
2127 BEGIN
2128 STR_PTR = 0;
2129
2130 WHILE (.STR_PTR LSS LEN_PASWRD) DO
2131 BEGIN
2132 CHAR = INPUT (.FILE_CHAN);
2133
2134 IF (CLASS (.CHAR) EQL RT_SPECIAL) THEN EXITLOOP;
2135
2136 CH$WCHAR (.CHAR, CH$PTR (VALUES [XMT_PASWRD], .STR_PTR));
2137 STR_PTR = .STR_PTR + 1;
2138 END;
2139
2140 IF (.STR_PTR EQL 0) THEN CH$WCHAR (0, CH$PTR (VALUES [XMT_PASWRD], 0));
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
2141
2142 END;
2143
2144 END;
2145 TES;
2146
2147 !
2148 ! SCAN FOR THE NEXT COMMA
2149 !
2150 SEARCH_DONE = 0;
2151
2152 WHILE (.SEARCH_DONE EQL 0) DO
2153 BEGIN
2154 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
2155
2156 IF (.RESULT [RESULT_TYPE] EQL RT_SPECIAL)
2157 THEN
2158
2159 IF (.RESULT [RESULT_VALUE] LSS 0)
2160 THEN
2161 SEARCH_DONE = -1
2162 ELSE
2163
2164 IF (.RESULT [RESULT_VALUE] EQL %C',') THEN SEARCH_DONE = 1;
2165
2166 END;
2167
2168 IF (.SEARCH_DONE LSS 0) THEN SCAN_DONE = .SEARCH_DONE;
2169
2170 VAL_POINTER = .VAL_POINTER + 1;
2171 END;
2172
2173 !
2174 ! FINISHED WITH PSW$DF, SKIP TO END OF LINE
2175 !
2176
2177 IF (.SCAN_DONE GTR 0)
2178 THEN
2179
2180 DO
2181 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
2182 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
2183
2184 END; !OF R_PSW
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
2185 ROUTINE R_TSK (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ TSK$DF LINE
2186
2187 !++
2188 ! FUNCTIONAL DESCRIPTION:
2189 !
2190 ! READ AND PROCESS THE TSK$DF LINE OF CETAB.MAC
2191 !
2192 ! FORMAL PARAMETERS:
2193 !
2194 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
2195 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
2196 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
2197 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
2198 !
2199 ! IMPLICIT INPUTS:
2200 !
2201 ! NONE
2202 !
2203 ! IMPLICIT OUTPUTS:
2204 !
2205 ! NONE
2206 !
2207 ! ROUTINE VALUE:
2208 !
2209 ! NONE
2210 !
2211 ! SIDE EFFECTS
2212 !
2213 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
2214 !
2215 !--
2216
2217 BEGIN
2218
2219 BIND
2220 ROUTINE_NAME = UPLIT (%ASCIZ'READ-TSK$DF');
2221
2222 MAP
2223 FILE_PTR : REF FILE_BLOCK,
2224 VALUES : REF VNPVAL_BLOCK;
2225
2226 LOCAL
2227 SCAN_DONE,
2228 SEARCH_DONE,
2229 RESULT : VECTOR [20],
2230 VAL_POINTER,
2231 CHAR,
2232 STR_PTR,
2233 TSKB_PTR : REF VNPTSK_BLOCK;
2234
2235 !
2236 ! ALLOCATE AN VNPTSK BLOCK AND LINK IT IN WITH OTHERS
2237 !
2238
2239 IF ((TSKB_PTR = GETBLK (VNPTSK_TYP, VNPTSK_LEN)) EQL 0)
2240 THEN
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
2241 ERRMSG (0, 1, ROUTINE_NAME, 0, 0, 0, 0)
2242 ELSE
2243
2244 IF ((VALUES [TSK_CHAIN] = BLD_CHAIN (.VALUES, .VALUES [TSK_CHAIN], .TSKB_PTR)) EQL 0)
2245 THEN
2246 ERRMSG (0,
2247 1, ROUTINE_NAME, 0, 0, 0, 0)
2248 ELSE
2249 BEGIN
2250 !
2251 ! SCAN EACH ARGUMENT OF PSW$DF AND PUT INTO VALUES ARRAY
2252 !
2253 VAL_POINTER = 1;
2254 SCAN_DONE = 0;
2255
2256 WHILE (.SCAN_DONE EQL 0) DO
2257 BEGIN
2258
2259 CASE .VAL_POINTER FROM 1 TO 2 OF
2260 SET
2261
2262 [1] : !MAIN TASK NAME
2263 BEGIN
2264 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
2265
2266 IF (.RESULT [RESULT_TYPE] NEQ RT_SPECIAL)
2267 THEN
2268 ERRMSG (0, 24, ROUTINE_NAME,
2269 FILE_PTR [FILE_NAME], 0, 0, 0)
2270 ELSE
2271 BEGIN
2272 STR_PTR = 0;
2273
2274 WHILE (.STR_PTR LSS LEN_TSK_NAME) DO
2275 BEGIN
2276 CHAR = INPUT (.FILE_CHAN);
2277
2278 IF (CLASS (.CHAR) EQL RT_SPECIAL) THEN EXITLOOP;
2279
2280 CH$WCHAR (.CHAR, CH$PTR (TSKB_PTR [TSK_NAME], .STR_PTR));
2281 STR_PTR = .STR_PTR + 1;
2282 END;
2283
2284 IF (.STR_PTR EQL 0) THEN CH$WCHAR (0, CH$PTR (TSKB_PTR [TSK_NAME], 0));
2285
2286 END;
2287
2288 END;
2289
2290 [2] : !LOADABLE DRIVER NAME
2291 BEGIN
2292 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
2293
2294 IF (.RESULT [RESULT_TYPE] NEQ RT_SPECIAL)
2295 THEN
2296 ERRMSG (0, 24, ROUTINE_NAME,
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
2297 FILE_PTR [FILE_NAME], 0, 0, 0)
2298 ELSE
2299 BEGIN
2300 STR_PTR = 0;
2301
2302 WHILE (.STR_PTR LSS LEN_TSK_NAME) DO
2303 BEGIN
2304 CHAR = INPUT (.FILE_CHAN);
2305
2306 IF (CLASS (.CHAR) EQL RT_SPECIAL) THEN EXITLOOP;
2307
2308 CH$WCHAR (.CHAR, CH$PTR (TSKB_PTR [DRIVER_NAME], .STR_PTR));
2309 STR_PTR = .STR_PTR + 1;
2310 END;
2311
2312 IF (.STR_PTR EQL 0) THEN CH$WCHAR (0, CH$PTR (TSKB_PTR [DRIVER_NAME], 0));
2313
2314 END;
2315
2316 END;
2317 TES;
2318
2319 !
2320 ! SCAN FOR THE NEXT COMMA
2321 !
2322 SEARCH_DONE = 0;
2323
2324 WHILE (.SEARCH_DONE EQL 0) DO
2325 BEGIN
2326 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
2327
2328 IF (.RESULT [RESULT_TYPE] EQL RT_SPECIAL)
2329 THEN
2330
2331 IF (.RESULT [RESULT_VALUE] LSS 0)
2332 THEN
2333 SEARCH_DONE = -1
2334 ELSE
2335
2336 IF (.RESULT [RESULT_VALUE] EQL %C',') THEN SEARCH_DONE = 1;
2337
2338 END;
2339
2340 IF (.SEARCH_DONE LSS 0) THEN SCAN_DONE = .SEARCH_DONE;
2341
2342 VAL_POINTER = .VAL_POINTER + 1;
2343 END;
2344
2345 END;
2346
2347 !
2348 ! FINISHED WITH TSK$DF, SKIP TO END OF LINE
2349 !
2350
2351 IF (.SCAN_DONE GTR 0)
2352 THEN
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
2353
2354 DO
2355 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
2356 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
2357
2358 END; !OF R_TSK
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
2359 ROUTINE R_PAR (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ PAR$DF LINE
2360
2361 !++
2362 ! FUNCTIONAL DESCRIPTION:
2363 !
2364 ! READ AND PROCESS THE PAR$DF LINE OF CETAB.MAC
2365 !
2366 ! FORMAL PARAMETERS:
2367 !
2368 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
2369 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
2370 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
2371 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
2372 !
2373 ! IMPLICIT INPUTS:
2374 !
2375 ! NONE
2376 !
2377 ! IMPLICIT OUTPUTS:
2378 !
2379 ! NONE
2380 !
2381 ! ROUTINE VALUE:
2382 !
2383 ! NONE
2384 !
2385 ! SIDE EFFECTS
2386 !
2387 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
2388 !
2389 !--
2390
2391 BEGIN
2392
2393 BIND
2394 ROUTINE_NAME = UPLIT (%ASCIZ'READ-PAR$DF');
2395
2396 MAP
2397 FILE_PTR : REF FILE_BLOCK,
2398 VALUES : REF VNPVAL_BLOCK;
2399
2400 LOCAL
2401 RESULT : VECTOR [20],
2402 COMMA_COUNT,
2403 SCAN_DONE;
2404
2405 !
2406 ! WE ONLY WANT THE FUDGE FACTOR FROM THIS LINE; IT WILL FOLLOW
2407 ! THE SECOND COMMA.
2408 !
2409 COMMA_COUNT = 0;
2410 SCAN_DONE = 0;
2411
2412 DO
2413 BEGIN
2414 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
2415
2416 IF (.RESULT [RESULT_TYPE] EQL RT_SPECIAL)
2417 THEN
2418 BEGIN
2419
2420 IF (.RESULT [RESULT_VALUE] EQL %C',')
2421 THEN
2422 BEGIN
2423 COMMA_COUNT = .COMMA_COUNT + 1;
2424
2425 IF (.COMMA_COUNT EQL 2)
2426 THEN
2427 BEGIN
2428 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT);
2429
2430 IF (.RESULT [RESULT_TYPE] NEQ RT_NUMBER)
2431 THEN
2432 ERRMSG (0, 24, ROUTINE_NAME,
2433 FILE_PTR [FILE_NAME], 0, 0, 0)
2434 ELSE
2435 VALUES [FUDGE] = .RESULT [RESULT_VALUE];
2436
2437 SCAN_DONE = 1;
2438 END
2439
2440 END
2441 ELSE
2442
2443 IF (.RESULT [RESULT_VALUE] LSS 0)
2444 THEN
2445 BEGIN
2446 ERRMSG (0, 24, ROUTINE_NAME, FILE_PTR [FILE_NAME], 0, 0, 0);
2447 SCAN_DONE = -1;
2448 END;
2449
2450 END
2451
2452 END
2453 UNTIL (.SCAN_DONE NEQ 0);
2454
2455 !
2456 ! FINISHED WITH PAR$DF, SKIP TO END OF LINE
2457 !
2458
2459 IF (.SCAN_DONE GTR 0)
2460 THEN
2461
2462 DO
2463 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
2464 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
2465
2466 END; !OF R_PAR
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
2467 ROUTINE R_END (FILE_CHAN, FILE_PTR, SAVE_CHAR, VALUES) : NOVALUE = !READ END$DF LINE
2468
2469 !++
2470 ! FUNCTIONAL DESCRIPTION:
2471 !
2472 ! READ AND PROCESS THE END$DF LINE OF CETAB.MAC
2473 !
2474 ! FORMAL PARAMETERS:
2475 !
2476 ! FILE_CHAN - CHANNEL NUMBER ON WHICH TO READ
2477 ! FILE_PTR - FILE BLOCK WITH FILE NAME FILLED IN
2478 ! SAVE_CHAR - ADDRESS OF CHARACTER SAVED FROM LAST CALL TO SCAN
2479 ! VALUES - BLOCK INTO WHICH TO STORE RESULTS
2480 !
2481 ! IMPLICIT INPUTS:
2482 !
2483 ! NONE
2484 !
2485 ! IMPLICIT OUTPUTS:
2486 !
2487 ! NONE
2488 !
2489 ! ROUTINE VALUE:
2490 !
2491 ! NONE
2492 !
2493 ! SIDE EFFECTS
2494 !
2495 ! READS THE REMAINDER OF THE LINE FROM CETAB.MAC
2496 !
2497 !--
2498
2499 BEGIN
2500
2501 BIND
2502 ROUTINE_NAME = UPLIT (%ASCIZ'READ-END$DF');
2503
2504 MAP
2505 FILE_PTR : REF FILE_BLOCK,
2506 VALUES : REF VNPVAL_BLOCK;
2507
2508 LOCAL
2509 RESULT : VECTOR [20],
2510 VAL_POINTER;
2511
2512 !
2513 ! THERE ARE NO PARAMETERS ON THIS LINE
2514 !
2515 !
2516 ! FINISHED WITH END$DF, SKIP TO END OF LINE
2517 !
2518
2519 DO
2520 SCAN (.FILE_CHAN, .FILE_PTR, .SAVE_CHAR, RESULT)
2521 UNTIL ((.RESULT [RESULT_TYPE] EQL RT_SPECIAL) AND (.RESULT [RESULT_VALUE] LSS 0));
2522
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
2523 END; !OF R_END
2524 END
2525
2526 ELUDOM
2527 ! Local Modes:
2528 ! Comment Column:36
2529 ! Comment Start:!
2530 ! Mode:Fundamental
2531 ! Auto Save Mode:2
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
BLD_CHAIN 142 837 1043 1195 1380 1521 1671
1855 2244
CCBNM 672
CCBSZ 675
CH$WCHAR 2108 2112 2136 2140 2280 2284 2308
2312
CHAR 353 387 476 486# 488 494# 496
497# 499 509 519 520# 522 525
536 537 538# 540 542 551 559
2075 2104# 2106 2108 2132# 2134 2136
2231 2276# 2278 2280 2304# 2306 2308
CLASS 69 353* 509 522 540 2106 2134
2278 2306
CLOSE 139 340
CNT_BLOCK 1651 1834
CNT_CONT 1695
CNT_CSR 1719
CNT_DDM 1773
CNT_LEN 1666
CNT_NUM_OF_UNTS 1861
CNT_PRIORITY 1731
CNT_PTR 1651 1666# 1671 1695# 1707# 1719# 1731#
1773# 1777 1834 1845# 1855# 1861# 1959
CNT_TYP 1666
CNT_UNT 1855
CNT_VECTOR 1707
COMMA_COUNT 2402 2409# 2423# 2425
CURRENT_CNT 1777 1845
CURRENT_DDM 1595 1661 1844
CURRENT_SLT 965 1032
DDM_BLOCK 1506 1652 1835
DDM_CHAIN 1521
DDM_CNT 1671
DDM_LEN 1516
DDM_NAME 1545
DDM_PTR 1506 1516# 1521 1545 1595 1652 1661#
1671# 1773 1835 1844# 1958
DDM_TYP 1516
DECIMAL_NUM 478 532# 537# 545
DLC_BLOCK 1365
DLC_CHAIN 1380
DLC_LEN 1375
DLC_NAME 1404
DLC_PTR 1365 1375# 1380 1404
DLC_TYP 1375
DRIVER_NAME 2308 2312
ERRMSG 145 248 276 292 321 663 705
834 839 862 874 886 902 914
927 1040 1045 1069 1081 1090 1192
1197 1222 1242 1254 1266 1275 1377
1382 1401 1418 1518 1523 1542 1559
1668 1673 1692 1704 1716 1728 1737
1852 1857 1877 1889 1901 1913 1922
2096 2124 2241 2246 2268 2296 2432
2446
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
ERROR 144 490
FILE_BLOCK 187 472 645 760 818 1017 1176
1361 1502 1647 1829 2010 2067 2223
2397 2505
FILE_CHAN 150 198 221 227 237 251 260
266 326 340 433 494 497 520
538 607 659 701 718 722 775
779 848 939 974 978 1055 1102
1133 1137 1208 1287 1318 1322 1391
1430 1459 1463 1532 1571 1604 1608
1682 1749 1786 1790 1867 1934 1968
1972 2025 2029 2092 2104 2120 2132
2154 2181 2185 2264 2276 2292 2304
2326 2355 2359 2414 2428 2463 2467
2520
FILE_NAME 198 248 276 292 321 663 705
863 875 887 903 915 927 1070
1082 1090 1223 1243 1255 1267 1275
1402 1418 1543 1559 1693 1705 1717
1729 1737 1878 1890 1902 1914 1922
2097 2125 2269 2297 2433 2446
FILE_PTR 150 187 198 221 227 237 248
251 260 266 276 292 321 326
433 472 607 645 659 663 701
705 718 722 760 775 779 818
848 863 875 887 903 915 927
939 974 978 1017 1055 1070 1082
1090 1102 1133 1137 1176 1208 1223
1243 1255 1267 1275 1287 1318 1322
1361 1391 1402 1418 1430 1459 1463
1502 1532 1543 1559 1571 1604 1608
1647 1682 1693 1705 1717 1729 1737
1749 1786 1790 1829 1867 1878 1890
1902 1914 1922 1934 1968 1972 2010
2025 2029 2067 2092 2097 2120 2125
2154 2181 2185 2223 2264 2269 2292
2297 2326 2355 2359 2397 2414 2428
2433 2446 2463 2467 2505 2520
FUDGE 2435
GETBLK 143 832 1038 1190 1375 1516 1666
1850 2239
INPUT 140 494 497 520 538 2104 2132
2276 2304
LEN_PASWRD 2102 2130
LEN_TSK_NAME 2274 2302
LLC_BLOCK 1180
LLC_CHAIN 212 1195
LLC_DEV 1269
LLC_LEN 1190
LLC_LLKNUM 1204 1257
LLC_NAME 1225
LLC_PLKNUM 1203 1245
LLC_PTR 1180 1190# 1195 1203# 1204# 1225 1245#
1257# 1269
LLC_TYP 1190
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
LOOK_DONE 191 217# 219 233# 242# 246 256#
258 277# 293# 322# 328#
NAME 192 284# 300
OCTAL_NUM 479 531# 536# 550
OPEN 138* 198
OUTNUM 147 578 588 595
OUTPUT 141 597
OUTSTR 148 206 346 577 579 585
PCRLF 146 205 345 576
RCET 68 150*
RCV_PASWRD 2108 2112
RDBNM 678
RDBSZ 681
RDBTH 690
RESULT 193 221 223 227 228 230 231
237 238 240 260 262 266 267
273 284 285 286 288 433 473
502# 503# 514# 515 530# 545# 550#
558# 559# 565# 566# 578 581 585
588 593 595 597 649 659 661
672 675 678 681 684 687 690
693 701 703 718 719 764 775
776 823 848 850 860 865 872
877 884 889 900 905 912 917
939 941 944 949 974 975 1023
1055 1057 1067 1072 1079 1084 1102
1104 1107 1112 1133 1134 1181 1208
1210 1220 1225 1240 1245 1252 1257
1264 1269 1287 1289 1292 1297 1318
1319 1366 1391 1399 1404 1430 1432
1435 1440 1459 1460 1507 1532 1540
1545 1571 1573 1576 1581 1604 1605
1653 1682 1690 1695 1702 1707 1714
1719 1726 1731 1749 1751 1754 1759
1786 1787 1836 1867 1875 1880 1887
1892 1899 1904 1911 1916 1934 1936
1939 1944 1968 1969 2014 2025 2026
2073 2092 2094 2120 2122 2154 2156
2159 2164 2181 2182 2229 2264 2266
2292 2294 2326 2328 2331 2336 2355
2356 2401 2414 2416 2420 2428 2430
2435 2443 2463 2464 2509 2520 2521
RESULT_TYPE 116# 223 228 230 238 240 262
267 273 502 514 530 558 565
578 581 661 703 719 776 850
860 872 884 900 912 941 975
1057 1067 1079 1104 1134 1210 1220
1240 1252 1264 1289 1319 1399 1432
1460 1540 1573 1605 1690 1702 1714
1726 1751 1787 1875 1887 1899 1911
1936 1969 2026 2094 2122 2156 2182
2266 2294 2328 2356 2416 2430 2464
2521
RESULT_VALUE 117# 223 228 231 238 240 262
267 284 285 286 288 503 515
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
545 550 559 566 585 588 593
595 597 672 675 678 681 684
687 690 693 703 719 776 850
865 877 889 905 917 944 949
975 1057 1072 1084 1107 1112 1134
1210 1225 1245 1257 1269 1292 1297
1319 1404 1435 1440 1460 1545 1576
1581 1605 1695 1707 1719 1731 1754
1759 1787 1880 1892 1904 1916 1939
1944 1969 2026 2159 2164 2182 2331
2336 2356 2420 2435 2443 2464 2521
ROUTINE_NAME 184# 248 276 292 321 385# 469#
642# 663 705 757# 815# 834 840
862 874 886 902 914 927 1014#
1040 1046 1069 1081 1090 1173# 1192
1198 1222 1242 1254 1266 1275 1358#
1377 1383 1401 1418 1499# 1518 1524
1542 1559 1644# 1668 1674 1692 1704
1716 1728 1737 1826# 1852 1858 1877
1889 1901 1913 1922 2007# 2064# 2096
2124 2220# 2241 2247 2268 2296 2394#
2432 2446 2502#
RTXT 4#
RT_NAME 124# 230 273 860 872 884 1079
1220 1264 1399 1540
RT_NUMBER 125# 661 900 912 1067 1240 1252
1690 1702 1714 1726 1875 1887 1899
1911 2430
RT_SPECIAL 126# 223 228 238 240 262 267
703 719 776 850 941 975 1057
1104 1134 1210 1289 1319 1432 1460
1573 1605 1751 1787 1936 1969 2026
2094 2106 2122 2134 2156 2182 2266
2278 2294 2306 2328 2356 2416 2464
2521
R_BUF 71 251 607*
R_CNT 78 302 1608*
R_DDM 77 309 1463*
R_DLC 76 308 1322*
R_END 84# 314 328 2467*
R_LLC 75 307 1137*
R_NOD 80 310 1972*
R_PAR 83 313 2359*
R_PDV 72 304 722*
R_PSW 81 311 2029*
R_SLT 73 305 779*
R_STA 74 306 978*
R_TSK 82 312 2185*
R_UNT 79 303 1790*
SAVE_CHAR 194 216# 221 227 237 251 260
266 326 433 486 504# 525# 546#
551# 560# 567# 607 659 701 718
722 775 779 848 939 974 978
1055 1102 1133 1137 1208 1287 1318
1322 1391 1430 1459 1463 1532 1571
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
1604 1608 1682 1749 1786 1790 1867
1934 1968 1972 2025 2029 2092 2120
2154 2181 2185 2264 2292 2326 2355
2359 2414 2428 2463 2467 2520
SCAN 70 221 227 237 260 266 433*
659 701 718 775 848 939 974
1055 1102 1133 1208 1287 1318 1391
1430 1459 1532 1571 1604 1682 1749
1786 1867 1934 1968 2025 2092 2120
2154 2181 2264 2292 2326 2355 2414
2428 2463 2520
SCAN_DONE 477 825 844# 846 928# 953# 970
1025 1050# 1053 1091# 1116# 1129 1183
1202# 1206 1276# 1301# 1314 1368 1387#
1389 1419# 1444# 1455 1509 1528# 1530
1560# 1585# 1600 1655 1678# 1680 1738#
1763# 1782 1838 1863# 1865 1923# 1948#
1964 2071 2082# 2084 2168# 2177 2227
2254# 2256 2340# 2351 2403 2410# 2437#
2447# 2453 2459
SCAN_POINTER 480 515# 519 524
SDBNM 684
SDBSZ 687
SEARCH_DONE 826 935# 937 946# 949# 953 1026
1098# 1100 1109# 1112# 1116 1184 1283#
1285 1294# 1297# 1301 1369 1426# 1428
1437# 1440# 1444 1510 1567# 1569 1578#
1581# 1585 1656 1745# 1747 1756# 1759#
1763 1839 1930# 1932 1941# 1944# 1948
2072 2150# 2152 2161# 2164# 2168 2228
2322# 2324 2333# 2336# 2340
SLT_BLOCK 822 1022
SLT_CHAIN 837
SLT_CONT 905
SLT_DDM 865
SLT_DLC 877
SLT_LEN 832
SLT_LLC 889
SLT_NUM_OF_STA 1051
SLT_PTR 822 832# 837 865 877 889 905#
917# 965 1022 1032# 1043# 1051#
SLT_STA 1043
SLT_TYP 832
SLT_UNIT 917
STA_BLOCK 1021
STA_LEN 1038
STA_LLC 1084
STA_NUM 1072
STA_PTR 1021 1038# 1043 1072# 1084
STA_TYP 1038
STR_PTR 2076 2100# 2102 2108 2109# 2112 2128#
2130 2136 2137# 2140 2232 2272# 2274
2280 2281# 2284 2300# 2302 2308 2309#
2312
SUBR 195 300# 318 326 328
DSK:RTXT.XRF[4,31] 31-Aug-79 15:00
TSKB_PTR 2233 2239# 2244 2280 2284 2308 2312
TSK_CHAIN 2244
TSK_NAME 2280 2284
UNT_BLOCK 1833
UNT_CNT 1959
UNT_DDM 1958
UNT_LEN 1850
UNT_PARM 1904
UNT_PARMSK 1892
UNT_PTR 1833 1850# 1855 1880# 1892# 1904# 1916#
1958# 1959#
UNT_SECCSR 1916
UNT_TYP 1850
UNT_UNIT 1880
VALUES 150 188 212# 251 326 607 646
672# 675# 678# 681# 684# 687# 690#
693# 722 761 779 819 837# 965#
978 1018 1032 1137 1177 1195# 1322
1362 1380# 1463 1503 1521# 1595# 1608
1648 1661 1777# 1790 1830 1844 1845
1972 2011 2029 2068 2108 2112 2136
2140 2185 2224 2244# 2359 2398 2435#
2467 2506
VAL_POINTER 196 650 655# 657 668 696# 698
765 824 843# 854 957# 1024 1049#
1061 1120# 1182 1201# 1214 1305# 1367
1386# 1393 1446# 1508 1527# 1534 1587#
1654 1677# 1684 1765# 1837 1862# 1869
1950# 2015 2074 2081# 2087 2170# 2230
2253# 2259 2342# 2510
VNPTSK_BLOCK 2233
VNPTSK_LEN 2239
VNPTSK_TYP 2239
VNPVAL_BLOCK 188 646 761 819 1018 1177 1362
1503 1648 1830 2011 2068 2224 2398
2506
XMTBF 693
XMT_PASWRD 2136 2140