User Tools

Site Tools


cdc:nos2.source:nam5871:ndlnfcm

NDLNFCM

Table Of Contents

  • [00008] PROC NDLNFCM
  • [00012] NDL$COM - CHECKS COMMUNICATION ELEMENT STATEMENTS
  • [00059] PROC LFGCKSM
  • [00060] PROC SSTATS
  • [00061] PROC READW
  • [00062] PROC NDLTRNK
  • [00063] PROC NDLEM2
  • [00064] PROC NDLWLCR
  • [00065] PROC NDLWNCF
  • [00405] PROC C$USR$PRM1(PARAM$USED,CLR$WRD)
  • [00446] PROC C$USR$PRM2(PARAM$VAL,CLR$WRD)
  • [00486] PROC DEVPR
  • [00490] DEVPR - DEVICE STATEMENT PROC.
  • [00584] PROC NDLEM2
  • [00585] FUNC XCHD C(10)
  • [00779] PROC CHCONTRL(CHKWID,CHLNUM,STAT,VALUE)
  • [00863] PROC ASYDEV
  • [00867] ASYDEV - CHECK ASYNC DEVICE PARAMRTERS.
  • [00918] PROC NDLEM2
  • [01250] PROC BSCDEV
  • [01254] BSCDEV - CHECK BISYNC DEVICE PARAMETER.
  • [01360] PROC NDLEM2
  • [01361] FUNC XCDD C(10)
  • [01735] PROC BTCHDEV(BDWORD,BDLNUM)
  • [01739] BTCHDEV - CHECK BATCH DEVICE PARAMETERS.
  • [01813] PROC NDLCKRG
  • [01814] PROC NDLEM2
  • [02064] PROC CONDEV(CDWORD,CDLNUM)
  • [02068] CONDEV - CHECK DEVICE STATEMENT CONSOLE PARAMETERS.
  • [02127] PROC NDLCKRG
  • [02128] PROC NDLEM2
  • [02129] FUNC XCDD C(10)
  • [02329] PROC T$GROUP(TKWID)
  • [02730] PROC COUNT$LK
  • [02800] PROC DEVFNFV(FN$VAL,FV$VAL)
  • [02804] DEVFNFV - STORE FNFV PAIR IN DEVICE ENTRY.
  • [02945] PROC FLOWDEV(FDWORD,FDLNUM)
  • [02949] FLOWDEV - CHECK FLOW CONTROL PARAMETERS ON DEVICE STMT.
  • [03017] PROC NDLCKRG
  • [03018] PROC NDLEM2
  • [03019] FUNC XCDD C(10)
  • [03020] FUNC XCHD C(10)
  • [03350] PROC GENDEV(GDWORD,GDLNUM)
  • [03354] GENDEV - CHECKS GENERAL PARAMETERS ON THE DEVICE STMT.
  • [03416] PROC NDLCKRG
  • [03417] FUNC XCDD C(10)
  • [03638] PROC HSPDEV
  • [03642] HSPDEV - CHECK DEVICE STATEMENT FOR PARAMETERS LEGAL FOR HASP TIP.
  • [03734] PROC NDLEM2
  • [03735] FUNC XCDD C(10)
  • [04080] PROC MBDEV(MBWORD,MBLNUM)
  • [04084] MBDEV - CHECK MODE4/BSC PARAMETER FOR DEVICE STATEMENT.
  • [04165] PROC NDLEM2
  • [04166] FUNC XCHD C(10)
  • [04292] PROC MD4DEV
  • [04296] MD4DEV - CHECK DEVICE STATEMENT PARAMETERS LEGAL FOR MODE4.
  • [04416] PROC NDLEM2
  • [04417] FUNC XCDD C(10)
  • [04924] PROC USRDEV
  • [04927] USERDEV - CHECK DEVICE STATEMENT PARAMETERS FOR USER TIP.
  • [05112] PROC X25DEV
  • [05116] X25DEV - CHECK DEVICE STATEMENT PARAMETERS LEGAL FOR X.25
  • [05161] PROC NDLEM2
  • [05409] PROC $3270DEV
  • [05413] $3270DEV - CHECK DEVICE STATEMENT PARAMETERS LEGAL FOR 3270.
  • [05484] PROC NDLEM2
  • [05485] FUNC XCDD C(10)
  • [06086] PROC LINFNFV(FN,FV)
  • [06090] LINFNFV - MAKE FNFV ENTRY FOR LINE.
  • [06123] PROC LINGRPR
  • [06127] LINGRPR - LINE/GROUP STATEMENT PROC
  • [06238] PROC NDLEM2
  • [06419] PROC GENLINE
  • [06423] GENLINE - CHECK GENERAL LINE PARAMETERS.
  • [06484] PROC NDLCKPT
  • [06485] PROC NDLCKRG
  • [06720] PROC X25LINE
  • [06724] X25LINE - CHECK X.25 LINE PARAMETERS
  • [06772] PROC NDLCKRG
  • [06773] FUNC XCDD U
  • [07445] PROC TERMPR
  • [07449] TERMPR - TERMINAL STATEMENT PROC.
  • [07547] PROC NDLEM2
  • [07889] PROC ASYTERM
  • [07928] PROC NDLEM2
  • [08072] PROC ATRMPRM(ASY$ID,ASY$WORD,ASY$LINE)
  • [08120] PROC NDLEM2
  • [08208] PROC BSCTERM
  • [08256] PROC NDLEM2
  • [08401] PROC BTRMPRM(BTRM$ID,BTRM$WORD,BTRM$LINE)
  • [08449] PROC NDLCKRG
  • [08504] PROC GENTERM(GTRM$ID,GTRM$WORD,GTRM$LINE)
  • [08569] PROC NDLEM2
  • [08733] PROC HBTRMPR(HBTRM$ID,HBTRM$WORD,HBTRM$LINE)
  • [08780] PROC NDLCKRG
  • [08781] PROC NDLEM2
  • [08825] PROC HSPTERM
  • [08864] PROC NDLEM2
  • [08997] PROC MD4TERM
  • [09036] PROC NDLEM2
  • [09167] PROC MTRMPRM(MTRM$ID,MTRM$WORD,MTRM$LINE)
  • [09216] PROC NDLCKRG
  • [09217] PROC NDLEM2
  • [09218] FUNC XCHD
  • [09306] PROC USRTERM
  • [09477] PROC XTRMPRM(XTRM$ID,XTRM$WORD,XTRM$LINE)
  • [09550] PROC NDLCKRG
  • [09551] PROC NDLEM2
  • [09778] PROC X25TERM
  • [09832] PROC NDLEM2
  • [10007] PROC $3270TRM
  • [10044] PROC NDLEM2
  • [10448] PROC USR$RANGE(UVALNUM,U$RANGE,UMODE,USTAT)
  • [10485] FUNC XCDD C(10)
  • [10486] FUNC XCHD C(10)

Source Code

NDLNFCM.txt
  1. *DECK NDLNFCM
  2. USETEXT NDLDATT
  3. USETEXT NDLER2T
  4. USETEXT NDLFETT
  5. USETEXT NDLNCFT
  6. USETEXT NDLPS2T
  7. USETEXT NDLTBLT
  8. PROC NDLNFCM;
  9. BEGIN
  10. *IF,DEF,IMS
  11. #
  12. ** NDL$COM - CHECKS COMMUNICATION ELEMENT STATEMENTS
  13. *
  14. * D.K. ENDO 81/10/12
  15. *
  16. * THIS PROCEDURE CALLS THE APPROPRIATE PROCEDURE TO CHECK A
  17. * PARTICULAR COMMUNICATION ELEMENT STATEMENT.
  18. *
  19. * PROC NDL$COM
  20. *
  21. * ENTRY NONE.
  22. *
  23. * EXIT NONE.
  24. *
  25. * METHOD
  26. *
  27. * FOR EACH STATEMENT TABLE
  28. * SELECT THE CASE THAT APPLIES,
  29. * CASE 1 (LINE STMT):
  30. * IF A LINE RECORD EXISTS,
  31. * WRITE LINE RECORD TO NCF.
  32. * IF A LINE CONFIG ENTRY EXISTS,
  33. * IF THE LINE IS AN X.25 LINE,
  34. * PUT PVC COUNT IN LINE CONFIG ENTRY.
  35. * WRITE ENTRY TO LINE CONFIG FILE.
  36. * CALL PROC THAT CHECK LINE AND GROUP STATEMENTS.
  37. * CASE 2 (TERMINAL STMT):
  38. * CALL PROCEDURE THAT CHECKS TERMINAL STMTS.
  39. * CASE 3 (DEVICE STMT):
  40. * CALL PROCEDURE THAT CHECKS DEVICE STMTS.
  41. * CASE 4 (TRUNK STMT):
  42. * CALL PROCEDURE THAT CHECKS TRUNK STMTS.
  43. * CASE 5 (NETWORK ELEMENT STMT OR EOF):
  44. * IF A LINE RECORD EXISTS,
  45. * WRITE LINE RECORD TO NCF.
  46. * IF A LINE CONFIG ENTRY EXISTS,
  47. * IF LINE IS AN X.25 LINE,
  48. * PUT PVC COUNT IN LINE ENTRY.
  49. * WRITE ENTRY TO LINE CONFIG FILE.
  50. * EXIT NDL$COM.
  51. *
  52. #
  53. *ENDIF
  54. #
  55. **** PROC NDLNFCM - XREF LIST BEGIN.
  56. #
  57. XREF
  58. BEGIN
  59. PROC LFGCKSM; # CALCULATES CHECK SUM OF GIVEN TABLE #
  60. PROC SSTATS; # ALLOCATES MORE TABLE SPACE ON REQUEST #
  61. PROC READW; # READS GIVEN NUM OF WORD FROM FILE #
  62. PROC NDLTRNK; # PROCESSES TRUNK STATEMENT ENTRY #
  63. PROC NDLEM2; # PASS 2 ERROR MESSAGE. #
  64. PROC NDLWLCR; # WRITES LINE CONFIGURE INFO TO FILE #
  65. PROC NDLWNCF; # WRITES TABLES/RECORDS TO NCF #
  66. END
  67. #
  68. ****
  69. #
  70. DEF CON$MX$M4A # 1 #; # MAX NUMBER OC CONSOLES FOR M4A DEV #
  71. DEF CR$MAX$M4A # 1 #; # MAXIMUM NUMBER OF CR-S FOR M4A DEVICES #
  72. DEF DEV$MX$M4A # 3 #; # MAXIMUM NUMBER OF M4A DEVICES ALLOWED #
  73. DEF DT7$MX$M4A # 3 #; # MAXIMUM NUMBER OF USER DT-S FOR M4A #
  74. DEF LP$MAX$M4A # 1 #; # MAXIMUM NUMBER OF LP-S FOR M4A DEVICES #
  75. DEF SYNAUTO # 6 #; # NUMERIC VALUE FOR SYNAUTO TIPTYPE #
  76. DEF USR$WID1 # 255 #; # UPPER LIMIT OF FVAL ALLOWD BY A BYTE #
  77. DEF USR$WID2 # 65535 #; # UPPER LIMIT OF FVAL ALLOWE BY TWO #
  78. DEF MPW$2780$LP # 50 #; # MINIMUM PAGE WIDTH FOR LP OF 2780 #
  79. DEF MXPW$2780$LP # 150 #; # MAXIMUM PAGE WIDTH FOR LP OF 2780 #
  80. STATUS NUM ERR, # ERROR MODE FOR NUMBER #
  81. DEC, # DECIMAL #
  82. HEX; # HEXIDECIMAL #
  83. # BYTES #
  84. STATUS CSET UNKNOWN, # STATUS LIST FOR CODE SET #
  85. BCD,
  86. ASCII,
  87. APLTP,
  88. APLBP,
  89. EBCD,
  90. EBCDAPL,
  91. CORRES,
  92. CORAPL,
  93. EBCDIC,
  94. ,,,,,
  95. USER;
  96. STATUS CTYP SVC, # STATUS LIST FOR CIRCUIT TYPE #
  97. PVC,
  98. UNKNOWN;
  99. STATUS DT UNKNOWN, # STATUS LIST FOR DEVICE TYPE #
  100. CON,
  101. CR,
  102. LP,
  103. CP,
  104. PL,
  105. AP,
  106. USER;
  107. STATUS FN UNKNOWN , AL , # 0 #
  108. LSPEED , RCOUNT ,
  109. FRAME , ,
  110. PVC , DCE ,
  111. PSN , ,
  112. SVC , LCN , # 10 #
  113. RTIME , ,
  114. DFL , PL$W ,
  115. DTEA , IMD ,
  116. RC , ,
  117. HN , , # 20 #
  118. AUTOCON , PRI ,
  119. UBL , UBZ ,
  120. ABL , DBL ,
  121. DBZ$MSB , DBZ$LSB ,
  122. XBZ$MSB , XBZ$LSB , # 30 #
  123. LK , ,
  124. TC , PW ,
  125. PL , PG ,
  126. CN , BS ,
  127. CT , AB , # 40 #
  128. B1 , B2 ,
  129. CI , LI ,
  130. , ,
  131. SE , EP ,
  132. PA , BR , # 50 #
  133. CSET , IN ,
  134. OP , FA ,
  135. , DLC$MSB ,
  136. DLC$LSB , DLX ,
  137. DLTO , ELX , # 60 #
  138. ELO , ELR ,
  139. EBX , EBO ,
  140. EBR , IC ,
  141. OC , XLY ,
  142. , CP , # 70 #
  143. W , CTYP ,
  144. NCIR , NEN ,
  145. SDT , RIC ,
  146. BCF , MREC ,
  147. DO$ , , # 80 #
  148. , ,
  149. , ,
  150. , ,
  151. COLLECT , ,
  152. P90 , P91 , # 90 #
  153. P92 , P93 ,
  154. P94 , P95 ,
  155. P96 , P97 ,
  156. P98 , P99 ,
  157. , , # 100 #
  158. MC , ,
  159. , ,
  160. , ,
  161. , ,
  162. , EOF , # 110 #
  163. PAD , ,
  164. , ,
  165. , ,
  166. , ,
  167. , , # 120 #
  168. , ,
  169. , ,
  170. , ,
  171. , ,
  172. , , # 130 #
  173. , ,
  174. , ,
  175. , ,
  176. , ,
  177. , , # 140 #
  178. , ,
  179. , RTS ,
  180. , MCI ,
  181. MLI ;
  182. STATUS LSPD UNKNOWN, # STATUS LIST FOR LINE SPEED #
  183. $110,
  184. $134,
  185. $150,
  186. $300,
  187. $600,
  188. $1200,
  189. $2400,
  190. $4800,
  191. $9600,
  192. $19200,
  193. $38400;
  194. STATUS STIP UNKNOWN, # STATUS LIST FOR SUB-TIP #
  195. M4A,
  196. M4C,
  197. $2741,
  198. N2741,
  199. POST,
  200. PRE,
  201. PAD,
  202. USER,
  203. XAA,
  204. $2780,
  205. $3780;
  206. STATUS TC UNKNOWN, # STATUS LIST FOR TERMINAL CLASS #
  207. M33,
  208. $713,
  209. $721,
  210. $2741,
  211. M40,
  212. H2000,
  213. $751,
  214. T4014,
  215. HASP,
  216. $200UT,
  217. $714X,
  218. $711,
  219. $714,
  220. HPRE,
  221. $734,
  222. $2780,
  223. $3780,
  224. $752,
  225. X364,
  226. $3270,
  227. USER;
  228. STATUS TIP UNKNOWN, # UNKNOWN #
  229. ASYNC ,
  230. MODE4 ,
  231. HASP ,
  232. X25 ,
  233. BSC ,
  234. $3270 ,
  235. USER ;
  236. ITEM AUTO$REC B; # FLAG SET IF AUTO OR XAUTO REC LINE #
  237. ITEM XAUTO$REC B; # FLAG SET IF XAUTO REC LINE #
  238. ITEM BCF$FLAG B; # BCF INDICATOR #
  239. ITEM CA$MAP; # BIT MAP USED TO CHECK UNIQUENESS OF CA #
  240. ITEM CKSUM; # TEMPORARY FOR CHECK SUM VALUE #
  241. ITEM COLLECT$FLAG B;
  242. ITEM COLLECT$USED B;
  243. ITEM COM$ELMT B; # INDICATES STAT ENTRY IS A COMMUNIC ELEMT#
  244. ITEM CP$PL$MAP; # USED TO CHECK FOR DUPLICATE STREAM #
  245. ITEM CRNT$CSET; # CURRENT CODE SET #
  246. ITEM CRNT$CTYP; # CURRENT CIRCUIT TYPE #
  247. ITEM CTYP$USED B; # BOOLEAN TO SEE IF CTYP IS USED #
  248. ITEM W$USED B; # BOOLEAN TO SEE IF W IS USED #
  249. ITEM NCIR$USED B; # BOOLEAN TO SEE IF NCIR USED #
  250. ITEM NEN$USED B; # BOOLEAN TO SEE IF NEN IS USED #
  251. ITEM CRNT$DEV; # POINTER TO CURRENT DEVICE ENTRY #
  252. ITEM CRNT$LSPD; # CURRENT LINE SPEED #
  253. ITEM CRNT$MREC; # CURRENT MREC VALUE #
  254. ITEM CRNT$NCIR; # CURRENT NUMBER OF CIRCUITS #
  255. ITEM CRNT$EOF B; # CURRENT EOF FLAG ON TERMINAL STATEMENT #
  256. ITEM EOF$USED B; # FLAG TO SHOW IF EOF IS SPECIFIED #
  257. ITEM CRNT$NEN; # CURRENT NUMBER OF CIRCUITS ENABLED #
  258. ITEM CRNT$STIP; # CURRENT SUB-TIP #
  259. ITEM CRNT$TC; # CURRENT TERMINAL CLASS #
  260. ITEM CRNT$TERM; # POINTER TO CURRENT TERMINAL IN LINE REC #
  261. ITEM CRNT$TIP; # CURRENT TIPTYPE #
  262. ITEM CRNT$TSPD; # CURRENT TSPEED VALUE #
  263. ITEM CRNT$W; # CURRENT -W- VALUE #
  264. ITEM CRNT$DEPAD; # NUMBER OF 8-BIT PAD ENTRIES FOR DEVICE #
  265. ITEM CRNT$DEPADW; # NUMBER OF WORDS NEEDED FOR PAD ENTRIES #
  266. ITEM DEVCNT; # CRNT NUMBER OF DEVICES DEFINED ON TERM #
  267. ITEM I; # SCRATCH ITEM #
  268. ITEM LCR$EXIST B; # INDICATES LINE CONFIGURE RECORD EXISTS #
  269. ITEM LENGTH; # LENGTH OF RECORD/TABLE TO BE WRITTEN #
  270. ITEM LR$EXIST B; # INDICATES A LINE RECORD EXISTS #
  271. ITEM LTYPE C(10); # CURRENT LINE TYPE CATEGORY #
  272. ITEM MAXDEV; # MAXIMUM NUMBER DEV STMTS FOR THIS TERM #
  273. ITEM MAXTERM; # MAXIMUM NUMBER OF TERM STMTS FOR LINE #
  274. ITEM NSVCERR B; # FLAG SET IF NSVC VALUE IS IN ERROR #
  275. ITEM NWDS16; # NUMBER OF 16 BIT WORDS #
  276. ITEM PVC$CNT; # PVC COUNT #
  277. ITEM RIC$FLAG B; # RESTRICTED INTERACTIVE CAPABILITY FLAG #
  278. ITEM SVC$CNT; # NSVC PARAMETER VALUE #
  279. ITEM XTERMASK; # MASK FOR TERMINALS PER X.25 STIP #
  280. ITEM SVC$SPEC B; # SVC SPECIFIED FLAG #
  281. ITEM TA$MAP; # BIT MAP USED TO CHECK UNIQUENESS OF TA #
  282. ITEM TERMCNT; # CRNT NUMBER OF TERMINALS DEFINED ON LINE#
  283. ITEM TT$USED B; # TIPTYPE SPECIFIED FLAG #
  284. ITEM VALUE; # INTEGER TEMPORARY #
  285. ARRAY CRNT$PADVAL [1:MAXPADW] S(1);
  286. BEGIN # PAD VALUE ARRAY FOR TERMINAL #
  287. ITEM CRNT$PAD (0,0,60);
  288. END
  289. DEF MXDT # 7 #; # MAXIMUM DEVICE TYPE #
  290. ARRAY DO$USED$MAP [1:MXDT] S(1);
  291. BEGIN
  292. ITEM DO$MAP (0,0,60);
  293. END
  294. ARRAY DT$COUNT$TAB [1:MXDT] S(2); # DEVICE TYPE COUNT TABLE #
  295. BEGIN
  296. ITEM DT$CNT (0,0,60);# DEVICE TYPE COUNT #
  297. ITEM DT$MAX (1,0,60);# MAXIMUM NUMBER OF DT ALLOWED #
  298. END
  299. ARRAY FIRST$DT$TAB [1:MXDT] S(1);
  300. BEGIN
  301. ITEM FIRST$DT B(0,0,60); # INDICATES IF 1ST DT IS SENSED #
  302. END
  303. DEF MXTIP # 8 #; # MAXIMUM NUMBER OF TIPTYPE-S #
  304. ARRAY TERMDEV$CNT [0:MXTIP] S(9);
  305. BEGIN
  306. ITEM TRM$MAX (0,0,60) = [255, # UNKNOWN #
  307. 1, # ASYNC #
  308. 16, # MODE4 #
  309. 1, # HASP #
  310. 255, # X25 #
  311. 1, # BSC #
  312. 32, # 3270 #
  313. 255 # USER #
  314. ];
  315. ITEM DEV$MAX (1,0,60) = [255, # UNKNOWN #
  316. 1, # ASYNC #
  317. 15, # MODE4 (M4C) #
  318. 22, # HASP #
  319. 1, # X25 #
  320. 4, # BSC #
  321. 32, # 3270 #
  322. 255 # USER #
  323. ];
  324. ITEM LP$MAX (2,0,60) = [255, # UNKNOWN #
  325. 0, # ASYNC #
  326. 15, # MODE4 (M4C) #
  327. 7, # HASP #
  328. 0, # X25 #
  329. 1, # BSC #
  330. 31, # 3270 #
  331. 255, # USER #
  332. ];
  333. ITEM CR$MAX (3,0,60) = [255, # UNKNOWN #
  334. 0, # ASYNC #
  335. 1, # MODE4 (M4C) #
  336. 7, # HASP #
  337. 0, # X25 #
  338. 1, # BSC #
  339. 0, # 3270 #
  340. 255 # USER #
  341. ];
  342. ITEM CP$MAX (4,0,60) = [255, # UNKNOWN #
  343. 0, # ASYNC #
  344. 0, # MODE4 #
  345. 7, # HASP #
  346. 0, # X25 #
  347. 1, # BSC #
  348. 0, # 3270 #
  349. 255 # USER #
  350. ];
  351. ITEM PL$MAX (5,0,60) = [255, # UNKNOWN #
  352. 0, # ASYNC #
  353. 0, # MODE4 #
  354. 7, # HASP #
  355. 0, # X25 #
  356. 0, # BSC #
  357. 0, # 3270 #
  358. 255 # USER #
  359. ];
  360. ITEM DT7$MAX (6,0,60) = [255, # UNKNOWN #
  361. 1, # ASYNC #
  362. 15, # MODE4 (M4C) #
  363. 22, # HASP #
  364. 1, # X25 #
  365. 4, # BSC #
  366. 32, # 3270 #
  367. 255 # USER #
  368. ];
  369. ITEM CON$MAX (7,0,60) = [255, # UNKNOWN #
  370. 1, # ASYNC #
  371. 15, # MODE4 (M4C) #
  372. 1, # HASP #
  373. 1, # X25 #
  374. 1, # BSC #
  375. 32, # 3270 #
  376. 255 # USER #
  377. ];
  378. ITEM AP$MAX (8,0,60) = [255, # UNKNOWN #
  379. 0, # ASYNC #
  380. 0, # MODE 4 (M4C) #
  381. 0, # HASP #
  382. 255, # X25 #
  383. 0, # BSC #
  384. 0, # 3270 #
  385. 255 # USER #
  386. ];
  387. END
  388. ARRAY STRM$USED$MP [1:MXDT] S(1);
  389. BEGIN
  390. ITEM STRM$MAP (0,0,60);
  391. END
  392. SWITCH COMJUMP , # UNKNOWN #
  393. , # NFILE #
  394. NET$ELMT , # NPU #
  395. , # SUPLINK #
  396. , # COUPLER #
  397. , # LOGLINK #
  398. LINE , # GROUP #
  399. LINE , # LINE #
  400. , # #
  401. TERMINAL$, # TERMINAL #
  402. DEVICE , # DEVICE #
  403. TRUNK ; # TRUNK #
  404. CONTROL EJECT;
  405. PROC C$USR$PRM1(PARAM$USED,CLR$WRD);
  406. *IF,DEF,IMS
  407. #
  408. **
  409. *
  410. * C$USR$PRM1 - CHECKS IF A USER DEFINED TIPTYPE PARAMETER IS
  411. * MISSING.
  412. *
  413. * Y. C. YIP 82/10/19
  414. *
  415. * THIS PROCEDURE CHECKS IF A PARAMETER IS NOT SPECIFIED AND
  416. * IF SO, A WARNING MESSAGE IS GENERATED. APPLIES ONLY FOR
  417. * USER DEFINED TIPTYPE PARAMETERS.
  418. *
  419. * ENTRY PARAM$USED - FLAG TRUE IF PARAMETER IS USED
  420. * FALSE OTHERWISE.
  421. * CLR$WRD - ARRAY OF 10 CHARACTERS WHICH IS THE
  422. * NAME OF THE KEYWORD REQUIRED.
  423. *
  424. * EXIT ALL PARAMETERS ARE UNCHANGED.
  425. *
  426. * METHOD
  427. *
  428. * THE FIRST PARAMETER, PARAM$USED IS CHECKED AND IF IT IS TRUE
  429. * THEN A WARNING IS GENERATED BY CALLING NDLEM2 USING THE SECOND
  430. * PARAMETER WHICH IS THE NAME OF THE KEYWORD AS THE CLARIFIER.
  431. *
  432. *E
  433. #
  434. *ENDIF
  435. BEGIN
  436. ITEM PARAM$USED B; # PARAMETER USED OR NOT #
  437. ITEM CLR$WRD C(10); # CLARIFIER WORD #
  438. IF NOT PARAM$USED # IF PASRAMETER NOT USED #
  439. THEN
  440. BEGIN
  441. NDLEM2(ERR161,STLNUM[0],CLR$WRD); # GENERATE WARNING 161 #
  442. END
  443. END # END OF PROC C$USR$PRM1 #
  444.  
  445. CONTROL EJECT;
  446. PROC C$USR$PRM2(PARAM$VAL,CLR$WRD);
  447. *IF,DEF,IMS
  448. #
  449. **
  450. *
  451. * C$USR$PRM2 - CHECKS A USER DEFINED TIPTYPE PARAMETER IS MISSING
  452. *
  453. * Y. C. YIP 82/10/20
  454. *
  455. * THIS PROCEDURE CHECKS IF A PARAMETER IS SPECIFIED BY
  456. * THE VALUE OF THE FIRST PARAMETER. IF IT IS NOT SPECIFIED
  457. * A WARNING IS GENERATED TO THE USER. IT APPLIES ONLY FOR
  458. * USER DEFINED TIPTYPE PARAMETERS.
  459. *
  460. * ENTRY PARAM$VAL - VALUE OF THE PARAMETER BEING CHECKED.
  461. * CLR$WRD - ARRAY OF 10 CHARACTERS WHICH IS THE
  462. * NAME OF THE KEYWORD CHECKED.
  463. *
  464. * EXIT ALL PARAMETERS REMAIN UNCHANGED.
  465. *
  466. * METHOD
  467. *
  468. * THE VALUE OF PARAM$VAL IS CHECKED AND IF IT IS ZERO
  469. * A WARNING IS GENERATED WITH THE SECOND PARAMETER WHICH IS
  470. * THE NAME OF THE PARAMETER BEING CHECKED AS THE CLARIFIER.
  471. *
  472. *E
  473. #
  474. *ENDIF
  475. BEGIN
  476. ITEM PARAM$VAL ; # VALUE OF PARAMETER #
  477. ITEM CLR$WRD C(10); # CLARIFIER WORD #
  478. IF PARAM$VAL EQ 0 # IF PARAMETER IS STILL ZERO #
  479. THEN
  480. BEGIN
  481. NDLEM2(ERR161,STLNUM[0],CLR$WRD); # GENERATE ERROR MESSAGE #
  482. END
  483. END # END OF PROC C$USR$PRM2 #
  484.  
  485. CONTROL EJECT;
  486. PROC DEVPR;
  487. BEGIN
  488. *IF,DEF,IMS
  489. #
  490. ** DEVPR - DEVICE STATEMENT PROC.
  491. *
  492. * D.K. ENDO 81/11/02
  493. *
  494. * THIS PROCEDURE CHECKS THE -DT- PARAMETER, DEVICE STMT COUNT, AND
  495. * CALLS A PROC, BASED ON TIPTYPE, TO CHECK THE REMAINING PARAMETERS.
  496. *
  497. * PROC DEVPR
  498. *
  499. * ENTRY NONE.
  500. *
  501. * EXIT NONE.
  502. *
  503. * METHOD
  504. *
  505. * INITIALIZE FLAGS AND VALUES.
  506. * POINT TO NEXT DEVICE ENTRY.
  507. * CLEAR FIXED PORTION OF ENTRY.
  508. * INCREMENT DEVICE COUNT.
  509. * IF LABEL IS O.K.,
  510. * PUT LABEL FROM STATEMENT TABLE INTO DEVICE ENTRY.
  511. * IF GROUP COUNT IS GREATER THAN ZERO,
  512. * THEN,
  513. * FOR EACH ITERATION UNTIL GROUP COUNT,
  514. * PUT LABEL INTO DEVICE XREF TABLE FROM LABEL TABLE.
  515. * OTHERWISE,
  516. * PUT LABEL FROM STATEMENT TABLE INTO DEVICE XREF TABLE.
  517. * IF CTYP IS SVC
  518. * SET SVC IN DEVICE XREF ENTRY.
  519. * IF DT WAS NOT SPECIFIED,
  520. * THEN,
  521. * IF TIPTYPE IS X25 AND SUBTIPTYPE IS XAA
  522. * DEFAULT DT TO APPLICATION (AP)
  523. * ELSE
  524. * DEFAULT DT TO CONSOLE
  525. * PUT DT VALUE INTO DEVICE ENTRY.
  526. * OTHERWISE,
  527. * IF VALUE IS O.K.,
  528. * MAP NUMERIC VALUE FOR DT.
  529. * IF TIPTYPE AND DT ARE NOT USER,
  530. * IF TC IS NOT USER OR UNKNOWN,
  531. * THEN,
  532. * IF TC AND DT ARE NOT COMPATIBLE,
  533. * FLAG ERROR -- DT INVALID WITH TC SPECIFIED.
  534. * OTHERWISE,
  535. * IF STIP IS NOT UNKNOWN,
  536. * THEN,
  537. * IF STIP AND DT ARE NOT COMPATIBLE,
  538. * FLAG ERROR -- DT INVALID WITH STIP SPECIFIED.
  539. * OTHERWISE,
  540. * IF TIPTYPE IS NOT UNKNOWN,
  541. * IF TIPTYPE AND DT ARE NOT COMPATIBLE,
  542. * FLAG ERROR -- DT INVALID WITH TIPTYPE SPECIFIED.
  543. * IF DEVICE STATEMENT COUNT IS GREATER THAN MAXIMUM,
  544. * FLAG ERROR -- MAXIMUM DEVICE STATEMENTS EXCEEDED.
  545. * IF TIPTYPE IS NOT USER OR UNKNOWN AND
  546. * DT IS USER OR UNKNOWN,
  547. * THEN,
  548. * SELECT CASE THAT APPLIES,
  549. * CASE 1(ASYNC):
  550. * CHECK ASYNC DEVICE STATEMENT.
  551. * CASE 2(MODE4):
  552. * CHECK MODE4 DEVICE STATEMENT.
  553. * CASE 3(HASP):
  554. * CHECK HASP DEVICE STATEMENT.
  555. * CASE 4(X25):
  556. * CHECK X25 DEVICE STATEMENT.
  557. * CASE 5(BSC):
  558. * CHECK BSC DEVICE STATEMENT.
  559. * OTHERWISE,
  560. * CHECK USER DEVICE STATEMENT.
  561. * IF TIPTYPE IS NOT USER AND DT IS CONSOLE,
  562. * IF HN WAS NOT SPECIFIED,
  563. * AND THE HOST NAMES OF ALL LOGICAL LINKS TERMINATING
  564. * AT THE SAME NPU ARE THE SAME
  565. * THEN,
  566. * DEFAULT HN VALUE TO HOST I.D. OF LOGLINK OF THE LAST ENTRY
  567. * OF THE LOGICAL NAME TABLE
  568. * IF AUTOCON WAS NOT SPECIFIED,
  569. * DEFAULT AUTOCON TO YES
  570. * OTHERWISE,
  571. * IF AUTOCON IS -YES-,
  572. * FLAG ERROR -- REQUIRED PARAMETER MISSING(HN).
  573. * PUT RIC VALUE INTO DEVICE ENTRY.
  574. * PUT WORD COUNT FOR DEVICE ENTRY.
  575. * INCREMENT WORD COUNT FOR TERMINAL ENTRY.
  576. *
  577. #
  578. *ENDIF
  579. #
  580. **** PROC DEVPR - XREF LIST BEGINS
  581. #
  582. XREF
  583. BEGIN
  584. PROC NDLEM2; # MAKE ENTRY IN PASS 2 ERROR FILE #
  585. FUNC XCHD C(10); # CONVERTS HEX VALUE TO DISPLAY CODE #
  586. END
  587. #
  588. ****
  589. #
  590. DEF MXDVENT # 14 #; # MAXIMUM WORD SIZE FOR DEVICE ENTRY #
  591. DEF SDT$12 # 12 #; # STARTING USER VALUE FOR SDT #
  592. DEF SDT$13 # 13 #; # INTERNAL VALUE FOR SDT13 #
  593. DEF SDT$14 # 14 #; # INTERNAL VALUE FOR SDT14 #
  594. DEF SDT$15 # 15 #; # ENDING USER VALUE FOR SDT #
  595. DEF FIRST$POS # 24 #; # FIRST POSITION FOR FNFV PAIR #
  596. DEF NO$MATCH # -1 #; # VALUE FOR SAVE$ENTRY IF NO MATCH FOUND #
  597. STATUS CC UNKNOWN, # STATUS LIST OF CONTROL CHARACTERISTICS #
  598. AB,
  599. CN,
  600. B1,
  601. B2,
  602. CT,
  603. BS,
  604. ELX,
  605. EBX;
  606. ITEM ABL$USED B;
  607. ITEM AUTOCON$FLAG B;
  608. ITEM AUTOCON$NO B;
  609. ITEM BIT$POS;
  610. ITEM CRNT$DT;
  611. ITEM DBL$USED B;
  612. ITEM DBZ$USED B;
  613. ITEM DO$USED B;
  614. ITEM HN$USED B;
  615. ITEM PL$USED B;
  616. ITEM I;
  617. ITEM ITEMP; # INTEGER TEMPORARY #
  618. ITEM LL$CNT;
  619. ITEM LLT$PNTR;
  620. ITEM PWI, PDI; # PAD WORD INDX., PAD WORD DISPL. INDX. #
  621. ITEM STREAM$USED B;
  622. ITEM TA$USED B;
  623. ITEM UBL$USED B;
  624. ITEM UBZ$USED B;
  625. ITEM XBZ$USED B;
  626. STATUS X$D$GROUP NO,XG,DG; # STATUS VARIABLE FOR XL'S AND DL'S #
  627. ITEM GR$SET S: X$D$GROUP; # STATUS ITEM OF TYPE X$D$GROUP #
  628. ITEM SAVE$ENTRY; # USED FOR COMPARING HOST NAMES IN #
  629. # LLT$TABLE #
  630. # SET TO 0 IF NO MATCH FOUND
  631.   TO INDEX OF LLT$TABLE ENTRY AT LAST
  632.   COMPARISON.
  633.   OR TO -1 IF A MISMATCH IS FOUND #
  634. DEF MAXCC # 8 #;
  635. ARRAY CRNT$CC$TAB[1:MAXCC] S(1);
  636. BEGIN
  637. ITEM CRNT$CC (0,0,60);
  638. END
  639. DEF MXDT # 7 #; # MAXIMUM NUMBER OF DEVICE TYPES #
  640. ARRAY DT$TABLE [1:MXDT] S(1);
  641. BEGIN
  642. ITEM DTNAME C(0,0,7) = ["CON", # DT CHARACTER VALUES #
  643. "CR",
  644. "LP",
  645. "CP",
  646. "PL",
  647. "AP",
  648. "DT12"
  649. ];
  650. ITEM DT$NUMV I(0,42,09) = [0, # CONSOLE -- INTEGER VALUE #
  651. 1, # CARD READER #
  652. 2, # LINE PRINTER #
  653. 3, # CARD PUNCH #
  654. 4, # PLOTTER #
  655. 6, # A-A DEVICE #
  656. 12 # USER DT12 #
  657. ];
  658. ITEM DT$STAT (0,51,09) = [DT"CON", # CONSOLE -- STATUS VALUE #
  659. DT"CR", # CARD READER #
  660. DT"LP", # LINE PRINTER #
  661. DT"CP", # CARD PUNCH #
  662. DT"PL", # PLOTTER #
  663. DT"AP", # A TO A DEVICE TYPE #
  664. DT"USER" # USER #
  665. ];
  666. END
  667. ARRAY TC$ALLOWED [1:MXDT] S(1); # BIT MAP FOR TC SUPPORTING DT #
  668. BEGIN
  669. ITEM DT$TC$MAP U(0,0,30) = [O"3777777000", # CONSOLE #
  670. O"0006170000", # CARD READER #
  671. O"0007371000", # LINE PRINTER #
  672. O"0004130000", # CARD PUNCH #
  673. O"0004100000", # PLOTTER #
  674. 0, # A-A (NA) #
  675. ];
  676. END
  677. ARRAY STIP$ALLOWED [1:MXDT] S(1);# MAP FOR STIP SUPPORTING DT #
  678. BEGIN
  679. ITEM DT$STIP$MAP U(0,0,30) = [O"3777000000", # CONSOLE #
  680. O"2143000000", # CARD READER #
  681. O"3143000000", # LINE PRINTER #
  682. O"0143000000", # CARD PUNCH #
  683. O"0140000000", # PLOTTER #
  684. O"0004000000", # A-A DEVICE #
  685. ];
  686. END
  687. ARRAY TIP$ALLOWED [1:MXDT] S(1); # MAP FOR TIP SUPPORTING DT #
  688. BEGIN
  689. ITEM DT$TIP$MAP U(0,0,30) = [O"3740000000", # CONSOLE #
  690. O"1500000000", # CARD READER #
  691. O"1540000000", # LINE PRINTER #
  692. O"0500000000", # CARD PUNCH #
  693. O"0400000000", # PLOTTER #
  694. O"0200000000", # A-A DEVICE #
  695. ];
  696. END
  697. DEF MNKWID # 65 #;
  698. DEF MXKWID # 131 #;
  699. ARRAY KWD$TABLE [MNKWID:MXKWID] S(1);
  700. BEGIN
  701. ITEM KWDNAME C(0,0,10) = ["DT",
  702. "SDT",
  703. "TA",
  704. "ABL",
  705. "DBZ",
  706. "UBZ",
  707. "DBL",
  708. "UBL",
  709. "XBZ",
  710. "DO",
  711. "STREAM",
  712. "HN",
  713. ,
  714. "AUTOCON",
  715. "PRI",
  716. "P90",
  717. "P91",
  718. "P92",
  719. "P93",
  720. "P94",
  721. "P95",
  722. "P96",
  723. "P97",
  724. "P98",
  725. "P99",
  726. "AB",
  727. "BR",
  728. "BS",
  729. "B1",
  730. "B2",
  731. "CI",
  732. "CN",
  733. "CT",
  734. "DLC",
  735. "DLTO",
  736. "DLX",
  737. "EP",
  738. "IN",
  739. "LI",
  740. "OP",
  741. "PA",
  742. "PG",
  743. "PL",
  744. "PW",
  745. "SE",
  746. "FA",
  747. "XLC",
  748. "XLX",
  749. "XLTO",
  750. "ELO",
  751. "ELX",
  752. "ELR",
  753. "EBO",
  754. "EBR",
  755. "CP",
  756. "IC",
  757. "OC",
  758. "LK",
  759. "EBX",
  760. ,
  761. "MC",
  762. "XLY",
  763. "EOF",
  764. "PAD",
  765. "RTS",
  766. "MCI",
  767. "MLI"
  768. ];
  769. END
  770. SWITCH DEVPJUMP NEXT, # UNKNOWN -- SWITCH BY TIPTYPE #
  771. ASYNC, # ASYNC #
  772. MODE4, # MODE4 #
  773. HASP, # HASP #
  774. X25, # X25 #
  775. BSC, # BSC #
  776. $3270, # 3270 #
  777. NEXT; # USER #
  778. CONTROL EJECT;
  779. PROC CHCONTRL(CHKWID,CHLNUM,STAT,VALUE);
  780. BEGIN
  781. *IF,DEF,IMS
  782. #
  783. ** CHCONTRL
  784. * Y. C. YIP
  785. * THIS PROCEDURE CHECKS FOR CONTROL CHARACTERS AND ENSURE THAT
  786. * THE PARAMETER OF A DEVICE STATEMENT DOES NOT USE ANY SPECIAL
  787. * CHARACTER NOT ALLOWED BY THE TERMINAL ERS.
  788. *
  789. * ENTRY CONDITION:
  790. * CHKWID=KEYWORD I.D.KEYWORD .
  791. * CHLNUM=LINE NUMBER OF INPUT SOURCE
  792. * STAT = INPUT VALUE OF STATUS .
  793. * VALUE = VALUE OF KEYWORD.
  794. * EXIT CONDITION:
  795. * CHKWID=UNCHANGED.
  796. * CHLNUM=LINE MUNBER OF SOURCE INPUT.
  797. * STAT= FALSE IF VALUE OVERLAPS WITH SOME
  798. * VALUE DISALLOWED BY THE NDLP ERS.
  799. * VALUE = UNCHANGED.
  800. *
  801. #
  802. *ENDIF
  803.  
  804. DEF MAXBAD # 5 # ; # LENGTH OF ARRAY FOR CHECKING #
  805. DEF ILLE00 # X"0" # ; # ILLEGAL CHARACTER 0 #
  806. DEF ILLE01 # X"01" #; # ILLEGAL CHARACTER CHAR 01 #
  807. DEF ILLE02 # X"02" #; # ILLEGAL CHARACTER 02 #
  808. DEF ILLE20 # X"20" #; # ILLEGAL CHARACTER 20 #
  809. DEF ILLE30 # X"30" #; # ILLEGAL CHARACTER 30 #
  810. DEF ILLE39 # X"39" #; # ILLEGAL CHARACTER 39 #
  811. DEF ILLE3D # X"3D" #; # ILLEGAL CHARACTER 3D #
  812. DEF ILLE41 # X"41" #; # ILLEGAL CHARACTER 41 #
  813. DEF ILLE5A # X"5A" #; # ILLEGAL CHARACTER 5A #
  814. DEF ILLE61 # X"61" #; # ILLEGAL CHARACTER 61 #
  815. DEF ILLE7A # X"7A" #; # ILLEGAL CHARACTER 7A #
  816. DEF ILLE7F # X"7F" #; # ILLEGAL CHARACTER 7F #
  817. ITEM CHKWID; # I. D. NUMBER OF THE KEYWORD #
  818. ITEM CHLNUM; # LINE NUMBER OF CURRENT LINE #
  819. ITEM STAT B ; # STATUS VARIABLE #
  820. ITEM VALUE ; # VALUE OF KEYWORD #
  821.  
  822. ARRAY BAD$CHAR [0:MAXBAD] S(1); # BAD CHAR LIST #
  823. BEGIN
  824. ITEM BAD$LIST = [ILLE00,ILLE01,ILLE02,
  825. ILLE20,ILLE3D,ILLE7F];
  826. END
  827.  
  828.  
  829. ITEM INDEX1 ; # LOOP INDEX #
  830. IF NOT STAT # IF OUT OF RANGE ALREADY #
  831. THEN
  832. BEGIN
  833. RETURN;
  834. END # RETURN TO CALLING ROUTINE CONDEV #
  835.  
  836. FOR INDEX1=0 STEP 1 UNTIL MAXBAD
  837. DO
  838. BEGIN
  839. IF VALUE EQ BAD$LIST[INDEX1]
  840. THEN # BAD CHAR MET #
  841. BEGIN
  842. STAT = FALSE; # SET STAT TO FALSE#
  843. END
  844. END
  845. IF ( VALUE GQ ILLE30 AND VALUE LQ ILLE39 )
  846. OR ( VALUE GQ ILLE41 AND VALUE LQ ILLE5A )
  847. OR ( VALUE GQ ILLE61 AND VALUE LQ ILLE7A )
  848.  
  849. THEN # FALL INTO BAD RANGE ? #
  850. BEGIN
  851. STAT = FALSE; # STAT SET TO FALSE #
  852. END
  853. IF NOT STAT # IF STATUS IS BAD #
  854. THEN
  855. BEGIN
  856. NDLEM2(ERR158,CHLNUM,KWDNAME[CHKWID]); # GENERATE
  857.   ERROR MESSAGE #
  858. END
  859. RETURN ; # RETURN TO CALLING ROUTINE #
  860. END # END OF PROC CHCONTRL #
  861.  
  862. CONTROL EJECT;
  863. PROC ASYDEV;
  864. BEGIN
  865. *IF,DEF,IMS
  866. #
  867. ** ASYDEV - CHECK ASYNC DEVICE PARAMRTERS.
  868. *
  869. * D.K. ENDO 81/11/02
  870. *
  871. * THIS PROCEDURE CHECKS PARAMETERS THAT ARE APPLICABLE TO ASYNC
  872. * DEVICES.
  873. *
  874. * PROC ASYDEV
  875. *
  876. * ENTRY NONE.
  877. *
  878. * EXIT NONE.
  879. *
  880. * METHOD
  881. *
  882. * PUT DEFAULT CONTROL CHARACTER IN CC TABLE BASED ON STIP AND/OR TC.
  883. * FOR EACH VALUE DECLARATION IN ENTRY.
  884. * SELECT CASE THAT APPLIES:
  885. * CASE 1(DI,P90 THRU P99, PRI,PW):
  886. * CALL GENDEV TO CHECK GENERAL PARAMETER.
  887. * CASE 2(HN,AUTOLOG,AUTOCON,AB,BR,BS,B1,B2,CI,CN,CT,
  888. * DLX,IN,LI,OP,PA,PL,SE,FA,XLC,XLX,LK,XLY):
  889. * CALL CONDEV TO CHECK CONSOLE PARAMETER.
  890. * CASE 3(ABL,DBZ,DBL,UBL,XBZ,UBZ):
  891. * CALL FLOWDEV TO CHECK FLOW CONTROL PARAMETER.
  892. * CASE 4(DLC,DLTO,EP,PG,XLTO,ELO,ELX,ELR,EBO,EBR,CP,IC,OC):
  893. * IF STIP OR TC IS 2741,
  894. * THEN,
  895. * CALL CONDEV TO CHECK PARAMETER.
  896. * OTHERWISE,
  897. * FLAW ERROR -- PARAM INVALID FOR 2741 DEVICES.
  898. * CASE 5(TA,DO,STREAM):
  899. * FLAG ERROR -- PARAM INVALID FOR ASYNC DEVICES.
  900. * CASE 6 (SDT) :
  901. * CHECK FOR SDT12-SDT15 AS VALID SDT NAMES ONLY AND
  902. * CALL BTCHDEV PROCESSOR
  903. * IF ABL OR DBZ NOT SPECIFIED
  904. * DEFAULT VALUE BY LSPEED.
  905. * IF DBL,UBL,OR XBZ WAS NOT SPECIFIED
  906. * DEFAULT VALUE.
  907. * CHECK AL,CN,BS,B1,B2,CT FOR UNIQUENESS
  908. * IF NOT UNIQUE
  909. * FLAG ERROR.
  910. *
  911. #
  912. *ENDIF
  913. #
  914. **** PROC ASYDEV - XREF LIST BEGINS
  915. #
  916. XREF
  917. BEGIN
  918. PROC NDLEM2; # MAKES ENTRIES IN PASS 2 ERROR FILE #
  919. END
  920. #
  921. ****
  922. #
  923. DEF UBL$DEF # 7 #; # DEFAULT UBL VALUE #
  924. DEF UBZ$DEF # 1 #; # DEFAULT UBZ VALUE FOR ASYCH TIPTYPE #
  925. DEF DBL$DEF # 1 #; # DEFAULT DBL VALUE FOR ASYCH TIPTYPE #
  926. DEF PL$DEF # 64 #; # DEFAULT PAGE LENGTH TO 64 #
  927. ITEM I; # SCRATCH ITEM #
  928. ITEM ITEMP; # INTEGER TEMPORARY #
  929. ITEM J; # SCRATCH ITEM #
  930. ITEM VALUE; # VALUE TEMPORARY #
  931. ARRAY CC$TABLE [0:1] S(2); # CONTROL CHARACTERISTICS #
  932. BEGIN
  933. ITEM AB$DEF (00,00,09) = [X"18", # N2741 -- DEFAULT AB #
  934. X"28" # 2741 #
  935. ];
  936. ITEM CN$DEF (00,09,09) = [X"18", # N2741 -- DEFAULT CN #
  937. X"28" # 2741 #
  938. ];
  939. ITEM BS$DEF (00,18,09) = [X"08", # N2741 -- DEFAULT BS #
  940. X"08" # 2741 #
  941. ];
  942. ITEM B1$DEF (00,27,09) = [X"10", # N2741 -- DEFAULT B1 #
  943. X"3A" # 2741 #
  944. ];
  945. ITEM B2$DEF (00,36,09) = [X"14", # N2741 -- DEFAULT B2 #
  946. X"29" # 2741 #
  947. ];
  948. ITEM CT$DEF (00,45,09) = [X"1B", # N2741 -- DEFAULT CT #
  949. X"25" # 2741 #
  950. ];
  951. ITEM ELX$DEF (01,00,09) = [X"0D", # N2741 -- DEFAULT EL #
  952. -1 # 2741(N/A) #
  953. ];
  954. ITEM EBX$DEF (01,00,09) = [X"04", # N2741 -- DEFAULT EB #
  955. -1 # 2741(N/A) #
  956. ];
  957. END
  958. DEF MXLSPD # 11 #; # MAXIMUM NUMBER OF LINE SPEEDS #
  959. ARRAY FLOW$TABLE [0:MXLSPD] S(2);
  960. BEGIN
  961. ITEM ABL$DEF (0,0,60) = [,1, # 110 -- DEFAULT ABL #
  962. 1, # 134 #
  963. 1, # 150 #
  964. 1, # 300 #
  965. 2, # 600 #
  966. 2, # 1200 #
  967. 2, # 2400 #
  968. 2, # 4800 #
  969. 2, # 9600 #
  970. 3, # 19200 #
  971. 3 # 38400 #
  972. ];
  973. ITEM DBZ$DEF (1,0,60) = [,230, # 110 -- DEFAULT DBZ #
  974. 230, # 134 #
  975. 230, # 150 #
  976. 230, # 300 #
  977. 230, # 600 #
  978. 230, # 1200 #
  979. 230, # 2400 #
  980. 460, # 4800 #
  981. 940, # 9600 #
  982. 885, # 19200 #
  983. 885 # 38400 #
  984. ];
  985. END
  986. SWITCH ASYDJUMP , , # UNK , NODE ,#
  987. , , # VARIANT , OPGO ,#
  988. , , # DMP , LLNAME ,#
  989. , , # , ,#
  990. , , # , ,#
  991. , , # HNAME , LOC ,#
  992. , , # , ,#
  993. , , # , ,#
  994. , , # , ,#
  995. , GEN$PARAM , # NCNAME , DI ,#
  996. , , # N1 , P1 ,#
  997. , , # N2 , P2 ,#
  998. , , # NOLOAD1 , NOLOAD2 ,#
  999. , , # , ,#
  1000. , , # , ,#
  1001. , , # NI , PORT ,#
  1002. , , # LTYPE , TIPTYPE ,#
  1003. , , # AUTO , SL ,#
  1004. , , # LSPEED , DFL ,#
  1005. , , # FRAME , RTIME ,#
  1006. , , # RCOUNT , NSVC ,#
  1007. , , # PSN , DCE ,#
  1008. , , # DTEA , ,#
  1009. , , # , ,#
  1010. , , # , ,#
  1011. , , # STIP , TC ,#
  1012. , , # RIC , CSET ,#
  1013. , , # TSPEED , CA ,#
  1014. , , # CO , BCF ,#
  1015. , , # MREC , W ,#
  1016. , , # CTYP , NCIR ,#
  1017. , , # NEN , COLLECT ,#
  1018. , NEXT$ASY , # , DT ,#
  1019. SDT , ILLEGAL , # SDT , TA ,#
  1020. FLOW$PARAM , FLOW$PARAM , # ABL , DBZ ,#
  1021. FLOW$PARAM , FLOW$PARAM , # UBZ , DBL ,#
  1022. FLOW$PARAM , FLOW$PARAM , # UBL , XBZ ,#
  1023. ILLEGAL , ILLEGAL , # DO , STREAM ,#
  1024. CON$PARAM , , # HN , AUTOLOG ,#
  1025. CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
  1026. GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
  1027. GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
  1028. GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
  1029. GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
  1030. GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
  1031. CON$PARAM , CON$PARAM , # AB , BR ,#
  1032. CON$PARAM , CON$PARAM , # BS , B1 ,#
  1033. CON$PARAM , CON$PARAM , # B2 , CI ,#
  1034. CON$PARAM , CON$PARAM , # CN , CT ,#
  1035. CON$PARAM , N2741$PRM , # DLC , DLTO ,#
  1036. CON$PARAM , N2741$PRM , # DLX , EP ,#
  1037. CON$PARAM , CON$PARAM , # IN , LI ,#
  1038. CON$PARAM , CON$PARAM , # OP , PA ,#
  1039. N2741$PRM , CON$PARAM , # PG , PL ,#
  1040. GEN$PARAM , CON$PARAM , # PW , SE ,#
  1041. CON$PARAM , CON$PARAM , # FA , XLC ,#
  1042. CON$PARAM , N2741$PRM , # XLX , XLTO ,#
  1043. N2741$PRM , N2741$PRM , # ELO , ELX ,#
  1044. N2741$PRM , N2741$PRM , # ELR , EBO ,#
  1045. N2741$PRM , N2741$PRM , # EBR , CP ,#
  1046. N2741$PRM , N2741$PRM , # IC , OC ,#
  1047. CON$PARAM , N2741$PRM , # LK , EBX ,#
  1048. , GEN$PARAM , # , MC ,#
  1049. CON$PARAM , , # XLY , EOF ,#
  1050. , N2741$PRM , # PAD , RTS ,#
  1051. GEN$PARAM , GEN$PARAM ; # MCI , MLI #
  1052. CONTROL EJECT;
  1053. # #
  1054. # ASYDEV CODE BEGINS HERE #
  1055. # #
  1056. IF CRNT$STIP EQ STIP"$2741" OR # IF STIP OR TC IS 2741 #
  1057. CRNT$TC EQ TC"$2741"
  1058. THEN
  1059. BEGIN # SET DEFAULT VALUES FOR 2741 #
  1060. CRNT$CC[CC"AB"] = AB$DEF[1];
  1061. CRNT$CC[CC"CN"] = CN$DEF[1];
  1062. CRNT$CC[CC"BS"] = BS$DEF[1];
  1063. CRNT$CC[CC"B1"] = B1$DEF[1];
  1064. CRNT$CC[CC"B2"] = B2$DEF[1];
  1065. CRNT$CC[CC"CT"] = CT$DEF[1];
  1066. CRNT$CC[CC"ELX"] = ELX$DEF[1];
  1067. CRNT$CC[CC"EBX"] = EBX$DEF[1];
  1068. END
  1069. ELSE # STIP AND TC NOT 2741 #
  1070. BEGIN # IF STIP OR TC NOT UNKNOWN #
  1071. IF CRNT$STIP NQ STIP"UNKNOWN" OR
  1072. CRNT$TC NQ TC"UNKNOWN"
  1073. THEN
  1074. BEGIN #SET DEFAULT VALUES FOR NON-2741#
  1075. CRNT$CC[CC"AB"] = AB$DEF[0];
  1076. CRNT$CC[CC"CN"] = CN$DEF[0];
  1077. CRNT$CC[CC"BS"] = BS$DEF[0];
  1078. CRNT$CC[CC"B1"] = B1$DEF[0];
  1079. CRNT$CC[CC"B2"] = B2$DEF[0];
  1080. CRNT$CC[CC"CT"] = CT$DEF[0];
  1081. CRNT$CC[CC"ELX"] = ELX$DEF[0];
  1082. CRNT$CC[CC"EBX"] = EBX$DEF[0];
  1083. END
  1084. END
  1085. FOR I=3 STEP 1 UNTIL STWC[0]
  1086. DO # FOR EACH VALUE DECLARATION ENTRY #
  1087. BEGIN
  1088. GOTO ASYDJUMP[STKWID[I]]; # GOTO APPROPRIATE PROC #
  1089. GEN$PARAM:
  1090. GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETERS #
  1091. TEST I;
  1092. SDT: IF STVALNAM[I] EQ "SDT12" OR # IF SDT12 - SDT15 USED #
  1093. STVALNAM[I] EQ "SDT13" OR
  1094. STVALNAM[I] EQ "SDT14" OR
  1095. STVALNAM[I] EQ "SDT15"
  1096. THEN
  1097. BEGIN
  1098. BTCHDEV(STWORD[I],STLNUM[0]); # CALL BATCH DEVICE PROCESSOR #
  1099. END
  1100. ELSE
  1101. BEGIN
  1102. GOTO ILLEGAL;
  1103. END
  1104. TEST I;
  1105. CON$PARAM:
  1106. CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETERS #
  1107. TEST I;
  1108. FLOW$PARAM:
  1109. FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETERS #
  1110. TEST I;
  1111. N2741$PRM: # CHECK NON-2741 PARAMETERS #
  1112. IF CRNT$TC NQ TC"$2741" AND # IF TC AND STIP NOT 2741 #
  1113. CRNT$STIP NQ STIP"$2741"
  1114. THEN
  1115. BEGIN
  1116. CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
  1117. END
  1118. ELSE # TERMINAL IS 2741 #
  1119. BEGIN # FLAG ERROR -- INVALID FOR 2741 TERMINALS#
  1120. NDLEM2(ERR131,STLNUM[0],KWDNAME[STKWID[I]]);
  1121. END
  1122. TEST I;
  1123. ILLEGAL: # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
  1124. NDLEM2(ERR106,STLNUM[0],KWDNAME[STKWID[I]]);
  1125. NEXT$ASY:
  1126. END
  1127. IF NOT ABL$USED # IF ABL NOT SPECIFIED #
  1128. THEN # DEFAULT BY LINE SPEED #
  1129. BEGIN
  1130. IF CRNT$LSPD NQ LSPD"UNKNOWN" # CURRENT LSPEED IS SET #
  1131. THEN
  1132. BEGIN
  1133. VALUE = ABL$DEF[CRNT$LSPD]; # DEFAULT ABL IN VALUE #
  1134. END
  1135. ELSE # CURRENT LSPEED IS UNKNOWN #
  1136. BEGIN
  1137. IF XAUTO$REC # IF XAUTO WAS SPECIFIED #
  1138. THEN
  1139. BEGIN
  1140. VALUE = ABL$DEF[LSPD"$600"]; # DEFAULT ABL (FOR 600 BAUD) #
  1141. END
  1142. ELSE
  1143. BEGIN
  1144. VALUE = ABL$DEF[LSPD"$300"]; # DEFAULT ABL (FOR 300 BAUD) #
  1145. END
  1146. END
  1147. DEVFNFV(FN"ABL",VALUE);
  1148. END
  1149. IF NOT DBZ$USED # IF DBZ NOT SPECIFIED #
  1150. THEN # DEFAULT DBZ BY LINE SPEED #
  1151. BEGIN
  1152. IF CRNT$LSPD NQ LSPD"UNKNOWN" # CURRENT LSPEED IS KNOWN #
  1153. THEN
  1154. BEGIN
  1155. VALUE = DBZ$DEF[CRNT$LSPD]; # DEFAULT DBZ IN VALUE #
  1156. END
  1157. ELSE # CURRENT LSPEED IS UNKNOWN #
  1158. BEGIN
  1159. IF CRNT$TSPD NQ LSPD"UNKNOWN"
  1160. THEN # IF TSPEED WAS SPECIFIED #
  1161. BEGIN
  1162. VALUE = DBZ$DEF[CRNT$TSPD];# DEFAULT DBZ IN VALUE #
  1163. END
  1164. ELSE # TSPEED WAS NOT SPECIFIED #
  1165. BEGIN
  1166. VALUE = DBZ$DEF[LSPD"$300"]; # DEFAULT DBZ (FOR 300 BAUD) #
  1167. END
  1168. END
  1169. J = B<44,8>VALUE; # MSB OF DBZ VALUE #
  1170. DEVFNFV(FN"DBZ$MSB",J);
  1171. J = B<52,8>VALUE; # LSB OF DBZ VALUE #
  1172. DEVFNFV(FN"DBZ$LSB",J);
  1173. END
  1174. IF NOT DBL$USED # IF DBL NOT SPECIFIED #
  1175. THEN # DEFAULT DBL #
  1176. BEGIN
  1177. DEVFNFV(FN"DBL",DBL$DEF);
  1178. END
  1179. IF NOT UBL$USED # IF UBL NOT SPECIFIED #
  1180. THEN # DEFAULT UBL #
  1181. BEGIN
  1182. DEVFNFV(FN"UBL",UBL$DEF);
  1183. END
  1184. IF NOT UBZ$USED # IF UBZ NOT SPECIFIED #
  1185. THEN
  1186. BEGIN
  1187. DEVFNFV(FN"UBZ",UBZ$DEF); # DEFAULT UBZ #
  1188. END
  1189. IF NOT XBZ$USED # IF XBZ WAS NOT SPECIFIED #
  1190. THEN # DEFAULT XBZ BY LINE SPEED #
  1191. BEGIN
  1192. IF CRNT$LSPD NQ LSPD"UNKNOWN" # CURRENT LSPEED IS SET #
  1193. THEN
  1194. BEGIN
  1195. VALUE = DBZ$DEF[CRNT$LSPD]; # DEFAULT XBZ IN VALUE #
  1196. END
  1197. ELSE # LSPEED WAS NOT SPECIFIED #
  1198. BEGIN
  1199. IF CRNT$TSPD NQ LSPD"UNKNOWN"
  1200. THEN # IF TSPEED WAS SPECIFIED #
  1201. BEGIN
  1202. VALUE = DBZ$DEF[CRNT$TSPD]; # DEFAULT XBZ IN VALUE #
  1203. END
  1204. ELSE # TPSEED WAS NOT SPECIFIED #
  1205. BEGIN
  1206. VALUE = DBZ$DEF[LSPD"$300"];# DEFAULT XBZ (FOR 300 BAUD) #
  1207. END
  1208. END
  1209. J = B<44,8>VALUE; # MSB OF XBZ VALUE #
  1210. DEVFNFV(FN"XBZ$MSB",J);
  1211. J = B<52,8>VALUE; # LSB OF XBZ VALUE #
  1212. DEVFNFV(FN"XBZ$LSB",J);
  1213. END
  1214. IF NOT PL$USED AND # IF PL NOT SPECIFIED #
  1215. CRNT$DT EQ DT"LP" # AND DEVICE TYPE IS LINEPRINTER #
  1216. THEN
  1217. BEGIN
  1218. DEVFNFV(FN"PL",PL$DEF);
  1219. END
  1220. IF CRNT$STIP NQ STIP"UNKNOWN" OR
  1221. CRNT$TC NQ TC"UNKNOWN"
  1222. THEN # IF STIP OR TC NOT UNKNOWN #
  1223. BEGIN # CHECK FOR UNIQUENESS #
  1224. FOR I=CC"B1" STEP 1 UNTIL CC"EBX"
  1225. DO
  1226. BEGIN
  1227. IF CRNT$CC[CC"AB"] EQ CRNT$CC[I]
  1228. THEN
  1229. BEGIN # FLAG ERROR -- VALUES NOT UNIQUE #
  1230. NDLEM2(ERR132,STLNUM[0]," ");
  1231. END
  1232. END
  1233. FOR I=CC"CN" STEP 1 UNTIL CC"BS"
  1234. DO
  1235. BEGIN
  1236. FOR J=I+1 STEP 1 UNTIL CC"EBX"
  1237. DO
  1238. BEGIN
  1239. IF CRNT$CC[I] EQ CRNT$CC[J]
  1240. THEN
  1241. BEGIN # FLAG ERROR -- VALUES NOT UNIQUE #
  1242. NDLEM2(ERR132,STLNUM[0]," ");
  1243. END
  1244. END
  1245. END
  1246. END
  1247. RETURN; # **** RETURN **** #
  1248. END # ASYDEV #
  1249. CONTROL EJECT;
  1250. PROC BSCDEV;
  1251. BEGIN
  1252. *IF,DEF,IMS
  1253. #
  1254. ** BSCDEV - CHECK BISYNC DEVICE PARAMETER.
  1255. *
  1256. * D.K. ENDO 81/11/02
  1257. *
  1258. * THIS PROCEDURE CHECKS PARAMETERS THAT ARE APPLICABLE TO BISYNC
  1259. * DEVICES.
  1260. *
  1261. * PROC BSCDEV
  1262. *
  1263. * ENTRY NONE.
  1264. *
  1265. * EXIT NONE.
  1266. *
  1267. * METHOD
  1268. *
  1269. * FOR EACH VALUE DECLARATION IN ENTRY,
  1270. * SELECT CASE THAT APPLIES,
  1271. * CASE 1(DI,PRI,P90 THRU P99,PW):
  1272. * CALL GENDEV TO CHECK GENERAL PARAMETER.
  1273. * CASE 2(DBL):
  1274. * CALL FLOWDEV TO CHECK FLOW CONTROL PARAMETER.
  1275. * CASE 3 (UBL):
  1276. * IF DT IS CONSOLE AND RANGE OF UBL WITHIN 1 TO 7
  1277. * CALL FLOWDEV TO CHECK FLOW CONTROL PARAMETER.
  1278. * CASE 4(HN,AUTOLOG,AUTOCON,CT):
  1279. * IF DT IS CONSOLE
  1280. * THEN
  1281. * CALL CONDEV TO CHECK CONSOLE PARAMETER.
  1282. * OTHERWISE,
  1283. * FLAG ERROR -- PARAM NOT ALLOWED WITH DT SPECIFIED.
  1284. * CASE 5(TA):
  1285. * IF DT IS CARD PUNCH,
  1286. * THEN,
  1287. * IF STIP IS 3780 OR UNKNOWN,
  1288. * THEN,
  1289. * CALL MBDEV TO CHECK MODE4/BSC PARAMETER.
  1290. * OTHERWISE,
  1291. * FLAG ERROR -- INVALID FOR 2780 DEVICES.
  1292. * OTHERWISE,
  1293. * FLAG ERROR -- VALID FOR CARD PUNCH ONLY.
  1294. * CASE 6(SDT):
  1295. * IF DT IS LINE PRINTER OR CARD READER,
  1296. * THEN,
  1297. * CALL BTCHDEV TO CHECK PARAMETER.
  1298. * OTHERWISE,
  1299. * FLAG ERROR -- INVALID WITH DT SPECIFIED.
  1300. * CASE 7(DO,STREAM,AB,BR,BS,B1,B2,CI,CN,DLC,DLTO,DLX,EP,IN,LI,
  1301. * OP,PA,PG,PL,SE,FA,XLC,XLX,XLTO,ELO,ELX,ELR,EBO,EBR,CP,
  1302. * IC,OC,LK,EBX,HD,XLY):
  1303. * FLAG ERROR -- INVALID FOR BISYNC DEVICES.
  1304. * CASE 8(ABL):
  1305. * IF DT IS CONSOLE,
  1306. * THEN,
  1307. * CALL FLOWDEV TO CHECK PARAMETER.
  1308. * OTHERWISE,
  1309. * FLAG ERROR -- VALID FOR CONSOLES ONLY.
  1310. * CASE 9(DBZ):
  1311. * IF DT IS NOT CARD READER,
  1312. * THEN,
  1313. * CALL FLOWDEV TO CHECK PARAMETER.
  1314. * OTHERWISE,
  1315. * FLAG ERROR -- INVALID FOR CARD READERS.
  1316. * CASE 10(UBZ):
  1317. * IF DT IS CONSOLE OR CARD READER
  1318. * OR LINEPRINTER OR CARD PUNCH,
  1319. * THEN,
  1320. * CALL FLOWDEV TO CHECK PARAMETER.
  1321. * OTHERWISE,
  1322. * FLAG ERROR -- INVALID WITH DT SPECIFIED.
  1323. * IF ABL WAS NOT SPECIFIED AND DT IS CONSOLE,
  1324. * DEFAULT ABL VALUE.
  1325. * IF DBL OR UBL NOT SPECIFIED,
  1326. * DEFAULT VALUE BY DEVICE TYPE.
  1327. * IF DBZ NOT SPECIFIED AND DT IS NOT CARD READER.
  1328. * IF TC IS NOT -USER- OR UNKNOWN,
  1329. * THEN,
  1330. * DEFAULT DBZ BY TC.
  1331. * OTHERWISE,
  1332. * IF STIP IS NOT UNKNOWN,
  1333. * DEFAULT DBZ BY STIP.
  1334. * IF UBZ NOT SPECIFIED AND DT IS -CON- OR -CR-,
  1335. * DEFAULT UBZ VALUE.
  1336. * IF XBZ NOT SPECIFIED,
  1337. * IF TC IS NOT -USER- OR UNKNOWN,
  1338. * THEN,
  1339. * DEFAULT XBZ VALUE BY TC.
  1340. * OTHERWISE,
  1341. * IF STIP IS NOT UNKNOWN
  1342. * DEFAULT XBZ VALUE BY STIP.
  1343. * IF TA NOT SPECIFIED AND DT IS CARD PUNCH AND
  1344. * STIP IS -3780- AND LINE IS AUTO-REC,
  1345. * FLAG ERROR -- REQUIRED PARAMETER MISSING.
  1346. * IF MREC WAS SPECIFIED,
  1347. * PUT MREC VALUE IN DEVICE ENTRY.
  1348. * IF STIP OR TC IS -2780-
  1349. * PUT BCF VALUE IN DEVICE ENTRY.
  1350. * IF DT IS NOT CONSOLE OR USER,
  1351. * PUT DO VALUE IN DEVICE ENTRY.
  1352. *
  1353. #
  1354. *ENDIF
  1355. #
  1356. **** PROC BSCDEV - XREF LIST BEGINS.
  1357. #
  1358. XREF
  1359. BEGIN
  1360. PROC NDLEM2; # MAKES ENTRIES IN PASS 2 ERROR FILE #
  1361. FUNC XCDD C(10); # CONVERTS INTEGER TO CHARACTER #
  1362. END
  1363. #
  1364. ****
  1365. #
  1366. DEF ABL$DEF # 2 #;
  1367. DEF DO$DEF # 1 #; # DEFAULT -DO- VALUE #
  1368. DEF UBL$DEF # 7 #; # DEFAULT ABL VALUE #
  1369. ITEM CHARVAL C(10); # SCRATCH CHARACTER VARIABLE #
  1370. ITEM I; # SCRATCH ITEM #
  1371. ITEM ITEMP; # INTEGER TEMPORARY #
  1372. ITEM VALUE; # INTEGER VALUE TEMPORARY #
  1373. ITEM VALUE2; # INTEGER VALUE TEMPORARY #
  1374. DEF MXDT # 4 #;
  1375. ARRAY DBL$TABLE [1:MXDT] S(1);
  1376. BEGIN
  1377. ITEM DBL$DEF (0,0,60) = [2, # CONSOLE -- DEFAULT DBL #
  1378. 2, # CARD READER #
  1379. 1, # LINE PRINTER #
  1380. 1 # CARD PUNCH #
  1381. ];
  1382. END
  1383. DEF MXTC # 17 #;
  1384. ARRAY DBZ$TC$TBL [16:MXTC,1:MXDT] S(1);
  1385. BEGIN
  1386. ITEM DBZ$DEF (0,0,60) = [[400, # 2780 -- CON DEFAULT DBZ #
  1387. 512 # 3780 #
  1388. ]
  1389. [ 0, # 2780 -- CR DEFAULT DBZ (N/A) #
  1390. 0 # 3780 #
  1391. ]
  1392. [ 1, # 2780 -- LP DEFAULT DBZ #
  1393. 1 # 3780 #
  1394. ]
  1395. [ 1, # 2780 -- CP DEFAULT DBZ #
  1396. 1 # 3780 #
  1397. ]];
  1398. END
  1399. DEF MXSTIP # 11 #;
  1400. ARRAY DBZ$STIP$TBL [10:MXSTIP,1:MXDT] S(1);
  1401. BEGIN
  1402. ITEM DBZ$STIP$DEF (0,0,60) = [[400, # 2780 -- CON DEFAULT #
  1403. 512 # 3780 #
  1404. ]
  1405. [ 0, # 2780 -- CR DEFAULT (N/A) #
  1406. 0 # 3780 #
  1407. ]
  1408. [ 1, # 2780 -- LP DEFAULT #
  1409. 1 # 3780 #
  1410. ]
  1411. [ 1, # 2780 -- CP DEFAULT #
  1412. 1 # 3780 #
  1413. ]];
  1414. END
  1415. ARRAY UBZ$TBL [1:MXDT] S(1);
  1416. BEGIN
  1417. ITEM UBZ$DEF (0,0,60) = [1, # CONSOLE -- DEFAULT UBZ #
  1418. 1, # CARD READER #
  1419. 0, # LINE PRINTER (N/A) #
  1420. 0, # CARD PUNCH (N/A) #
  1421. ];
  1422. END
  1423. ARRAY XBZ$TC$TBL [16:MXTC] S(1);
  1424. BEGIN
  1425. ITEM XBZ$DEF (0,0,60) = [400, # 2780 -- CON DEFAULT XBZ #
  1426. 512 # 3780 #
  1427. ];
  1428. END
  1429. ARRAY XBZ$STIP$TBL [10:MXSTIP] S(1);
  1430. BEGIN
  1431. ITEM XBZ$STIP$DEF (0,0,60) = [400, # 2780 -- CON DEFAULT XBZ #
  1432. 512 # 3780 #
  1433. ];
  1434. END
  1435. SWITCH BSCDJUMP , , # UNK , NODE ,#
  1436. , , # VARIANT , OPGO ,#
  1437. , , # DMP , LLNAME ,#
  1438. , , # , ,#
  1439. , , # , ,#
  1440. , , # HNAME , LOC ,#
  1441. , , # , ,#
  1442. , , # , ,#
  1443. , , # , ,#
  1444. , GEN$PARAM , # NCNAME , DI ,#
  1445. , , # N1 , P1 ,#
  1446. , , # N2 , P2 ,#
  1447. , , # NOLOAD1 , NOLOAD2 ,#
  1448. , , # , ,#
  1449. , , # , ,#
  1450. , , # NI , PORT ,#
  1451. , , # LTYPE , TIPTYPE ,#
  1452. , , # AUTO , SL ,#
  1453. , , # LSPEED , DFL ,#
  1454. , , # FRAME , RTIME ,#
  1455. , , # RCOUNT , NSVC ,#
  1456. , , # PSN , DCE ,#
  1457. , , # DTEA , ,#
  1458. , , # , ,#
  1459. , , # , ,#
  1460. , , # STIP , TC ,#
  1461. , , # RIC , CSET ,#
  1462. , , # TSPEED , CA ,#
  1463. , , # CO , BCF ,#
  1464. , , # MREC , W ,#
  1465. , , # CTYP , NCIR ,#
  1466. , , # NEN , COLLECT ,#
  1467. , NEXT$BSC , # , DT ,#
  1468. SDT , MB$PARAM , # SDT , TA ,#
  1469. ABL , DBZ , # ABL , DBZ ,#
  1470. UBZ$UBL , FLOW$PARAM , # UBZ , DBL ,#
  1471. UBZ$UBL , FLOW$PARAM , # UBL , XBZ ,#
  1472. ILLEGAL , ILLEGAL , # DO , STREAM ,#
  1473. CON$PARAM , , # HN , AUTOLOG ,#
  1474. CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
  1475. GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
  1476. GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
  1477. GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
  1478. GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
  1479. GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
  1480. ILLEGAL , ILLEGAL , # AB , BR ,#
  1481. ILLEGAL , ILLEGAL , # BS , B1 ,#
  1482. ILLEGAL , ILLEGAL , # B2 , CI ,#
  1483. ILLEGAL , CON$PARAM , # CN , CT ,#
  1484. ILLEGAL , ILLEGAL , # DLC , DLTO ,#
  1485. ILLEGAL , ILLEGAL , # DLX , EP ,#
  1486. ILLEGAL , ILLEGAL , # IN , LI ,#
  1487. ILLEGAL , ILLEGAL , # OP , PA ,#
  1488. ILLEGAL , ILLEGAL , # PG , PL ,#
  1489. GEN$PARAM , ILLEGAL , # PW , SE ,#
  1490. ILLEGAL , ILLEGAL , # FA , XLC ,#
  1491. ILLEGAL , ILLEGAL , # XLX , XLTO ,#
  1492. ILLEGAL , ILLEGAL , # ELO , ELX ,#
  1493. ILLEGAL , ILLEGAL , # ELR , EBO ,#
  1494. ILLEGAL , ILLEGAL , # EBR , CP ,#
  1495. ILLEGAL , ILLEGAL , # IC , OC ,#
  1496. ILLEGAL , ILLEGAL , # LK , EBX ,#
  1497. , GEN$PARAM , # , MC ,#
  1498. ILLEGAL , , # XLY , EOF ,#
  1499. , ILLEGAL , # PAD , RTS #
  1500. ILLEGAL , ILLEGAL ; # MCI , MLI #
  1501. CONTROL EJECT;
  1502. # #
  1503. # BSCDEV CODE BEGINS HERE #
  1504. # #
  1505. FOR I=3 STEP 1 UNTIL STWC[0] # CHECK EACH VALUE-DEC ENTRY #
  1506. DO
  1507. BEGIN
  1508. GOTO BSCDJUMP[STKWID[I]]; # GOTO APPROPRIATE PARAGRAPH #
  1509. GEN$PARAM:
  1510. GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETER #
  1511. TEST I;
  1512. FLOW$PARAM:
  1513. FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETER #
  1514. TEST I;
  1515. CON$PARAM:
  1516. IF CRNT$DT EQ DT"CON" # IF CURRENT DT IS CONSOLE #
  1517. THEN
  1518. BEGIN
  1519. CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
  1520. END
  1521. ELSE # DT IS NOT CONSOLE #
  1522. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  1523. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  1524. END
  1525. TEST I;
  1526. MB$PARAM:
  1527. IF CRNT$DT EQ DT"CP" # IF DT IS CARD PUNCH #
  1528. THEN
  1529. BEGIN # IF STIP IS 3780 OR UNKNOWN #
  1530. IF CRNT$STIP EQ STIP"$3780" OR
  1531. CRNT$STIP EQ STIP"UNKNOWN"
  1532. THEN
  1533. BEGIN # CHECK MODE4/BSC PARAMETER #
  1534. MBDEV(STWORD[I],STLNUM[0]);
  1535. END
  1536. ELSE # STIP MUST BE 2780 #
  1537. BEGIN # FLAG ERROR -- INVALID WITH STIP SPEC #
  1538. NDLEM2(ERR135,STLNUM[0],KWDNAME[STKWID[I]]);
  1539. END
  1540. END
  1541. ELSE # DT IS NOT CARD PUNCH #
  1542. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  1543. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  1544. END
  1545. TEST I;
  1546. SDT:
  1547. IF CRNT$DT EQ DT"LP" OR # IF DT IS LINE PRINTER OR #
  1548. CRNT$DT EQ DT"CR" OR # CARD READER #
  1549. STVALNAM[I] EQ "SDT12" OR # IF USER SDT12 THROUGH SDT15 #
  1550. STVALNAM[I] EQ "SDT13" OR
  1551. STVALNAM[I] EQ "SDT14" OR
  1552. STVALNAM[I] EQ "SDT15"
  1553. THEN
  1554. BEGIN # CHECK PASSIVE DEVICE PARAMETER#
  1555. BTCHDEV(STWORD[I],STLNUM[0]);
  1556. END
  1557. ELSE # DT IS NOT LP OR CR #
  1558. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  1559. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  1560. END
  1561. TEST I;
  1562. ILLEGAL: # ALL OTHER PARAMETERS FLAG AS INVALID #
  1563. IF NOT TT$USED # IF THIS IS AN AUTO-SYNC LINE #
  1564. THEN
  1565. BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
  1566. NDLEM2(ERR135,STLNUM[0],KWDNAME[STKWID[I]]);
  1567. END
  1568. ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
  1569. BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
  1570. NDLEM2(ERR106,STLNUM[0],KWDNAME[STKWID[I]]);
  1571. END
  1572. TEST I;
  1573. ABL:
  1574. IF CRNT$DT EQ DT"CON" # IF CURRNT DT IS CONSOLE #
  1575. THEN
  1576. BEGIN # CHECK FLOW CONTROL PARAMETER #
  1577. FLOWDEV(STWORD[I],STLNUM[0]);
  1578. END
  1579. ELSE # DT IS NOT CONSOLE #
  1580. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  1581. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  1582. END
  1583. TEST I;
  1584. DBZ:
  1585. IF CRNT$DT NQ DT"CR" # IF DT IS NOT CARD READER #
  1586. THEN
  1587. BEGIN # CHECK FLOW CONTROL PARAMETER #
  1588. FLOWDEV(STWORD[I],STLNUM[0]);
  1589. END
  1590. ELSE # DT IS CARD READER #
  1591. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  1592. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  1593. END
  1594. TEST I;
  1595. UBZ$UBL: # IF DT IS CONSOLE, CARD READER, LINE #
  1596. # PRINTER, OR CARD PUNCH #
  1597. IF CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"CR" OR
  1598. CRNT$DT EQ DT"LP" OR CRNT$DT EQ DT"CP"
  1599. THEN
  1600. BEGIN
  1601. IF STKWID[I] EQ KID"UBZ" # IF UBZ PARAMETER #
  1602. THEN
  1603. BEGIN
  1604. FLOWDEV(STWORD[I],STLNUM[0]);
  1605. END
  1606. ELSE
  1607. BEGIN # ELSE, UBL PARAMETER #
  1608. IF (CRNT$DT NQ "CON") AND
  1609. (STVALNUM[I] GQ 1 AND STVALNUM[I] LQ 7)
  1610. THEN
  1611. BEGIN # PASSIVE DEVICES: 1 <= UBL <= 7#
  1612. FLOWDEV(STWORD[I],STLNUM[0]);
  1613. END
  1614. ELSE
  1615. BEGIN # PARAMETER VALUE OUT OF RANGE #
  1616. CHARVAL=XCDD(STVALNUM[I]);
  1617. NDLEM2(ERR100,STLNUM[0],CHARVAL);
  1618. END
  1619. END
  1620. END
  1621. ELSE
  1622. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  1623. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  1624. END
  1625. NEXT$BSC:
  1626. END
  1627. IF NOT ABL$USED AND # IF ABL NOT SPECIFIED AND #
  1628. CRNT$DT EQ DT"CON" # CURRENT DT IS CONSOLE #
  1629. THEN
  1630. BEGIN # MAKE FNFV PAIR ENTRY #
  1631. DEVFNFV(FN"ABL",ABL$DEF);
  1632. END
  1633. IF NOT DBL$USED # IF DBL NOT SPECIFIED #
  1634. THEN
  1635. BEGIN # MAKE FNFV PAIR ENTRY #
  1636. DEVFNFV(FN"DBL",DBL$DEF[CRNT$DT]);
  1637. END
  1638. IF NOT UBL$USED # IF UBL NOT SPECIFIED #
  1639. THEN
  1640. BEGIN # MAKE FNFV PAIR ENTRY #
  1641. DEVFNFV(FN"UBL",UBL$DEF);
  1642. END
  1643. IF NOT DBZ$USED AND # IF DBZ NOT SPECIFIED AND #
  1644. CRNT$DT NQ DT"CR" # CRNT DT IS NOT CARD READER #
  1645. THEN
  1646. BEGIN
  1647. VALUE = 0; # CLEAR VALUE TEMPORARY #
  1648. IF CRNT$TC NQ TC"USER" AND # IF TC IS NOT USER OR UNKNOWN #
  1649. CRNT$TC NQ TC"UNKNOWN"
  1650. THEN
  1651. BEGIN # DEFAULT DBZ BY TC AND DT #
  1652. VALUE = DBZ$DEF[CRNT$TC,CRNT$DT];
  1653. END
  1654. ELSE # TC IS USER OR UNKNOWN #
  1655. BEGIN
  1656. IF CRNT$STIP NQ STIP"UNKNOWN"
  1657. THEN # IF STIP IS NOT UNKNOWN #
  1658. BEGIN # DEFAULT DBZ BY STIP AND DT #
  1659. VALUE = DBZ$STIP$DEF[CRNT$STIP,CRNT$DT];
  1660. END
  1661. END
  1662. IF VALUE NQ 0 # IF DEFAULT DBZ WAS DETERMINED #
  1663. THEN
  1664. BEGIN # MAKE FNFV PAIR ENTRY FOR #
  1665. VALUE2 = B<44,8>VALUE; # MSB OF VALUE #
  1666. DEVFNFV(FN"DBZ$MSB",VALUE2);
  1667. VALUE2 = B<52,8>VALUE; # LSB OF VALUE #
  1668. DEVFNFV(FN"DBZ$LSB",VALUE2);
  1669. END
  1670. END
  1671. IF NOT UBZ$USED AND # IF UBZ WAS NOT SPECIFIED #
  1672. (CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"CR")
  1673. THEN
  1674. BEGIN
  1675. DEVFNFV(FN"UBZ",UBZ$DEF[CRNT$DT]); # ENTER DEFAULT UBZ #
  1676. END
  1677. IF NOT XBZ$USED # IF XBZ NOT SPECIFIED #
  1678. THEN
  1679. BEGIN
  1680. VALUE = 0; # CLEAR VALUE TEMPORARY #
  1681. IF CRNT$TC NQ TC"USER" AND # IF TC IS NOT USER OR UNKNOWN #
  1682. CRNT$TC NQ TC"UNKNOWN"
  1683. THEN
  1684. BEGIN # DEFAULT XBZ BY TC AND DT #
  1685. VALUE = XBZ$DEF[CRNT$TC];
  1686. END
  1687. ELSE # TC IS USER OR UNKNOWN #
  1688. BEGIN
  1689. IF CRNT$STIP NQ STIP"UNKNOWN"
  1690. THEN # IF STIP IS NOT UNKNOWN #
  1691. BEGIN # DEFAULT XBZ BY STIP AND DT #
  1692. VALUE = XBZ$STIP$DEF[CRNT$STIP];
  1693. END
  1694. END
  1695. IF VALUE NQ 0 # DEFAULT XBZ VALUE DETERMINED #
  1696. THEN
  1697. BEGIN # MAKE FNFV PAIR ENTRY FOR #
  1698. VALUE2 = B<44,8>VALUE; # MSB OF DEFAULT VALUE #
  1699. DEVFNFV(FN"XBZ$MSB",VALUE2);
  1700. VALUE2 = B<52,8>VALUE; # LSB OF DEFAULT VALUE #
  1701. DEVFNFV(FN"XBZ$LSB",VALUE2);
  1702. END
  1703. END
  1704. IF NOT TA$USED AND # IF TA NOT SPECIFIED AND #
  1705. CRNT$DT EQ DT"CP" # DT IS CARD PUNCH #
  1706. THEN
  1707. BEGIN
  1708. IF NOT AUTO$REC AND # IF AUTO-REC LINE AND #
  1709. CRNT$STIP EQ STIP"$3780" # STIP IS 3780 #
  1710. THEN
  1711. BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
  1712. NDLEM2(ERR103,STLNUM[0],"TA");
  1713. END
  1714. END
  1715. IF CRNT$MREC NQ 0 # IF MREC VALUE SPECIFIED #
  1716. THEN
  1717. BEGIN # MAKE FNFV PAIR VALUE #
  1718. DEVFNFV(FN"MREC",CRNT$MREC);
  1719. END
  1720. IF CRNT$STIP EQ STIP"$2780" OR # IF STIP OR TC IS 2780 #
  1721. CRNT$TC EQ TC"$2780"
  1722. THEN
  1723. BEGIN # MAKE FNFV PAIR ENTRY FOR BCF #
  1724. DEVFNFV(FN"BCF",BCF$FLAG);
  1725. END
  1726. IF CRNT$DT NQ DT"CON" AND
  1727. CRNT$DT NQ DT"USER"
  1728. THEN # IF CURRENT DEVICE IS A PASSIVE DEVICE #
  1729. BEGIN
  1730. DEVFNFV(FN"DO$",DO$DEF); # ENTER DEFAULT -DO- INTO ENTRY #
  1731. END
  1732. RETURN; # **** RETURN **** #
  1733. END # BSCDEV #
  1734. CONTROL EJECT;
  1735. PROC BTCHDEV(BDWORD,BDLNUM);
  1736. BEGIN
  1737. *IF,DEF,IMS
  1738. #
  1739. ** BTCHDEV - CHECK BATCH DEVICE PARAMETERS.
  1740. *
  1741. * D.K. ENDO 81/11/20
  1742. *
  1743. * THIS PROCEDURE CHECKS THE PARAMETERS THAT ARE USED FOR BATCH OR
  1744. * PASSIVE DEVICES.
  1745. *
  1746. * PROC BTCHDEV(BDWORD,BDLNUM)
  1747. *
  1748. * ENTRY BDWORD = VALUE DECLARATION ENTRY.
  1749. * BDLNUM = CURRENT LINE NUMBER.
  1750. *
  1751. * EXIT NONE.
  1752. *
  1753. * METHOD
  1754. *
  1755. * SELECT CASE THAT APPLIES:
  1756. * CASE 1(SDT):
  1757. * IF VALUE IS O.K.,
  1758. * IF VALUE IS NOT -CCP-,
  1759. * MAP NUMERIC VALUE FOR CHARACTER VALUE.
  1760. * PUT NUMERIC VALUE INTO DEVICE ENTRY
  1761. * IF TIPTYPE IS NOT USER OR UNKNOWN AND
  1762. * DT IS NOT USER OR UNKNOWN AND
  1763. * SDT VALUE NOT EQUAL SDT12, SDT13, SDT14, OR SDT15
  1764. * THEN,
  1765. * IF DT AND SDT ARE NOT COMPATIBLE,
  1766. * FLAG ERROR -- VALUE INVALID WITH DT SPECIFIED.
  1767. * CASE 2(DO):
  1768. * IF VALUE IS O.K.,
  1769. * CHECK IF VALUE IS IN RANGE.
  1770. * IF IN RANGE,
  1771. * PUT VALUE IN DEVICE ENTRY.
  1772. * IF TIPTYPE IS NOT USER OR UNKNOWN AND
  1773. * DT IS NOT USER OR UNKNOWN,
  1774. * THEN,
  1775. * IF DO VALUE IS NOT UNIQUE FOR DEVICE TYPE,
  1776. * FLAG ERROR -- DUPLICATE DO VALUE.
  1777. * CASE 3(STREAM):
  1778. * IF VALUE IS O.K.,
  1779. * IF VALUE IS -AUTOREC-,
  1780. * THEN,
  1781. * IF LINE IS NOT AUTO-REC,
  1782. * FLAG ERROR -- VALUE INVALID FOR FIXED LINES.
  1783. * OTHERWISE,
  1784. * CHECK IF VALUE IS IN RANGE.
  1785. * IF IN RANGE,
  1786. * PUT VALUE IN DEVICE ENTRY.
  1787. * IF TIPTYPE IS NOT USER OR UNKNOWN AND
  1788. * DT IS NOT USER OR UNKNOWN,
  1789. * THEN,
  1790. * IF VALUE IS NOT UNIQUE FOR DEVICE TYPE,
  1791. * THEN,
  1792. * FLAG ERROR -- DUPLICATE STREAM VALUE.
  1793. * OTHERWISE,
  1794. * IF DT IS CARD PUNCH OR PLOTTER,
  1795. * IF VALUE IS NOT UNIQUE,
  1796. * FLAG ERROR -- DUPLICATE STREAM VALUE.
  1797. *
  1798. #
  1799. *ENDIF
  1800. ARRAY BDWORD [0:0] S(1); # VALUE-DECLARATION ENTRY #
  1801. BEGIN
  1802. ITEM BDKWID U(0,0,9); # KEYWORD I.D. #
  1803. ITEM BDVLERR B(0,17,1); # VALUE ERROR FLAG #
  1804. ITEM BDNAME C(0,18,7); # CHARACTER STRING VALUE #
  1805. ITEM BDVAL (0,18,42); # INTEGER VALUE #
  1806. END
  1807. ITEM BDLNUM; # STATEMENT SOURCE LINE NUMBER #
  1808. #
  1809. **** PROC BTCHDEV - XREF LIST BEGINS.
  1810. #
  1811. XREF
  1812. BEGIN
  1813. PROC NDLCKRG; # CHECKS IF VALUE IS WITH RANGE FOR PARAM #
  1814. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  1815. END
  1816. #
  1817. ****
  1818. #
  1819. DEF SDT$UNKNOWN # 999 #; # CONSTANT USED IF SDT IS UNK #
  1820. ITEM BDSTAT B; # STATUS RETURNED BY NDLCKRG #
  1821. ITEM CRNT$SDT; # POINTER TO SDT TABLE OF CRNT VALUE #
  1822. ITEM I; # SCRATCH ITEM #
  1823. ITEM ITEMP; # INTEGER TEMPORARY FOR STORING WORD COUNT#
  1824. ITEM VALUE; # INTEGER VALUE TEMPORARY #
  1825. DEF MXSDT # 11 #; # MAXIMUM NUMBER OF SDT-S #
  1826. ARRAY SDT$TABLE [1:MXSDT] S(1);
  1827. BEGIN
  1828. ITEM SDT$NAME C(0,0,7) = ["A6", # SDT VALUES #
  1829. "B6",
  1830. "A9",
  1831. "29",
  1832. "26",
  1833. "6BIT",
  1834. "8BIT",
  1835. "SDT12",
  1836. "SDT13",
  1837. "SDT14",
  1838. "SDT15"
  1839. ];
  1840. ITEM SDT$NUMV U(0,42,9) = [0, # A6 - SDT NUMERIC VAL#
  1841. 1, # B6 #
  1842. 2, # A9 #
  1843. 0, # 29 #
  1844. 1, # 26 #
  1845. 0, # 6BIT #
  1846. 1, # 8BIT #
  1847. 12, # SDT12 #
  1848. 13, # SDT13 #
  1849. 14, # SDT14 #
  1850. 15 # SDT15 #
  1851. ];
  1852. ITEM DT$ALLW U(0,51,9) = [DT"LP", # A6 - DT ALLOWED #
  1853. DT"LP", # B6 #
  1854. DT"LP", # A9 #
  1855. DT"CR", # 29 #
  1856. DT"CR", # 26 #
  1857. DT"PL", # 6BIT #
  1858. DT"PL", # 8BIT #
  1859. 0, # SDT12 - NOT CHECKED #
  1860. 0, # SDT13 - NOT CHECKED #
  1861. 0, # SDT14 - NOT CHECKED #
  1862. 0 # SDT15 - NOT CHECKED #
  1863. ];
  1864. END
  1865. SWITCH BTCHJUMP , , # UNK , NODE ,#
  1866. , , # VARIANT , OPGO ,#
  1867. , , # DMP , LLNAME ,#
  1868. , , # , ,#
  1869. , , # , ,#
  1870. , , # HNAME , LOC ,#
  1871. , , # , ,#
  1872. , , # , ,#
  1873. , , # , ,#
  1874. , , # NCNAME , DI ,#
  1875. , , # N1 , P1 ,#
  1876. , , # N2 , P2 ,#
  1877. , , # NOLOAD1 , NOLOAD2 ,#
  1878. , , # , ,#
  1879. , , # , ,#
  1880. , , # NI , PORT ,#
  1881. , , # LTYPE , TIPTYPE ,#
  1882. , , # AUTO , SL ,#
  1883. , , # LSPEED , DFL ,#
  1884. , , # FRAME , RTIME ,#
  1885. , , # RCOUNT , NSVC ,#
  1886. , , # PSN , DCE ,#
  1887. , , # DTEA , ,#
  1888. , , # , ,#
  1889. , , # , ,#
  1890. , , # STIP , TC ,#
  1891. , , # RIC , CSET ,#
  1892. , , # TSPEED , CA ,#
  1893. , , # CO , BCF ,#
  1894. , , # MREC , W ,#
  1895. , , # CTYP , NCIR ,#
  1896. , , # NEN , COLLECT ,#
  1897. , , # , DT ,#
  1898. SDT$ , , # SDT , TA ,#
  1899. , , # ABL , DBZ ,#
  1900. , , # UBZ , DBL ,#
  1901. , , # UBL , XBZ ,#
  1902. DO$ , STREAM , # DO , STREAM ,#
  1903. , , # HN , AUTOLOG ,#
  1904. , , # AUTOCON , PRI ,#
  1905. , , # P90 , P91 ,#
  1906. , , # P92 , P93 ,#
  1907. , , # P94 , P95 ,#
  1908. , , # P96 , P97 ,#
  1909. , , # P98 , P99 ,#
  1910. , , # AB , BR ,#
  1911. , , # BS , B1 ,#
  1912. , , # B2 , CI ,#
  1913. , , # CN , CT ,#
  1914. , , # DLC , DLTO ,#
  1915. , , # DLX , EP ,#
  1916. , , # IN , LI ,#
  1917. , , # OP , PA ,#
  1918. , , # PG , PL ,#
  1919. , ; # PW , SE #
  1920. CONTROL EJECT;
  1921. # #
  1922. # BTCHDEV CODE BEGINS HERE #
  1923. # #
  1924. GOTO BTCHJUMP[BDKWID[0]]; # GOTO APPROPRIATE PARAGRAPH #
  1925. SDT$:
  1926. IF NOT BDVLERR[0] # IF VALUE IS O.K. #
  1927. THEN
  1928. BEGIN
  1929. IF BDNAME[0] NQ "CCP" # IF VALUE IS NOT -CCP- #
  1930. THEN
  1931. BEGIN
  1932. VALUE = SDT$UNKNOWN; # SET VALUE TO UNKNOWN #
  1933. FOR I=1 STEP 1 UNTIL MXSDT # SEARCH SDT TABLE FOR VALUE #
  1934. DO
  1935. BEGIN # IF VALUE FOUND #
  1936. IF BDNAME[0] EQ SDT$NAME[I]
  1937. THEN
  1938. BEGIN
  1939. VALUE = SDT$NUMV[I]; # SAVE NUMERICAL VALUE #
  1940. CRNT$SDT = I; # SAVE POINTER TO ENTRY #
  1941. END
  1942. END
  1943. IF VALUE NQ SDT$UNKNOWN # IF SDT VALUE WAS FOUND #
  1944. THEN
  1945. BEGIN # MAKE FNFV PAIR ENTRY FOR SDT #
  1946. DEVFNFV(FN"SDT",VALUE);
  1947. IF (CRNT$TIP NQ TIP"USER" AND CRNT$TIP NQ TIP"UNKNOWN") AND
  1948. (CRNT$DT NQ DT"USER" AND CRNT$DT NQ DT"UNKNOWN") AND
  1949. (VALUE NQ SDT$12 AND VALUE NQ SDT$13 AND
  1950. VALUE NQ SDT$14 AND VALUE NQ SDT$15)
  1951. THEN # IF TIP IS NOT USER OR UNKNOWN #
  1952. BEGIN # AND DT NOT USER OR UNKNOWN #
  1953. IF CRNT$DT NQ DT$ALLW[CRNT$SDT]
  1954. THEN # IF VALUE NOT ALLOW WITH DT #
  1955. BEGIN # FLAG ERROR -- VALUE INVALID WITH DT SPEC#
  1956. NDLEM2(ERR138,BDLNUM,BDNAME[0]);
  1957. END
  1958. END
  1959. END
  1960. END
  1961. END
  1962. GOTO NEXT$BTCH;
  1963. DO$:
  1964. DO$USED = TRUE; # SET -DO- SPECIFIED FLAG #
  1965. IF NOT BDVLERR[0] # IF VALUE IS O.K. #
  1966. THEN
  1967. BEGIN # CHECK RANGE #
  1968. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  1969. THEN
  1970. BEGIN
  1971. USR$RANGE(BDVAL[0],USR$WID1,NUM"DEC",BDSTAT); # CHECK RANGE #
  1972. END
  1973. ELSE
  1974. BEGIN
  1975. NDLCKRG(BDKWID[0],BDVAL[0],BDSTAT); # OTHERWISE CHECK NORMAL#
  1976. END
  1977. # RANGE #
  1978. IF BDSTAT # IF VALUE IS WITHIN RANGE #
  1979. THEN
  1980. BEGIN # MAKE FNFV PAIR ENTRY #
  1981. DEVFNFV(FN"DO$",BDVAL[0]);
  1982. IF (CRNT$TIP NQ TIP"USER" AND CRNT$TIP NQ TIP"UNKNOWN") AND
  1983. (CRNT$DT NQ DT"USER" AND CRNT$DT NQ DT"UNKNOWN")
  1984. THEN # IF TIP IS NOT USER OR UNKNOWN #
  1985. BEGIN # AND DT NOT USER OR UNKNOWN #
  1986. IF B<BDVAL[0],1>DO$MAP[CRNT$DT] NQ 1
  1987. THEN # IF BIT FOR VALUE NOT SET #
  1988. BEGIN # SET IT #
  1989. B<BDVAL[0],1>DO$MAP[CRNT$DT] = 1;
  1990. END
  1991. ELSE # -DO- VALUE ALREADY USED #
  1992. BEGIN # FLAG ERROR -- DO VALUE NOT UNIQUE FOR DT#
  1993. NDLEM2(ERR139,BDLNUM," ");
  1994. END
  1995. END
  1996. END
  1997. END
  1998. GOTO NEXT$BTCH;
  1999. STREAM:
  2000. STREAM$USED = TRUE; # SET STREAM SPECIFIED FLAG #
  2001. IF NOT BDVLERR[0] # IF VALUE IS O.K. #
  2002. THEN
  2003. BEGIN
  2004. IF BDNAME[0] NQ "AUTOREC" # IF VALUE IS NOT -AUTOREC- #
  2005. THEN
  2006. BEGIN # CHECK RANGE #
  2007. IF CRNT$TIP EQ TIP"USER" # IF USER DEFINED TIPTYPES #
  2008. THEN
  2009. BEGIN
  2010. USR$RANGE(BDVAL[0],USR$WID1,NUM"DEC",BDSTAT);
  2011. END
  2012. ELSE
  2013. BEGIN
  2014. NDLCKRG(BDKWID[0],BDVAL[0],BDSTAT); # CHECK NORMAL RANGE #
  2015. END
  2016. IF BDSTAT # IF VALUE IS WITHIN RANGE #
  2017. THEN
  2018. BEGIN # PUT VALUE IN DEVICE ENTRY #
  2019. DEA2[CRNT$DEV + 2] = BDVAL[0];
  2020. IF (CRNT$TIP NQ TIP"USER" AND CRNT$TIP NQ TIP"UNKNOWN") AND
  2021. (CRNT$DT NQ DT"USER" AND CRNT$DT NQ DT"UNKNOWN")
  2022. THEN # IF TIP AND DT IS NOT USER OR #
  2023. BEGIN # UNKNOWN #
  2024. IF B<BDVAL[0],1>STRM$MAP[CRNT$DT] NQ 1
  2025. THEN # IF BIT FOR VALUE NOT SET #
  2026. BEGIN # SET IT #
  2027. B<BDVAL[0],1>STRM$MAP[CRNT$DT] = 1;
  2028. IF CRNT$DT EQ DT"CP" OR # DT IS CP OR PL #
  2029. CRNT$DT EQ DT"PL"
  2030. THEN
  2031. BEGIN # IF BIT FOR VALUE IS NOT SET #
  2032. IF B<BDVAL[0],1>CP$PL$MAP NQ 1
  2033. THEN
  2034. BEGIN # SET IT #
  2035. B<BDVAL[0],1>CP$PL$MAP = 1;
  2036. END
  2037. ELSE # VALUE ALREADY USED FOR CR AND PL #
  2038. BEGIN # FLAG ERROR -- PL AND CR STREAM VALUE NOT#
  2039. NDLEM2(ERR140,BDLNUM," "); # UNIQUE #
  2040. END
  2041. END
  2042. END
  2043. ELSE # STREAM VALUE ALREADY USED #
  2044. BEGIN # FLAG ERROR -- STREAM VALUE NOT UNIQUE #
  2045. NDLEM2(ERR141,BDLNUM," ");
  2046. END
  2047. END
  2048. END
  2049. END
  2050. ELSE
  2051. BEGIN # VALUE IS -AUTOREC- #
  2052. IF NOT AUTO$REC # IF NOT ON AN AUTO-REC LINE #
  2053. THEN
  2054. BEGIN # FLAG ERROR -- AUTOREC NOT VALID ON FIXED#
  2055. NDLEM2(ERR113,BDLNUM," "); # CONFIGURATION LINES #
  2056. END
  2057. END
  2058. END
  2059. GOTO NEXT$BTCH;
  2060. NEXT$BTCH:
  2061. RETURN; # **** RETURN **** #
  2062. END # BTCHDEV #
  2063. CONTROL EJECT;
  2064. PROC CONDEV(CDWORD,CDLNUM);
  2065. BEGIN
  2066. *IF,DEF,IMS
  2067. #
  2068. ** CONDEV - CHECK DEVICE STATEMENT CONSOLE PARAMETERS.
  2069. *
  2070. * D.K. ENDO 81/11/20
  2071. *
  2072. * THIS PROCEDURE CHECKS PARAMETERS THAT ARE ONLY ALLOWED FOR CONSOLE
  2073. * DEVICES.
  2074. *
  2075. * PROC CONDEV(CDWORD,CDLNUM)
  2076. *
  2077. * ENTRY CDWORD = VALUE DECLARATION ENTRY.
  2078. * CDLNUM = CURRENT SOURCE LINE NUMBER.
  2079. *
  2080. * EXIT NONE.
  2081. *
  2082. * METHOD
  2083. *
  2084. * IF VALUE IS O.K. AND NOT -CCP-,
  2085. * SELECT CASE THAT APPLIES,
  2086. * CASE 1(AL,BS,B1,B2,CN,CT):
  2087. * CHECK IF VALUE IS IN RANGE.
  2088. * IF IN RANGE,
  2089. * PUT VALUE IN DEVICE ENTRY.
  2090. * SAVE VALUE FOR UNIQUENESS TESTING.
  2091. * CASE 2(DLC,CI,DLX,PL,LI,XLY):
  2092. * CHECK IF VALUE IS IN RANGE.
  2093. * IF IN RANGE
  2094. * PUT VALUE IN DEVICE ENTRY.
  2095. * CASE 3(HN):
  2096. * IF VALUE IS NOT -NONE-,
  2097. * CHECK IF VALUE IN RANGE.
  2098. * IF IN RANGE,
  2099. * CHECK IF VALUE IS A LEGAL HOST NODE.
  2100. * IF LEGAL HOST I.D.,
  2101. * THEN,
  2102. * PUT VALUE IN DEVICE ENTRY.
  2103. * OTHERWISE,
  2104. * FLAG ERROR -- INVALID HN VALUE.
  2105. * CASE 4(AUTOCON,AUTOLOG,BR,DLTO,EP,PG,SE):
  2106. * IF VALUE IS -YES-
  2107. * PUT VALUE IN DEVICE ENTRY.
  2108. * CASE 5(PA,OP,IN)
  2109. * MAP NUMERIC VALUE FOR CHARACTER VALUE.
  2110. * PUT NUMERIC VALUE IN DEVICE ENTRY.
  2111. *
  2112. #
  2113. *ENDIF
  2114. ARRAY CDWORD [0:0] S(1); # VALUE DECLARATION ENTRY #
  2115. BEGIN
  2116. ITEM CDKWID U(0,0,9); # KEYWORD I.D. #
  2117. ITEM CDVLERR B(0,17,1); # VALUE ERROR FLAG #
  2118. ITEM CDNAME C(0,18,7); # VALUE NAME #
  2119. ITEM CDVAL (0,18,42); # VALUE NUMBER #
  2120. END
  2121. ITEM CDLNUM; # STATEMENT SOURCE LINE NUMBER #
  2122. #
  2123. **** PROC CONDEV - XREF LIST BEGINS.
  2124. #
  2125. XREF
  2126. BEGIN
  2127. PROC NDLCKRG; # CHECKS IF VALUE IS WITHIN RANGE #
  2128. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  2129. FUNC XCDD C(10); # CONVERT INTEGER TO DISPLAY CODE #
  2130. END
  2131. #
  2132. ****
  2133. #
  2134. ITEM CDSTAT B; # RETURNED STATUS FROM NDLCKRG #
  2135. ITEM CTEMP C(10); # CHARACTER TEMPORARY #
  2136. ITEM FOUND B; # FLAG INDICATING ENTRY WAS FOUND #
  2137. ITEM I; # SCRATCH ITEM #
  2138. ITEM ITEMP; # INTEGER TEMPORARY #
  2139. ITEM MAX$ENT; # MAXIMUM ENTRY IN TABLE #
  2140. ITEM VALUE1; # INTEGER TEMPORARY #
  2141. ITEM VALUE2; # INTEGER TEMPORARY #
  2142. DEF MNKWD # 76 #; # MINIMUM KEYWORD I.D. IN TABLE #
  2143. DEF MXKWD # 129 #; # MAXIMUM KEYWORD I.D. IN TABLE #
  2144. ARRAY FN$TABLE [MNKWD:MXKWD] S(1); # FN VALUE FOR KEYWORDS #
  2145. BEGIN
  2146. ITEM CD$FN (0,0,60) = [FN"HN", # HN #
  2147. , # AUTOLOG #
  2148. FN"AUTOCON", # AUTOCON #
  2149. FN"PRI", # PRI #
  2150. ,,,,,,,,,, # P90 THRU P99 #
  2151. FN"AB", # AB #
  2152. FN"BR", # BR #
  2153. FN"BS", # BS #
  2154. FN"B1", # B1 #
  2155. FN"B2", # B2 #
  2156. FN"CI", # CI #
  2157. FN"CN", # CN #
  2158. FN"CT", # CT #
  2159. FN"DLC$MSB", # DLC #
  2160. FN"DLTO", # DLTO #
  2161. FN"DLX", # DLX #
  2162. FN"EP", # EP #
  2163. FN"IN", # IN #
  2164. FN"LI", # LI #
  2165. FN"OP", # OP #
  2166. FN"PA", # PA #
  2167. FN"PG", # PG #
  2168. FN"PL", # PL #
  2169. FN"PW", # PW #
  2170. FN"SE", # SE #
  2171. FN"FA", # FA #
  2172. FN"DLC$MSB", # XLC #
  2173. FN"DLX", # XLX #
  2174. FN"DLTO", # XLTO #
  2175. FN"ELO", # ELO #
  2176. FN"ELX", # ELX #
  2177. FN"ELR", # ELR #
  2178. FN"EBO", # EBO #
  2179. FN"EBR", # EBR #
  2180. FN"CP", # CP #
  2181. FN"IC", # IC #
  2182. FN"OC", # OC #
  2183. FN"LK", # LK #
  2184. FN"EBX", # EBX #
  2185. ,
  2186. FN"MC", # MC #
  2187. FN"XLY", # XLY #
  2188. , # EOF #
  2189. , # PAD #
  2190. FN"RTS" # RTS #
  2191. ];
  2192. END
  2193. DEF MXEBR # 4 #; # MAXIMUM NUMBER OF EBR VALUES #
  2194. ARRAY EBR$TABLE [1:MXEBR] S(1);
  2195. BEGIN
  2196. ITEM EBR$VAL C(0,0,7) = ["NO", # NONE #
  2197. "CR", # CARRIAGE RETURN -- EBR VALUES #
  2198. "LF", # LINE FEED #
  2199. "CL" # CARRIAGE RETURN AND LINE FEED #
  2200. ];
  2201. ITEM EBR$NUMV (0,42,18) = [0, # NONE - NUMERIC VAL #
  2202. 1, # CARRIAGE RETURN - NUMERIC VAL #
  2203. 2, # LINE FEED #
  2204. 3 # CARRIAGE RETURN AND LINE FEED #
  2205. ];
  2206. END
  2207. DEF MXELO # 2 #; # MAXIMUM NUMBER OF ELO/EBO VALUES #
  2208. ARRAY ELO$TABLE [1:MXELO] S(1);
  2209. BEGIN
  2210. ITEM ELO$VAL C(0,0,7) = ["EL", # DEFAULT MODE CHAR - ELO VALUES#
  2211. "EB" # SAME AS EB #
  2212. ];
  2213. ITEM ELO$NUMV (0,42,18) = [1, # DEFAULT MODE CHAR - NUMERIC #
  2214. 2, # SAME AS EB #
  2215. ];
  2216. END
  2217. DEF MXIN # 3 #; # MAXIMUM NUMBER OF IN VALUES #
  2218. ARRAY IN$TABLE [1:MXIN] S(1);
  2219. BEGIN
  2220. ITEM IN$VAL C(0,0,7) = ["KB", # KEY BOARD -- IN VALUES #
  2221. "PT", # PAPER TAPE #
  2222. "BK" # BLOCK MODE #
  2223. ];
  2224. ITEM IN$NUMV (0,42,18) = [0, # KEY BOARD -- NUMERICAL VALUE #
  2225. 1, # PAPER TAPE #
  2226. 2, # BLOCK MODE #
  2227. ];
  2228. END
  2229. DEF MXOP # 3 #; # MAXIMUM NUMBER OF OP VALUES #
  2230. ARRAY OP$TABLE [1:MXOP] S(1);
  2231. BEGIN
  2232. ITEM OP$VAL C(0,0,7) = ["DI", # DISPLAY -- OP VALUES #
  2233. "PR", # PRINTER #
  2234. "PT" # PAPER TAPE #
  2235. ];
  2236. ITEM OP$NUMV (0,42,18) = [1, # DISPLAY -- NUMERICAL VALUE #
  2237. 0, # PRINTER #
  2238. 2 # PAPER TAPE #
  2239. ];
  2240. END
  2241. DEF MXPA # 5 #; # MAXIMUM NUMBER OF PA VALUES #
  2242. ARRAY PA$TABLE [1:MXPA] S(1);
  2243. BEGIN
  2244. ITEM PA$VAL C(0,0,7) = ["Z", # ZERO PARITY -- PA VALUES #
  2245. "O", # ODD PARITY #
  2246. "E", # EVEN PARITY #
  2247. "N" # NO PARITY #
  2248. ,"I" # IGNORE PARITY (ON XPT DELIM) #
  2249. ];
  2250. ITEM PA$NUMV (0,42,18) = [0, # ZERO PARITY -- NUMERICAL VALUE#
  2251. 1, # ODD PARITY #
  2252. 2, # EVEN PARITY #
  2253. 3 # NO PARITY #
  2254. ,4 # IGNORE PARITY (ON XPT DELIM) #
  2255. ];
  2256. END
  2257. BASED ARRAY TABLE [1:1] S(1); # TEMPLATE FOR TABLES(PA,OP,IN) #
  2258. BEGIN
  2259. ITEM VALUE C(0,0,7); # VALUE CHARACTER STRING #
  2260. ITEM NUMV (0,42,18); # NUMERICAL VALUE #
  2261. END
  2262. SWITCH CONDJUMP , , # UNK , NODE ,#
  2263. , , # VARIANT , OPGO ,#
  2264. , , # DMP , LLNAME ,#
  2265. , , # , ,#
  2266. , , # , ,#
  2267. , , # HNAME , LOC ,#
  2268. , , # , ,#
  2269. , , # , ,#
  2270. , , # , ,#
  2271. , , # NCNAME , DI ,#
  2272. , , # N1 , P1 ,#
  2273. , , # N2 , P2 ,#
  2274. , , # NOLOAD1 , NOLOAD2 ,#
  2275. , , # , ,#
  2276. , , # , ,#
  2277. , , # NI , PORT ,#
  2278. , , # LTYPE , TIPTYPE ,#
  2279. , , # AUTO , SL ,#
  2280. , , # LSPEED , DFL ,#
  2281. , , # FRAME , RTIME ,#
  2282. , , # RCOUNT , NSVC ,#
  2283. , , # PSN , DCE ,#
  2284. , , # DTEA , ,#
  2285. , , # , ,#
  2286. , , # , ,#
  2287. , , # STIP , TC ,#
  2288. , , # RIC , CSET ,#
  2289. , , # TSPEED , CA ,#
  2290. , , # CO , BCF ,#
  2291. , , # MREC , W ,#
  2292. , , # CTYP , NCIR ,#
  2293. , , # NEN , COLLECT ,#
  2294. , , # , DT ,#
  2295. , , # SDT , TA ,#
  2296. , , # ABL , DBZ ,#
  2297. , , # UBZ , DBL ,#
  2298. , , # UBL , XBZ ,#
  2299. , , # DO , STREAM ,#
  2300. HN$ , , # HN , AUTOLOG ,#
  2301. AUTOCON , , # AUTOCON , PRI ,#
  2302. , , # P90 , P91 ,#
  2303. , , # P92 , P93 ,#
  2304. , , # P94 , P95 ,#
  2305. , , # P96 , P97 ,#
  2306. , , # P98 , P99 ,#
  2307. AB$ , YES$NO , # AB , BR ,#
  2308. BS$ , B1$ , # BS , B1 ,#
  2309. B2$ , NUMERIC , # B2 , CI ,#
  2310. CN$ , CT$ , # CN , CT ,#
  2311. DLC$ , DLTO$ , # DLC , DLTO ,#
  2312. DLX$ , YES$NO , # DLX , EP ,#
  2313. IN$ , NUMERIC , # IN , LI ,#
  2314. OP$ , PA$ , # OP , PA ,#
  2315. YES$NO , NUMERIC , # PG , PL ,#
  2316. , YES$NO , # PW , SE ,#
  2317. YES$NO , DLC$ , # FA , XLC ,#
  2318. DLX$ , DLTO$ , # XLX , XLTO ,#
  2319. ELO$ , ELX$ , # ELO , ELX ,#
  2320. EBR$ , ELO$ , # ELR , EBO ,#
  2321. EBR$ , YES$NO , # EBR , CP ,#
  2322. YES$NO , YES$NO , # IC , OC ,#
  2323. YES$NO , EBX$ , # LK , EBX ,#
  2324. , , # , MC ,#
  2325. DLX$ , , # XLY , EOF ,#
  2326. , YES$NO ; # PAD , RTS #
  2327.  
  2328. CONTROL EJECT;
  2329. PROC T$GROUP(TKWID);
  2330. BEGIN
  2331. *IF,DEF,IMS
  2332. #
  2333. **
  2334. *
  2335. *
  2336. * PROCEDURE T$GROUP
  2337. *
  2338. * THIS PROCEDURE CHECKS IF XL'S AND DL'S ON A DEVICE STATEMENT
  2339. * ARE MUTUALLY EXCLUSIVE.
  2340. *
  2341. * Y.C. YIP 82/10/09
  2342. *
  2343. *
  2344. * ENTRY:
  2345. *
  2346. * TKWID = KEYWORD ID.
  2347. *
  2348. * EXIT:
  2349. * TKWID REMAIN UNCHANGED.
  2350. *
  2351. #
  2352. *ENDIF
  2353. ITEM IS$XL B; # BOOLEAN VARIABLE FOR XL'S #
  2354. ITEM TKWID; # KEYWORD ID. #
  2355.  
  2356. IF TKWID GR KID"DLX" # IF KEYWORD ID ABOVE DL'S #
  2357. THEN
  2358. BEGIN
  2359. IS$XL = TRUE; # KEYWORD MUST BE XL'S #
  2360. END
  2361. ELSE
  2362. BEGIN
  2363. IS$XL = FALSE; # KEYWORD MUST BE DL'S #
  2364. END
  2365. IF GR$SET EQ X$D$GROUP"NO" # IF NO XL'S OR DL'S ARE MET YET #
  2366. THEN
  2367. BEGIN
  2368. IF IS$XL
  2369. THEN
  2370. BEGIN # IF KEYWORD IS XL'S #
  2371. GR$SET = S"XG"; # SET TO XL'S GROUP #
  2372. END
  2373. ELSE
  2374. BEGIN
  2375. GR$SET = S"DG"; # SET TO DL'S GROUP #
  2376. END
  2377. END
  2378. ELSE
  2379. BEGIN # IF XL'S OR DL'S WERE USED #
  2380. IF (IS$XL AND (GR$SET EQ X$D$GROUP"DG")) OR
  2381. ( NOT IS$XL AND (GR$SET EQ X$D$GROUP"XG"))
  2382. # IF XL'S USED AND THE PARAMETER IS
  2383.   DL'S OR IF DL'S USED AND THE
  2384.   PARAMETER IS XL'S. #
  2385. THEN
  2386. BEGIN
  2387. NDLEM2(ERR152,CDLNUM,KWDNAME[TKWID]);
  2388. END
  2389. END
  2390. END # END OF PROC T$GROUP #
  2391. CONTROL EJECT;
  2392. # #
  2393. # CONDEV CODE BEGINS HERE #
  2394. # #
  2395. IF NOT CDVLERR[0] AND # IF VALUE IS O.K. AND NOT -CCP-#
  2396. CDNAME[0] NQ "CCP"
  2397. THEN
  2398. BEGIN
  2399. GOTO CONDJUMP[CDKWID[0]]; # GOTO APPROPRIATE PARAGRAPH #
  2400. AB$:
  2401. IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
  2402. THEN
  2403. BEGIN
  2404. USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
  2405. END
  2406. ELSE
  2407. BEGIN
  2408. NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
  2409. END
  2410. CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
  2411. # CHECK RANGE OF CONTROL CHARACTER #
  2412. IF CDSTAT # IF -AB- VALUE IS IN RANGE #
  2413. THEN
  2414. BEGIN
  2415. CRNT$CC[CC"AB"] = CDVAL[0]; # SAVE -AB- VALUE #
  2416. DEVFNFV(FN"AB",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
  2417. END
  2418. GOTO NEXT$CON;
  2419. BS$:
  2420. IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
  2421. THEN
  2422. BEGIN
  2423. USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
  2424. END
  2425. ELSE
  2426. BEGIN
  2427. NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
  2428. END
  2429. CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
  2430. # CHECK RANGE OF CONTROL CHARACTER #
  2431. IF CDSTAT # IF -BS- VALUE IS IN RANGE #
  2432. THEN
  2433. BEGIN
  2434. CRNT$CC[CC"BS"] = CDVAL[0]; # SAVE -BS- VALUE #
  2435. DEVFNFV(FN"BS",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
  2436. END
  2437. GOTO NEXT$CON;
  2438. B1$:
  2439. IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
  2440. THEN
  2441. BEGIN
  2442. USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
  2443. END
  2444. ELSE
  2445. BEGIN
  2446. NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
  2447. END
  2448. CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
  2449. # CHECK RANGE OF CONTROL CHARACTER #
  2450. IF CDSTAT # IF -B1- VALUE IS IN RANGE #
  2451. THEN
  2452. BEGIN
  2453. CRNT$CC[CC"B1"] = CDVAL[0]; # SAVE -B1- VALUE #
  2454. DEVFNFV(FN"B1",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
  2455. END
  2456. GOTO NEXT$CON;
  2457. B2$:
  2458. IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
  2459. THEN
  2460. BEGIN
  2461. USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
  2462. END
  2463. ELSE
  2464. BEGIN
  2465. NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
  2466. END
  2467. CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
  2468. # CHECK RANGE OF CONTROL CHARACTER #
  2469. IF CDSTAT # IF -B2- VALUE IS IN RANGE #
  2470. THEN
  2471. BEGIN
  2472. CRNT$CC[CC"B2"] = CDVAL[0]; # SAVE -B2- VALUE #
  2473. DEVFNFV(FN"B2",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
  2474. END
  2475. GOTO NEXT$CON;
  2476. CN$:
  2477. IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
  2478. THEN
  2479. BEGIN
  2480. USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
  2481. END
  2482. ELSE
  2483. BEGIN
  2484. NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
  2485. END
  2486. CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
  2487. # CHECK RANGE OF CONTROL CHARACTER #
  2488. IF CDSTAT # IF -CN- VALUE IS IN RANGE #
  2489. THEN
  2490. BEGIN
  2491. CRNT$CC[CC"CN"] = CDVAL[0]; # SAVE -CN- VALUE #
  2492. DEVFNFV(FN"CN",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
  2493. END
  2494. GOTO NEXT$CON;
  2495. CT$:
  2496. IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
  2497. THEN
  2498. BEGIN
  2499. USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
  2500. END
  2501. ELSE
  2502. BEGIN
  2503. NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
  2504. END
  2505. CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
  2506. # CHECK RANGE OF CONTROL CHARACTER #
  2507. IF CDSTAT # IF -CT- VALUE IS IN RANGE #
  2508. THEN
  2509. BEGIN
  2510. CRNT$CC[CC"CT"] = CDVAL[0]; # SAVE -CT- VALUE #
  2511. DEVFNFV(FN"CT",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
  2512. END
  2513. GOTO NEXT$CON;
  2514. ELX$:
  2515. IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
  2516. THEN
  2517. BEGIN
  2518. USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
  2519. END
  2520. ELSE
  2521. BEGIN
  2522. NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
  2523. END
  2524. CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
  2525. # CHECK RANGE OF CONTROL CHARACTER #
  2526. IF CDSTAT # IF VALUE IS IN RANGE #
  2527. THEN
  2528. BEGIN
  2529. CRNT$CC[CC"ELX"] = CDVAL[0]; # SAVE -ELX- VALUE #
  2530. DEVFNFV(FN"ELX",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
  2531. END
  2532. GOTO NEXT$CON;
  2533. EBX$:
  2534. IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
  2535. THEN
  2536. BEGIN
  2537. USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
  2538. END
  2539. ELSE
  2540. BEGIN
  2541. NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CEHCK NORMAL RANGE #
  2542. END
  2543. CHCONTRL(CDKWID[0],CDLNUM,CDSTAT,CDVAL[0]);
  2544. # CHECK RANGE OF CONTROL CHARACTER #
  2545. IF CDSTAT # IF VALUE IS IN RANGE #
  2546. THEN
  2547. BEGIN
  2548. CRNT$CC[CC"EBX"] = CDVAL[0]; # SAVE -EBX- VALUE #
  2549. DEVFNFV(FN"EBX",CDVAL[0]); # MAKE FNFV PAIR ENTRY #
  2550. END
  2551. GOTO NEXT$CON;
  2552. DLC$:
  2553. IF CRNT$TIP NQ TIP"USER"
  2554. THEN
  2555. BEGIN
  2556. T$GROUP(CDKWID[0]); # CHECK IF ANY MUTUALLY
  2557.   EXCLUSIVE KEYWORD WERE USED #
  2558. END
  2559. IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
  2560. THEN
  2561. BEGIN
  2562. USR$RANGE(CDVAL[0],USR$WID2,NUM"HEX",CDSTAT);
  2563. END
  2564. ELSE
  2565. BEGIN
  2566. NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CHECK NORMAL RANGE #
  2567. END
  2568. IF CDSTAT # IF -DLC- VALUE IS IN RANGE #
  2569. THEN
  2570. BEGIN
  2571. VALUE1 = CDVAL[0]; # MAKE FNFV PAIR ENTRY FOR #
  2572. VALUE2 = B<44,8>VALUE1; # MSB OF -DLC- VALUE #
  2573. DEVFNFV(FN"DLC$MSB",VALUE2);
  2574. VALUE2 = B<52,8>VALUE1; # LSB OF -DLC- VALUE #
  2575. DEVFNFV(FN"DLC$LSB",VALUE2);
  2576. END
  2577. GOTO NEXT$CON;
  2578. DLTO$:
  2579. IF CRNT$TIP NQ TIP"USER"
  2580. THEN
  2581. BEGIN
  2582. T$GROUP(CDKWID[0]); # CHECK IF MUTUALLY EXCLUSIVE KEYWORDS #
  2583. END
  2584. # WERE USED #
  2585. GOTO YES$NO;
  2586. DLX$:
  2587. IF CRNT$TIP NQ TIP"USER"
  2588. THEN
  2589. BEGIN
  2590. T$GROUP(CDKWID[0]); # CHECK IF MUTUALLY EXCLUSIVE KEYWORD ARE
  2591.   USED #
  2592. END
  2593. NUMERIC:
  2594. IF CDKWID[0] EQ KID"PL" # IF PAGE LENGTH SPECIFIED #
  2595. THEN
  2596. BEGIN
  2597. PL$USED = TRUE; # SET PL USED FLAG #
  2598. END
  2599. IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
  2600. THEN
  2601. BEGIN
  2602. IF CDKWID[0] EQ KID"DLX" OR
  2603. CDKWID[0] EQ KID"XLX" OR
  2604. CDKWID[0] EQ KID"XLY"
  2605. THEN
  2606. BEGIN
  2607. USR$RANGE(CDVAL[0],USR$WID1,NUM"HEX",CDSTAT);
  2608. END
  2609. ELSE
  2610. BEGIN
  2611. USR$RANGE(CDVAL[0],USR$WID1,NUM"DEC",CDSTAT);
  2612. END
  2613. END
  2614. ELSE
  2615. BEGIN
  2616. NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CHECK NORMAL RANGE #
  2617. END
  2618. IF CDSTAT # IF VALUE IS WITHIN RANGE #
  2619. THEN
  2620. BEGIN # MAKE FNFV PAIR ENTRY #
  2621. DEVFNFV(CD$FN[CDKWID[0]],CDVAL[0]);
  2622. END
  2623. GOTO NEXT$CON;
  2624. HN$:
  2625. IF CDNAME[0] NQ "NONE" # IF VALUE IS NOT -NONE- #
  2626. THEN
  2627. BEGIN
  2628. HN$USED = TRUE; # SET HN SPECIFIED FLAG #
  2629. IF CRNT$TIP EQ TIP"USER" # TIPTYPE IS USER DEFINED #
  2630. THEN
  2631. BEGIN
  2632. USR$RANGE(CDVAL[0],USR$WID1,NUM"DEC",CDSTAT);
  2633. END
  2634. ELSE
  2635. BEGIN
  2636. NDLCKRG(CDKWID[0],CDVAL[0],CDSTAT); # CHECK NORMAL RANGE #
  2637. END
  2638. IF CDSTAT # IF VALUE IS WITHIN RANGE #
  2639. THEN # CHECK LLT FOR ENTRY #
  2640. BEGIN
  2641. FOUND = FALSE; # SEARCH LLT UNTIL FOUND #
  2642. FOR I=1 STEP LLTENTSZ WHILE NOT FOUND AND
  2643. I LQ LLTENT[0]
  2644. DO
  2645. BEGIN # IF LOGICAL LINK EXISTS BETWEEN#
  2646. IF CDVAL[0] EQ LLTHNID[I] AND # NPU AND HN NODE #
  2647. CRNT$NID EQ LLTNID[I]
  2648. THEN
  2649. BEGIN
  2650. FOUND = TRUE; # SET FLAG INDICATING SO #
  2651. END
  2652. END
  2653. IF FOUND # IF ENTRY FOUND #
  2654. THEN
  2655. BEGIN # MAKE FNFV PAIR ENTRY FOR HN #
  2656. DEVFNFV(FN"HN",CDVAL[0]);
  2657. END
  2658. ELSE # ENTRY NOT FOUND #
  2659. BEGIN # FLAG ERROR -- INVALID HN VALUE #
  2660. CTEMP = XCDD(CDVAL[0]);
  2661. NDLEM2(ERR136,CDLNUM,CTEMP);
  2662. END
  2663. END
  2664. END
  2665. GOTO NEXT$CON;
  2666. AUTOCON:
  2667. IF CDNAME[0] EQ "YES" # IF VALUE IS -YES- #
  2668. THEN
  2669. BEGIN
  2670. AUTOCON$FLAG = TRUE; # SET AUTO-CONNECT FLAG #
  2671. DEVFNFV(FN"AUTOCON",TRUE); # MAKE FNFV PAIR ENTRY #
  2672. END
  2673. ELSE # AUTOCON VALUE MUST BE -NO- #
  2674. BEGIN
  2675. AUTOCON$NO = TRUE; # SET AUTOCON = NO FLAG #
  2676. END
  2677. GOTO NEXT$CON;
  2678. YES: # FOR STAND-ALONE KEYWORDS #
  2679. IF CDNAME[0] EQ "YES" # IF VALUE IS -YES- #
  2680. THEN
  2681. BEGIN # MAKE FNFV PAIR ENTRY #
  2682. DEVFNFV(CD$FN[CDKWID[0]],TRUE);
  2683. END
  2684. GOTO NEXT$CON;
  2685. YES$NO: # FOR KEYWORDS REQUIRING YES/NO VALUE #
  2686. IF CDNAME[0] EQ "YES" # IF VALUE IS -YES- #
  2687. THEN
  2688. BEGIN # MAKE FNFV PAIR ENTRY WITH VALUE -YES- #
  2689. DEVFNFV(CD$FN[CDKWID[0]],TRUE);
  2690. END
  2691. ELSE # VALUE MUST BE -NO- #
  2692. BEGIN # MAKE FNFV PAIR ENTRY WITH VALUE -NO- #
  2693. DEVFNFV(CD$FN[CDKWID[0]],FALSE);
  2694. END
  2695. GOTO NEXT$CON;
  2696. PA$:
  2697. P<TABLE> = LOC(PA$TABLE); # POINT TO TABLE OF PA VALUES #
  2698. MAX$ENT = MXPA; # SAVE MAXIMUM ENTRY COUNT #
  2699. GOTO MAP$NUM;
  2700. OP$:
  2701. P<TABLE> = LOC(OP$TABLE); # POINT TO TABLE OF OP VALUES #
  2702. MAX$ENT = MXOP; # SAVE MAXIMUM ENTRY COUNT #
  2703. GOTO MAP$NUM;
  2704. IN$:
  2705. P<TABLE> = LOC(IN$TABLE); # POINT TO TABLE OF IN VALUES #
  2706. MAX$ENT = MXIN; # SAVE MAXIMUM ENTRY COUNT #
  2707. GOTO MAP$NUM;
  2708. ELO$:
  2709. P<TABLE> = LOC(ELO$TABLE); # POINT TABLE TO ELO/EBO VALUES #
  2710. MAX$ENT = MXELO; # SAVE MAXIMUM ENTRY VALUES #
  2711. GOTO MAP$NUM;
  2712. EBR$:
  2713. P<TABLE> = LOC(EBR$TABLE); # POINT TABLE TO EBR VALUES #
  2714. MAX$ENT = MXEBR; # SAVE MAXIMUM ENTRY VALUES #
  2715. MAP$NUM:
  2716. FOR I=1 STEP 1 UNTIL MAX$ENT # SEARCH TABLE FOR VALUE #
  2717. DO
  2718. BEGIN
  2719. IF CDNAME[0] EQ VALUE[I] # IF VALUE FOUND #
  2720. THEN
  2721. BEGIN # MAKE FNFV PAIR ENTRY #
  2722. DEVFNFV(CD$FN[CDKWID[0]],NUMV[I]);
  2723. END
  2724. END
  2725. NEXT$CON:
  2726. END
  2727. RETURN; # **** RETURN **** #
  2728. END # CONDEV #
  2729. CONTROL EJECT;
  2730. PROC COUNT$LK;
  2731. BEGIN
  2732. *IF,DEF,IMS
  2733. #
  2734. **
  2735. *
  2736. *
  2737. * COUNT$LK - COUNTS NUMBER OF LOGICAL LINKS TERMINATING AT A NPU.
  2738. *
  2739. * Y.C. YIP 11/22/1982
  2740. *
  2741. * THIS PROCEDURE COUNTS NUMBER OF LOGICAL LINKS TERMINATING AT
  2742. * THE SAME NPU, AND CHECK IF THE HOST NAMES ARE THE SAME.
  2743. *
  2744. * PROC COUNT$LK
  2745. *
  2746. * ENTRY NONE
  2747. *
  2748. * EXIT NONE
  2749. *
  2750. * METHOD
  2751. *
  2752. * THE LOGICAL LINK TABLE IS SEARCHED, THE NUMBER OF LOGICAL
  2753. * LINKS TERMINATING AT THE CRNT$NPU IS CHECKED.
  2754. * SAVE$ENTRY IS SET TO THE LAST ENTRY OF THE SET OF LOGICAL
  2755. * LINKS WITH THE SAME HOST NAME DEFINED ON A PARTICULAR NPU.
  2756. * IF ONE OR MORE THAN ONE HOST NAMES ARE DIFFERENT THEN
  2757. * SAVE$ENTRY IS SET TO -1. INITIALLY,SAVE$ENTRY IS SET TO
  2758. * 0.
  2759. *
  2760. #
  2761. *ENDIF
  2762. ITEM I; # LOOP INDIX #
  2763. CONTROL EJECT;
  2764. # COUNT$LK CODE BEGINS HERE #
  2765. LL$CNT = 0; # SETTING LINK COUNT TO 0 #
  2766. SAVE$ENTRY = 0; # SETTING SAVE$ENTRY TO 0 #
  2767. FOR I=1 STEP 1 UNTIL LLTENT[0]
  2768. DO
  2769. BEGIN # COUNT NUMBER OF LOGICAL LINKS #
  2770. IF LLTNID[I] EQ CRNT$NID # TO THIS NPU #
  2771. THEN
  2772. BEGIN
  2773. IF SAVE$ENTRY EQ 0 # IF FIRST ENTRY #
  2774. THEN
  2775. BEGIN
  2776. SAVE$ENTRY = I; # SAVE ENTRY NUMBER #
  2777. END
  2778. ELSE # NOT FIRST ENTRY #
  2779. BEGIN
  2780. IF SAVE$ENTRY NQ NO$MATCH # NO MATCH FLAG IS SET #
  2781. THEN
  2782. BEGIN
  2783. IF LLTHNAME[SAVE$ENTRY] NQ LLTHNAME[I] # IF HOS NAMES DIF#
  2784. THEN
  2785. BEGIN
  2786. SAVE$ENTRY = NO$MATCH;# SET SAVE$ENTRY TO -1 #
  2787. END
  2788. ELSE
  2789. BEGIN
  2790. SAVE$ENTRY = I; # SAVE LAST ENTRY #
  2791. END
  2792. END
  2793. END
  2794. LL$CNT = LL$CNT + 1; # BUMP LINK COUNT #
  2795. LLT$PNTR = I; # SAVE ENTRY #
  2796. END
  2797. END
  2798. END # END OF PROC COUNT$LK #
  2799. CONTROL EJECT;
  2800. PROC DEVFNFV(FN$VAL,FV$VAL);
  2801. BEGIN
  2802. *IF,DEF,IMS
  2803. #
  2804. ** DEVFNFV - STORE FNFV PAIR IN DEVICE ENTRY.
  2805. *
  2806. * D.K. ENDO 81/11/20
  2807. *
  2808. * THIS PROCEDURE PACKS A GIVEN FNFV PAIR INTO THE CURRENT DEVICE
  2809. * ENTRY A INCREMENTS THE FNFV PAIR COUNT.
  2810. *
  2811. * PROC DEVFNFV(FN$VAL,FV$VAL)
  2812. *
  2813. * ENTRY FN$VAL = FIELD NUMBER VALUE.
  2814. * FV$VAL = VALUE FOR FIELD SPECIFIED BY FN$VAL.
  2815. *
  2816. * EXIT NONE.
  2817. *
  2818. * METHOD:
  2819. *
  2820. * INCREMENT FNFV COUNT IN CURRENT DEVICE ENTRY.
  2821. * SET CURRENT STATE TO ZERO.
  2822. * ENTER STATE TABLE:
  2823. *E
  2824. * ***STATE I 0 I 1 I 2 I
  2825. * *** I I I I
  2826. * STIM ***I STORE FN I STORE FV I EXIT I
  2827. * ---------+-----------------+-----------------+-----------------+
  2828. * I I I I
  2829. * I I I I
  2830. * I PUT VAL IN WORD I PUT VAL IN WORD I I
  2831. * BIT @ 52 I STATE=STATE+1 I STATE=STATE+1 I EXIT STATE TABLEI
  2832. * I BIT=BIT+8 I BIT=BIT+8 I I
  2833. * I I I I
  2834. * I I I I
  2835. * ---------+-----------------+-----------------+-----------------+
  2836. * I I I I
  2837. * I INCR WORD COUNT I INCR WORD COUNT I I
  2838. * I BIT = 0 I BIT = 0 I I
  2839. * BIT \ 60 I PUT VAL IN WORD I PUT VAL IN WORD I EXIT STATE TABLEI
  2840. * I STATE=STATE+1 I STATE=STATE+1 I I
  2841. * I BIT=BIT+8 I BIT=BIT+8 I I
  2842. * I I I I
  2843. * ---------+-----------------+-----------------+-----------------+
  2844. * I PUT FIRST 4 BITSI PUT FIRST 4 BITSI I
  2845. * I IN WORD I IN WORD I I
  2846. * I INCR WORD COUNT I INCR WORD COUNT I I
  2847. * BIT = 56 I BIT = 0 I BIT = 0 I EXIT STATE TABLEI
  2848. * I PUT LAST 4 BITS I PUT LAST 4 BITS I I
  2849. * I STATE=STATE+1 I STATE=STATE+1 I I
  2850. * I BIT=BIT+4 I BIT=BIT+4 I I
  2851. * ---------+-----------------+-----------------+-----------------+
  2852. *
  2853. #
  2854. *ENDIF
  2855. ITEM FN$VAL; # FIELD NUMBER TO BE STORED #
  2856. ITEM FV$VAL; # FIELD VALUE TO BE STORED #
  2857. DEF STATE0 # 0 #; # INITIAL STATE -- STORE FN VALUE #
  2858. DEF STIM1 # 1 #; # REPRESENTS BIT POSITION @ 52 #
  2859. DEF STIM2 # 2 #; # REPRESENTS BIT POSITION \ 60 #
  2860. DEF STIM3 # 3 #; # REPRESENTS BIT POSITION = 56 #
  2861. STATUS JUMP NEXT$WORD, # INCREMENT TO NEXT WORD BEFORE STORING #
  2862. STORE$VAL, # STORE VALUE AND MOVE CRNT BIT POSITION #
  2863. STOR$HALF, # STORE HALF VALUE IN CRNT AND NEXT WORD #
  2864. EXIT$PROC; # EXIT PROCEDURE -- FNFV PAIR STORED #
  2865. ITEM CRNT$STIM; # CURRENT STIMULUS #
  2866. ITEM STATE; # CURRENT STATE #
  2867. ARRAY FNFV$VALUE [0:0] S(1);
  2868. BEGIN # TEMPORARY FOR FN/FV VALUE #
  2869. ITEM VALUE (0,0,60);
  2870. ITEM FRST$HALF U(0,52,4); # FIRST HALF OF VALUE #
  2871. ITEM SCND$HALF U(0,56,4); # SECOND HALF OF VALUE #
  2872. END
  2873. DEF MXSTATE # 2 #; # MAXIMUM STATE #
  2874. DEF MXSTIM # 3 #; # MAXIMUM NUMBER OF STIMULUS #
  2875. ARRAY STATE$TABLE [0:MXSTATE,1:MXSTIM] S(1);
  2876. BEGIN
  2877. ITEM STATE$TBL (0,0,60) =
  2878. # STATE * STORE FN * STORE FV * EXIT #
  2879. # STIMULUS * * * #
  2880. # #
  2881. # BIT$POS @ 52 #[[JUMP"STORE$VAL",JUMP"STORE$VAL",JUMP"EXIT$PROC"]
  2882. # #
  2883. # BIT$POS \ 60 # [JUMP"NEXT$WORD",JUMP"NEXT$WORD",JUMP"EXIT$PROC"]
  2884. # #
  2885. # BIT$POS = 56 # [JUMP"STOR$HALF",JUMP"STOR$HALF",JUMP"EXIT$PROC"]
  2886. ];
  2887. END
  2888. SWITCH FNFVJUMP NEW$WORD, # 0 -- NEXT$WORD #
  2889. PUT$VALUE, # 1 -- STORE$VAL #
  2890. PUT$HALF, # 2 -- STOR$HALF #
  2891. EXIT; # 3 -- EXIT$PROC #
  2892. CONTROL EJECT;
  2893. # #
  2894. # DEVFNFV CODE BEGINS HERE #
  2895. # #
  2896. STATE = STATE0; # INITIALIZE CURRENT STATE #
  2897. VALUE[0] = FN$VAL; # PUT FN VALUE IN TEMPORARY #
  2898. # INCREMENT FNFV PAIR COUNT #
  2899. DEFNFV[CRNT$DEV + 1] = DEFNFV[CRNT$DEV + 1] + 1;
  2900. START$STATE:
  2901. IF BIT$POS LQ 52 # IF NET POSITION LESS THAN OR EQUAL TO 56#
  2902. THEN
  2903. BEGIN
  2904. CRNT$STIM = STIM1; # SET CURRENT STIMULUS TO TYPE 1 #
  2905. END
  2906. ELSE # BIT POS NOT LESS THAN OR EQUAL TO 56 #
  2907. BEGIN
  2908. IF BIT$POS GQ 60 # IF BIT POS GREATER THAN OR EQUAL TO 60 #
  2909. THEN
  2910. BEGIN
  2911. CRNT$STIM = STIM2; # SET CURRENT STIMULUS TO TYPE 2 #
  2912. END
  2913. ELSE # BIT POSITION MUST BE 56 #
  2914. BEGIN
  2915. CRNT$STIM = STIM3; # SET CURRENT STIMULUS TO TYPE 3 #
  2916. END
  2917. END
  2918. # JUMP ACCORDING TO STATE TABLE #
  2919. GOTO FNFVJUMP[STATE$TBL[STATE,CRNT$STIM]];
  2920. # #
  2921. NEW$WORD:
  2922. LRWC[1] = LRWC[1] + 1; # INCREMENT WORD COUNT #
  2923. LRWORD[LRWC[1]] = 0; # CLEAR THE NEXT WORD #
  2924. BIT$POS = 0; # INITIALIZE BIT POSITION #
  2925. PUT$VALUE:
  2926. B<BIT$POS,8>LRWORD[LRWC[1]] = VALUE[0]; # STORE VALUE #
  2927. STATE = STATE + 1; # SET TO NEXT STATE #
  2928. VALUE[0] = FV$VAL; # PUT FV VALUE IN TEMPORARY #
  2929. BIT$POS = BIT$POS + 8; # RESET CURRENT BIT POSITION #
  2930. GOTO START$STATE;
  2931. PUT$HALF: # STORE 1ST HALF OF VALUE #
  2932. B<BIT$POS,4>LRWORD[LRWC[1]] = FRST$HALF[0];
  2933. LRWC[1] = LRWC[1] + 1; # INCREMENT WORD COUNT #
  2934. LRWORD[LRWC[1]] = 0; # CLEAR THE NEXT WORD #
  2935. BIT$POS = 0; # INITIALIZE BIT POSITION #
  2936. B<BIT$POS,4>LRWORD[LRWC[1]] = SCND$HALF[0]; # STORE 2ND HALF #
  2937. BIT$POS = 4; # MOVE BIT POSITION #
  2938. VALUE[0] = FV$VAL; # PUT FV VALUE IN TEMPORARY #
  2939. STATE = STATE + 1; # SET TO NEXT STATE #
  2940. GOTO START$STATE;
  2941. EXIT:
  2942. RETURN; # **** RETURN **** #
  2943. END # DEVFNFV #
  2944. CONTROL EJECT;
  2945. PROC FLOWDEV(FDWORD,FDLNUM);
  2946. BEGIN
  2947. *IF,DEF,IMS
  2948. #
  2949. ** FLOWDEV - CHECK FLOW CONTROL PARAMETERS ON DEVICE STMT.
  2950. *
  2951. * D.K. ENDO 81/11/20
  2952. *
  2953. * THIS PROCEDURE CHECKS THE PARAMETERS WHICH ARE USED FOR FLOW
  2954. * CONTROL.
  2955. *
  2956. * PROC FLOWDEV(FDWORD,FDLNUM)
  2957. *
  2958. * ENTRY FDWORD = VALUE DECLARATION ENTRY.
  2959. * FDLNUM = CURRENT SOURCE LINE NUMBER.
  2960. *
  2961. * EXIT NONE.
  2962. *
  2963. * METHOD
  2964. *
  2965. * SELECT CASE THAT APPLIES,
  2966. * CASE 1(ABL,DBL,UBL,XBZ):
  2967. * IF VALUE IS O.K.,
  2968. * CHECK IF VALUE IS IN RANGE.
  2969. * IF IN RANGE,
  2970. * PUT VALUE INTO DEVICE ENTRY.
  2971. * CASE 2(DBZ):
  2972. * IF VALUE IS O.K.
  2973. * IF DT IS BATCH DEVICE,
  2974. * THEN,
  2975. * DIVIDE VALUE BY PRU SIZE.
  2976. * PUT CONVERTED VALUE INTO DEVICE ENTRY.
  2977. * OTHERWISE,
  2978. * PUT VALUE INTO DEVICE ENTRY.
  2979. * CASE 3(UBZ):
  2980. * IF VALUE IS O.K.,
  2981. * IF DT IS CONSOLE,
  2982. * THEN,
  2983. * IF VALUE IS WITHIN 0 AND 2000,
  2984. * THEN,
  2985. * DIVIDE VALUE BY 200.
  2986. * PUT CONVERTED VALUE INTO DEVICE ENTRY.
  2987. * OTHERWISE,
  2988. * FLAG ERROR -- VALUE OUT OF RANGE.
  2989. * OTHERWISE,
  2990. * IF DT IS NOT USER OR UNKNOWN,
  2991. * THEN,
  2992. * IF VALUE IS WITHIN 1 AND 2043,
  2993. * THEN,
  2994. * DIVIDE VALUE BY PRU SIZE.
  2995. * PUT CONVERTED VALUE INTO DEVICE ENTRY.
  2996. * OTHERWISE,
  2997. * FLAG ERROR -- VALUE OUT OF RANGE.
  2998. * OTHERWISE,
  2999. * IF VALUE IS LESS THAN 256,
  3000. * PUT VALUE INTO DEVICE ENTRY.
  3001. *
  3002. #
  3003. *ENDIF
  3004. ARRAY FDWORD [0:0] S(1); # VALUE DECLARATION ENTRY #
  3005. BEGIN
  3006. ITEM FDKWID U(0,0,9); # KEYWORD I.D. #
  3007. ITEM FDVLERR B(0,17,1); # VALUE ERROR FLAG #
  3008. ITEM FDNAME C(0,18,7); # CHARACTER STRING VALUE #
  3009. ITEM FDVAL U(0,18,42); # INTEGER VALUE #
  3010. END
  3011. ITEM FDLNUM; # STATEMENT SOURCE LINE NUMBER #
  3012. #
  3013. **** PROC FLOWDEV - XREF LIST BEGINS.
  3014. #
  3015. XREF
  3016. BEGIN
  3017. PROC NDLCKRG; # CHECK IF VALUE IS WITHIN RANGE #
  3018. PROC NDLEM2; # MAKE ENTRY IN PASS 2 ERROR FILE #
  3019. FUNC XCDD C(10); # CONVERTS INTEGER TO DECIMAL DISPLAY CODE#
  3020. FUNC XCHD C(10); # CONERTS INTEGER TO HEX DISPLAY CODE #
  3021. END
  3022. #
  3023. ****
  3024. #
  3025. DEF CONVERT1 # 3 #; # SWITCH VALUE -- CONVERT AND ENTER 1 FNFV#
  3026. DEF CONVERT2 # 4 #; # SWITCH VALUE -- CONVERT AND ENTER 2 FNFV#
  3027. DEF DIRECT1 # 1 #; # SWITCH VALUE -- DIRECT ENTRY WITH 1 FNFV#
  3028. DEF DIRECT2 # 2 #; # SWITCH VALUE -- DIRECT ENTRY WITH 2 FNFV#
  3029. DEF $NEXT # 0 #; # SWITCH VALUE -- GOTO NEXT VALUE-DEC #
  3030. DEF MAX$PRU # 1920 #; # NUMBER OF CHARACTERS IN THREE PRU-S #
  3031. DEF MAX$UBZ$CON # 1950 #; # MAX CHAR COUNT FOR UBZ CONSOLE#
  3032. ITEM CTEMP C(10); # CHARACTER TEMPORARY #
  3033. ITEM FDSTAT B; # STATUS RETURNED BY NDLCKRG #
  3034. ITEM I; # SCRATCH ITEM #
  3035. ITEM ITEMP; # INTEGER TEMPORARY -- FOR STORING WC #
  3036. ITEM JMP$INDX; # JUMP INDEX FOR SWITCH #
  3037. ITEM MAX$SZ; # MAXIMUM SIZE FOR VALUE #
  3038. ITEM MULTIPLE; # MULTIPLE BY WHICH TO CALCULATE NEW VALUE#
  3039. ITEM VALUE; # INTEGER VALUE TEMPORARY #
  3040. ITEM VALUE2; # INTEGER VALUE TEMPORARY #
  3041. ARRAY ERROR$WORD [0:0] S(1); # BUFFER WORD FOR ERROR MSG #
  3042. BEGIN
  3043. ITEM PARAM C(0,0,4) = [" "]; # PARAMETER #
  3044. ITEM SLASH C(0,24,1) = ["/"];
  3045. ITEM PVALUE C(0,30,5) = [" "]; # VALUE #
  3046. END
  3047. DEF MNFLW # 68 #;
  3048. DEF MXFLW # 73 #;
  3049. ARRAY FN$TABLE [MNFLW:MXFLW] S(1);
  3050. BEGIN
  3051. ITEM FD$FN (0,0,60) = [FN"ABL", # ABL -- FIELD NUMBER #
  3052. FN"DBZ$MSB", # DBZ(MSB) #
  3053. FN"UBZ", # UBZ #
  3054. FN"DBL", # DBL #
  3055. FN"UBL", # UBL #
  3056. FN"XBZ$MSB", # XBZ(MSB) #
  3057. ];
  3058. END
  3059. SWITCH CHKJUMP NEXT, # GO TO NEXT PARAMETER(EXIT) #
  3060. D$ENTRY1, # MAKE DIRECT ENTRY W/O CONVERT #
  3061. D$ENTRY2, # MAKE DIRECT ENTRY WITH 2 FNFV #
  3062. C$ENTRY1, # CONVERT VALUE -- ENTRY 1 FNFV #
  3063. C$ENTRY2; # CONVERT VALUE -- ENTRY 2 FNFV #
  3064. SWITCH FLOWJUMP , , # UNK , NODE ,#
  3065. , , # VARIANT , OPGO ,#
  3066. , , # DMP , LLNAME ,#
  3067. , , # , ,#
  3068. , , # , ,#
  3069. , , # HNAME , LOC ,#
  3070. , , # , ,#
  3071. , , # , ,#
  3072. , , # , ,#
  3073. , , # NCNAME , DI ,#
  3074. , , # N1 , P1 ,#
  3075. , , # N2 , P2 ,#
  3076. , , # NOLOAD1 , NOLOAD2 ,#
  3077. , , # , ,#
  3078. , , # , ,#
  3079. , , # NI , PORT ,#
  3080. , , # LTYPE , TIPTYPE ,#
  3081. , , # AUTO , SL ,#
  3082. , , # LSPEED , DFL ,#
  3083. , , # FRAME , RTIME ,#
  3084. , , # RCOUNT , NSVC ,#
  3085. , , # PSN , DCE ,#
  3086. , , # DTEA , ,#
  3087. , , # , ,#
  3088. , , # , ,#
  3089. , , # STIP , TC ,#
  3090. , , # RIC , CSET ,#
  3091. , , # TSPEED , CA ,#
  3092. , , # CO , BCF ,#
  3093. , , # MREC , W ,#
  3094. , , # CTYP , NCIR ,#
  3095. , , # NEN , COLLECT ,#
  3096. , , # , DT ,#
  3097. , , # SDT , TA ,#
  3098. $ABL , $DBZ , # ABL , DBZ ,#
  3099. $UBZ , $DBL , # UBZ , DBL ,#
  3100. $UBL , $XBZ , # UBL , XBZ ,#
  3101. , , # DO , STREAM ,#
  3102. , , # HN , AUTOLOG ,#
  3103. , , # AUTOCON , PRI ,#
  3104. , , # P90 , P91 ,#
  3105. , , # P92 , P93 ,#
  3106. , , # P94 , P95 ,#
  3107. , , # P96 , P97 ,#
  3108. , , # P98 , P99 ,#
  3109. , , # AB , BR ,#
  3110. , , # BS , B1 ,#
  3111. , , # B2 , CI ,#
  3112. , , # CN , CT ,#
  3113. , , # DLC , DLTO ,#
  3114. , , # DLX , EP ,#
  3115. , , # IN , LI ,#
  3116. , , # OP , PA ,#
  3117. , , # PG , PL ,#
  3118. , ; # PW , SE #
  3119. CONTROL EJECT;
  3120. # #
  3121. # FLOWDEV CODE BEGINS HERE #
  3122. # #
  3123. JMP$INDX = $NEXT; # SET JUMP FOR SWITCH TO -NEXT- #
  3124. GOTO FLOWJUMP[FDKWID[0]]; # GOTO APPROPRIATE PARAGRAPH #
  3125. $ABL:
  3126. ABL$USED = TRUE; # SET ABL SPECIFIED FLAG #
  3127. IF NOT FDVLERR[0] # IF VALUE IS O.K. #
  3128. THEN
  3129. BEGIN
  3130. JMP$INDX = DIRECT1; # SET JUMP FOR DIRECT ENTRY #
  3131. END
  3132. GOTO CHECK;
  3133. $DBL:
  3134. DBL$USED = TRUE; # SET DBL SPECIFIED FLAG #
  3135. IF NOT FDVLERR[0] # IF VALUE IS O.K. #
  3136. THEN
  3137. BEGIN
  3138. JMP$INDX = DIRECT1; # SET JUMP FOR DIRECT ENTRY #
  3139. END
  3140. GOTO CHECK;
  3141. $DBZ:
  3142. DBZ$USED = TRUE; # SET DBZ SPECIFIED FLAG #
  3143. IF NOT FDVLERR[0] # IF VALUE IS O.K. #
  3144. THEN
  3145. BEGIN
  3146. IF CRNT$DT EQ DT"CON" OR # IF DT IS CONSOLE, USER, OR #
  3147. CRNT$DT EQ DT"USER" OR # UNKNOWN #
  3148. CRNT$DT EQ DT"UNKNOWN"
  3149. OR CRNT$TIP EQ TIP"USER" # USER DEFINED TIPTYPES #
  3150. THEN
  3151. BEGIN # SET JUMP TO MAKE DIRECT ENTRY #
  3152. JMP$INDX = DIRECT2;
  3153. END
  3154. ELSE # DT MUST BE A PASSIVE DEVICE #
  3155. BEGIN
  3156. MULTIPLE = PRU$SZ; # SET MULTIPLE TO PRU SIZE #
  3157. MAX$SZ = MAX$PRU; # SET MAXIMUM SIZE FOR VALUE #
  3158. JMP$INDX = CONVERT2; # SET JUMP TO CONVERT DBZ VALUE #
  3159. END
  3160. END
  3161. GOTO CHECK;
  3162. $UBL:
  3163. UBL$USED = TRUE; # SET UBL SPECIFIED FLAG #
  3164. IF NOT FDVLERR[0] # VALUE IS O.K. #
  3165. THEN
  3166. BEGIN
  3167. JMP$INDX = DIRECT1; # SET JUMP TO MAKE DIRECT ENTRY #
  3168. END
  3169. GOTO CHECK;
  3170. $UBZ:
  3171. UBZ$USED = TRUE; # SET UBZ SPECIFIED FLAG #
  3172. IF NOT FDVLERR[0] # IF VALUE IS O.K. #
  3173. THEN
  3174. BEGIN
  3175. IF CRNT$DT EQ DT"CON" # IF DT IS A CONSOLE #
  3176. AND CRNT$TIP NQ TIP"USER" # AND TIPTYPE NOT USER DEFINED #
  3177. THEN
  3178. BEGIN
  3179. IF FDVAL[0] LS 0 OR
  3180. FDVAL[0] GR 2000 # IF VALUE IS OUT OF RANGE #
  3181. THEN
  3182. BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
  3183. CTEMP = XCDD(FDVAL[0]);
  3184. NDLEM2(ERR100,FDLNUM,CTEMP);
  3185. FDSTAT = FALSE; # SET STATUS TO NO GOOD #
  3186. END
  3187. ELSE # VALUE IS WITHIN RANGE #
  3188. BEGIN
  3189. FDSTAT = TRUE; # SET STATUS TO O.K. #
  3190. END
  3191. MULTIPLE = UBZ$CON; # SET MULTIPLE TO UBZ CONSOLE #
  3192. MAX$SZ = MAX$UBZ$CON; # SET MAXIMUM SIZE TO UBZ CON #
  3193. JMP$INDX = CONVERT1; # SET JUMP TO CONVERT UBZ VALUE #
  3194. END
  3195. ELSE # DT IS NOT A CONSOLE #
  3196. BEGIN
  3197. IF CRNT$DT NQ DT"USER" AND # IF DT IS PASSIVE #
  3198. CRNT$DT NQ DT"UNKNOWN"
  3199. AND CRNT$TIP NQ TIP"USER" # AND NOT USER DEFINED TIPTYPE #
  3200. THEN
  3201. BEGIN
  3202. IF FDVAL[0] LS 1 OR
  3203. FDVAL[0] GR 2043 # IF VALUE IS OUT OF RANGE #
  3204. THEN
  3205. BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
  3206. CTEMP = XCDD(FDVAL[0]);
  3207. NDLEM2(ERR100,FDLNUM,CTEMP);
  3208. FDSTAT = FALSE; # SET STATUS TO NO GOOD #
  3209. END
  3210. ELSE # VALUE IS WITHIN RANGE #
  3211. BEGIN
  3212. FDSTAT = TRUE; # SET STATUS TO O.K. #
  3213. END
  3214. MULTIPLE = PRU$SZ; # SET MULTIPLE TO PRU SIZE #
  3215. MAX$SZ = MAX$PRU; # SET MAXIMUM SIZE IS CHARACTERS#
  3216. JMP$INDX = CONVERT1; # SET JUMP TO CONVERT UBZ VALUE #
  3217. END
  3218. ELSE # DT MUST BE USER OR UNKNOWN #
  3219. BEGIN
  3220. IF FDVAL[0] LS 256 # VALUE MUST BE LESS THAN 256 #
  3221. THEN
  3222. BEGIN
  3223. JMP$INDX = DIRECT1; # SET JUMP TO MAKE DIRECT ENTRY #
  3224. END
  3225. ELSE # VALUE IS TOO BIG #
  3226. BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
  3227. CTEMP = XCDD(FDVAL[0]);
  3228. NDLEM2(ERR100,FDLNUM,CTEMP);
  3229. END
  3230. END
  3231. END
  3232. END
  3233. GOTO CHECK;
  3234. $XBZ:
  3235. XBZ$USED = TRUE; # SET XBZ SPECIFIED FLAG #
  3236. IF NOT FDVLERR[0] # IF VALUE IS O.K. #
  3237. THEN
  3238. BEGIN
  3239. JMP$INDX = DIRECT2; # SET JUMP TO MAKE DIRECT ENTRY #
  3240. END
  3241. GOTO CHECK;
  3242. # #
  3243. CHECK:
  3244. GOTO CHKJUMP[JMP$INDX]; # JUMP TO TYPE OF ENTRY #
  3245. D$ENTRY1: # SPECIFIED ABOVE #
  3246. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  3247. THEN
  3248. BEGIN
  3249. USR$RANGE(FDVAL[0],USR$WID1,NUM"DEC",FDSTAT);
  3250. END
  3251. ELSE
  3252. BEGIN
  3253. NDLCKRG(FDKWID[0],FDVAL[0],FDSTAT); # CHECK FOR NORMAL RANGE #
  3254. END
  3255. IF FDSTAT # IF VALUE IS WITHIN RANGE #
  3256. THEN
  3257. BEGIN # MAKE FNFV PAIR ENTRY #
  3258. DEVFNFV(FD$FN[FDKWID[0]],FDVAL[0]);
  3259. END
  3260. GOTO NEXT$FLW;
  3261. D$ENTRY2:
  3262. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  3263. THEN
  3264. BEGIN
  3265. USR$RANGE(FDVAL[0],USR$WID2,NUM"DEC",FDSTAT);
  3266. END
  3267. ELSE
  3268. BEGIN
  3269. NDLCKRG(FDKWID[0],FDVAL[0],FDSTAT); # CHECK FOR NORMAL RANGE #
  3270. END
  3271. IF FDSTAT # IF VALUE IS WITHIN RANGE #
  3272. THEN
  3273. BEGIN # MAKE FNFV PAIR ENTRY FOR #
  3274. VALUE = FDVAL[0];
  3275. VALUE2 = B<44,8>VALUE; # MSB OF VALUE #
  3276. DEVFNFV(FD$FN[FDKWID[0]],VALUE2);
  3277. VALUE2 = B<52,8>VALUE; # LSB OF VALUE #
  3278. DEVFNFV(FD$FN[FDKWID[0]]+1,VALUE2);
  3279. END
  3280. GOTO NEXT$FLW;
  3281. C$ENTRY1:
  3282. IF FDSTAT # IF VALUE IS WITHIN RANGE #
  3283. THEN
  3284. BEGIN
  3285. IF FDVAL[0] LQ MAX$SZ # IF VALUE IS NOT GREATER THAN #
  3286. THEN # MAXIMUM SIZE #
  3287. BEGIN
  3288. VALUE = FDVAL[0]; # SET VALUE TO BE CONVERTED TO #
  3289. END # VALUE SPECIFIED #
  3290. ELSE # VALUE IS GREATER THAN MAXIMUM #
  3291. BEGIN
  3292. VALUE = MAX$SZ; # SET VALUE TO BE CONVERTED TO #
  3293. END # MAXIMUM SIZE #
  3294. VALUE2 = 0;
  3295. FOR I=VALUE STEP -MULTIPLE WHILE I GR 0
  3296. DO # CONVERT VALUE #
  3297. BEGIN
  3298. VALUE2 = VALUE2 + 1;
  3299. END # MAKE FNFV PAIR ENTRY #
  3300. DEVFNFV(FD$FN[FDKWID[0]],VALUE2);
  3301. GOTO CHK$WARN;
  3302. END
  3303. ELSE # VALUE NOT IN RANGE #
  3304. BEGIN
  3305. GOTO NEXT$FLW;
  3306. END
  3307. C$ENTRY2:
  3308. NDLCKRG(FDKWID[0],FDVAL[0],FDSTAT);
  3309. IF FDSTAT # IF VALUE IS WITHIN RANGE #
  3310. THEN
  3311. BEGIN
  3312. IF FDVAL[0] LQ MAX$SZ # IF VALUE IS NOT GREATER THAN #
  3313. THEN # MAXIMUM SIZE #
  3314. BEGIN
  3315. VALUE = FDVAL[0]; # SET VALUE TO BE CONVERTED TO #
  3316. END # VALUE SPECIFIED #
  3317. ELSE # VALUE IS GREATER THAN MAXIMUM #
  3318. BEGIN
  3319. VALUE = MAX$SZ; # SET VALUE TO BE CONVERTED TO #
  3320. END # MAXIMUM SIZE #
  3321. VALUE2 = 0;
  3322. FOR I=VALUE STEP -MULTIPLE WHILE I GR 0
  3323. DO # CONVERT VALUE #
  3324. BEGIN
  3325. VALUE2 = VALUE2 + 1;
  3326. END # MAKE FNFV PAIR ENTRIES FOR #
  3327. VALUE = B<44,8>VALUE2; # MSB OF CONVERTED VALUE #
  3328. DEVFNFV(FD$FN[FDKWID[0]],VALUE);
  3329. VALUE = B<52,8>VALUE2; # LSB OF CONVERTED VALUE #
  3330. DEVFNFV(FD$FN[FDKWID[0]]+1,VALUE);
  3331. GOTO CHK$WARN;
  3332. END
  3333. ELSE # VALUE NOT IN RANGE #
  3334. BEGIN
  3335. GOTO NEXT$FLW;
  3336. END
  3337. CHK$WARN:
  3338. IF FDVAL[0] NQ (MULTIPLE * VALUE2)
  3339. THEN # IF VALUE IS NOT A MULTIPLE #
  3340. BEGIN # FLAG WARNING -- VALUE WAS ROUNDED #
  3341. PARAM[0] = KWDNAME[FDKWID[0]]; # PUT PARAMETER NAME AND #
  3342. CTEMP = XCDD(MULTIPLE * VALUE2);
  3343. PVALUE[0] = C<5,5>CTEMP; # VALUE IN ERROR FILE #
  3344. NDLEM2(ERR137,FDLNUM,ERROR$WORD);
  3345. END
  3346. NEXT$FLW:
  3347. RETURN; # **** RETURN **** #
  3348. END # FLOWDEV #
  3349. CONTROL EJECT;
  3350. PROC GENDEV(GDWORD,GDLNUM);
  3351. BEGIN
  3352. *IF,DEF,IMS
  3353. #
  3354. ** GENDEV - CHECKS GENERAL PARAMETERS ON THE DEVICE STMT.
  3355. *
  3356. * D.K. ENDO 81/11/20
  3357. *
  3358. * THE PROCEDURE DOES CHECKING OF PARAMETER THAT ARE COMMON TO ALL
  3359. * TIPTYPES.
  3360. *
  3361. * PROC GENDEV(GDWORD,GDLNUM)
  3362. *
  3363. * ENTRY GDWORD = VALUE DECLARATION ENTRY.
  3364. * GDLNUM = CURRENT SOURCE LINE NUMBER.
  3365. *
  3366. * EXIT NONE.
  3367. *
  3368. * METHOD
  3369. *
  3370. * IF VALUE IS O.K.,
  3371. * SELECT CASE THAT APPLIES,
  3372. * CASE 1(P90,P91,...,P99):
  3373. * CHECK IF VALUE IS IN RANGE.
  3374. * IF IN RANGE,
  3375. * PUT VALUE INTO DEVICE ENTRY.
  3376. * CASE 2(PRI,DI):
  3377. * IF VALUE IS -YES-,
  3378. * PUT VALUE INTO DEVICE ENTRY.
  3379. * CASE 3(PW):
  3380. * CHECK IF VALUE IS IN RANGE.
  3381. * IF IN RANGE
  3382. * PUT VALUE INTO DEVICE ENTRY.
  3383. * CASE 4(MC):
  3384. * CHECK IF VALUE IS IN RANGE.
  3385. * IF IN RANGE,
  3386. * PUT VALUE INTO DEVICE ENTRY.
  3387. *
  3388. #
  3389. *ENDIF
  3390. DEF HEX$00 # X"00" #; # VALUE HEX 00 #
  3391. DEF HEX$03 # X"03" #; # VALUE HEX 03 #
  3392. DEF HEX$1F # X"1F" #; # VALUE HEX 1F #
  3393. DEF HEX$21 # X"21" #; # VALUE HEX 21 #
  3394. DEF HEX$2F # X"2F" #; # VALUE HEX 2F #
  3395. DEF HEX$3A # X"3A" #; # VALUE HEX 3A #
  3396. DEF HEX$3C # X"3C" #; # VALUE HEX 3C #
  3397. DEF HEX$3E # X"3E" #; # VALUE HEX 3E #
  3398. DEF HEX$40 # X"40" #; # VALUE HEX 40 #
  3399. DEF HEX$5B # X"5B" #; # VALUE HEX 5B #
  3400. DEF HEX$60 # X"60" #; # VALUE HEX 60 #
  3401. DEF HEX$7B # X"7B" #; # VALUE HEX 7B #
  3402. DEF HEX$7E # X"7E" #; # VALUE HEX 7E #
  3403. ARRAY GDWORD [0:0] S(1); # VALUE DECLARATION ENTRY #
  3404. BEGIN
  3405. ITEM GDKWID U(0,0,9); # KEYWORD I.D. #
  3406. ITEM GDVLERR B(0,17,1); # VALUE ERROR FLAG #
  3407. ITEM GDVAL (0,18,42); # INTEGER VALUE #
  3408. ITEM GDNAME C(0,18,7); # CHARACTER VALUE #
  3409. END
  3410. ITEM GDLNUM; # STATEMENT LINE NUMBER #
  3411. #
  3412. **** PROC GENDEV - XREF LIST BEGINS.
  3413. #
  3414. XREF
  3415. BEGIN
  3416. PROC NDLCKRG; # CHECKS IF VALUE IS WITHIN RANGE #
  3417. FUNC XCDD C(10); # FUNCTION TO CONVERT BINARY TO DISPLAY #
  3418. END
  3419. #
  3420. ****
  3421. #
  3422. ITEM GDSTAT B; # RETURNED STATUS FROM NDLCKRG #
  3423. ITEM ITEMP; # INTEGER TEMPORARY #
  3424. SWITCH GENDJUMP , , # UNK , NODE ,#
  3425. , , # VARIANT , OPGO ,#
  3426. , , # DMP , LLNAME ,#
  3427. , , # , ,#
  3428. , , # , ,#
  3429. , , # HNAME , LOC ,#
  3430. , , # , ,#
  3431. , , # , ,#
  3432. , , # , ,#
  3433. , $DI , # NCNAME , DI ,#
  3434. , , # N1 , P1 ,#
  3435. , , # N2 , P2 ,#
  3436. , , # NOLOAD1 , NOLOAD2 ,#
  3437. , , # , ,#
  3438. , , # , ,#
  3439. , , # NI , PORT ,#
  3440. , , # LTYPE , TIPTYPE ,#
  3441. , , # AUTO , SL ,#
  3442. , , # LSPEED , DFL ,#
  3443. , , # FRAME , RTIME ,#
  3444. , , # RCOUNT , NSVC ,#
  3445. , , # PSN , DCE ,#
  3446. , , # , ,#
  3447. , , # DTEA , ,#
  3448. , , # , ,#
  3449. , , # STIP , TC ,#
  3450. , , # RIC , CSET ,#
  3451. , , # TSPEED , CA ,#
  3452. , , # CO , BCF ,#
  3453. , , # MREC , W ,#
  3454. , , # CTYP , NCIR ,#
  3455. , , # NEN , COLLECT ,#
  3456. , , # , DT ,#
  3457. , , # SDT , TA ,#
  3458. , , # ABL , DBZ ,#
  3459. , , # UBZ , DBL ,#
  3460. , , # UBL , XBZ ,#
  3461. , , # DO , STREAM ,#
  3462. , , # HN , AUTOLOG ,#
  3463. , PRI , # AUTOCON , PRI ,#
  3464. USR$PARAM , USR$PARAM , # P90 , P91 ,#
  3465. USR$PARAM , USR$PARAM , # P92 , P93 ,#
  3466. USR$PARAM , USR$PARAM , # P94 , P95 ,#
  3467. USR$PARAM , USR$PARAM , # P96 , P97 ,#
  3468. USR$PARAM , USR$PARAM , # P98 , P99 ,#
  3469. , , # AB , BR ,#
  3470. , , # BS , B1 ,#
  3471. , , # B2 , CI ,#
  3472. , , # CN , CT ,#
  3473. , , # DLC , DLTO ,#
  3474. , , # DLX , EP ,#
  3475. , , # IN , LI ,#
  3476. , , # OP , PA ,#
  3477. , , # PG , PL ,#
  3478. PW , , # PW , SE #
  3479. , , # FA , XLC ,#
  3480. , , # XLX , XLTO ,#
  3481. , , # ELO , ELX ,#
  3482. , , # ELR , EBO ,#
  3483. , , # EBR , CP ,#
  3484. , , # IC , OC ,#
  3485. , , # LK , EBX ,#
  3486. , MC , # , MC #
  3487. , , # XLY , EOF ,#
  3488. , , # PAD , RTS ,#
  3489. MCI , MLI ; # MCI , MLI #
  3490. CONTROL EJECT;
  3491. # #
  3492. # GENDEV CODE BEGINS HERE #
  3493. # #
  3494. IF NOT GDVLERR[0] # IF VALUE IS O.K. #
  3495. THEN
  3496. BEGIN
  3497. GOTO GENDJUMP[GDKWID[0]];
  3498. USR$PARAM: # CHECK RANGE OF USER PRARMETER #
  3499. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  3500. THEN
  3501. BEGIN
  3502. USR$RANGE(GDVAL[0],USR$WID1,NUM"HEX",GDSTAT);
  3503. END
  3504. ELSE
  3505. BEGIN
  3506. NDLCKRG(GDKWID[0],GDVAL[0],GDSTAT); # CHECK FOR NORMAL RANGE#
  3507. END
  3508. IF GDSTAT # IF WITHIN RANGE #
  3509. THEN
  3510. BEGIN # MAKE FNFV PAIR ENTRY #
  3511. DEVFNFV(GDKWID[0]+10,GDVAL[0]);
  3512. END
  3513. GOTO NEXT$GEN;
  3514. PRI:
  3515. IF GDNAME[0] EQ "YES" # IF VALUE IS -YES- #
  3516. THEN
  3517. BEGIN # MAKE FNFV PAIR ENTRY #
  3518. DEVFNFV(FN"PRI",TRUE);
  3519. END
  3520. GOTO NEXT$GEN;
  3521. $DI:
  3522. IF GDNAME[0] EQ "YES" # IF VALUE IS -YES- #
  3523. THEN
  3524. BEGIN
  3525. DEST[CRNT$DEV + 2] = TRUE; # SET STATUS FLAG IN ENTRY #
  3526. END
  3527. GOTO NEXT$GEN;
  3528. PW:
  3529. IF GDNAME[0] NQ "CCP" # IF VALUE IS NOT -CCP- #
  3530. THEN
  3531. BEGIN # CHECK RAMGE FOR PW VALUE #
  3532. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  3533. THEN
  3534. BEGIN
  3535. USR$RANGE(GDVAL[0],USR$WID1,NUM"DEC",GDSTAT);
  3536. END
  3537. ELSE
  3538. BEGIN
  3539. NDLCKRG(GDKWID[0],GDVAL[0],GDSTAT); # CHECK FOR NORMAL #
  3540. # RANGE #
  3541. IF GDSTAT # IF CHECK STATUS IS O.K. #
  3542. THEN
  3543. BEGIN
  3544. IF CRNT$TC EQ TC"$3780" OR # FURTHER CHECK FOR 3780 #
  3545. CRNT$TC EQ TC"$2780" # OR 2780 #
  3546. THEN
  3547. BEGIN
  3548. IF CRNT$DT EQ DT"LP" # IF LINEPRINTER #
  3549. THEN
  3550. BEGIN
  3551. IF GDVAL[0] LS MPW$2780$LP OR
  3552. GDVAL[0] GR MXPW$2780$LP
  3553. THEN
  3554. BEGIN
  3555. NDLEM2(ERR100,STLNUM[0], XCDD(GDVAL[0]));
  3556. GDSTAT = FALSE;
  3557. END
  3558. END
  3559. END
  3560. END
  3561. END
  3562. IF GDSTAT # IF WITHIN RANGE #
  3563. THEN
  3564. BEGIN # MAKE FNFV PAIR ENTRY #
  3565. DEVFNFV(FN"PW",GDVAL[0]);
  3566. END
  3567. END
  3568. GOTO NEXT$GEN;
  3569. MCI:
  3570. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  3571. THEN
  3572. BEGIN
  3573. USR$RANGE(GDVAL[0],USR$WID1,NUM"DEC",GDSTAT);
  3574. END
  3575. ELSE
  3576. BEGIN
  3577. NDLCKRG(GDKWID[0],GDVAL[0],GDSTAT); # CHECK FOR NORMAL RANGE#
  3578. END
  3579. IF GDSTAT # IF WITHIN RANGE #
  3580. THEN
  3581. BEGIN # MAKE FNFV PAIR ENTRY #
  3582. DEVFNFV(FN"MCI",GDVAL[0]);
  3583. END
  3584. GOTO NEXT$GEN;
  3585.  
  3586.  
  3587. MLI:
  3588. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  3589. THEN
  3590. BEGIN
  3591. USR$RANGE(GDVAL[0],USR$WID1,NUM"DEC",GDSTAT);
  3592. END
  3593. ELSE
  3594. BEGIN
  3595. NDLCKRG(GDKWID[0],GDVAL[0],GDSTAT); # CHECK FOR NORMAL RANGE#
  3596. END
  3597. IF GDSTAT # IF WITHIN RANGE #
  3598. THEN
  3599. BEGIN # MAKE FNFV PAIR ENTRY #
  3600. DEVFNFV(FN"MLI",GDVAL[0]);
  3601. END
  3602. GOTO NEXT$GEN;
  3603.  
  3604. MC:
  3605. IF CRNT$TIP EQ TIP"USER" # IF TIPTYE IS USER #
  3606. THEN
  3607. BEGIN
  3608. USR$RANGE(GDVAL[0],USR$WID1,NUM"HEX",GDSTAT);
  3609. END
  3610. ELSE # IF OTHER TIPTYPE #
  3611. BEGIN
  3612. GDSTAT = TRUE; # PRSET GDSATT TO TRUE #
  3613. IF NOT ((GDVAL[0] EQ HEX$00) OR
  3614. (GDVAL[0] GQ HEX$03 AND GDVAL[0] LQ HEX$1F) OR
  3615. (GDVAL[0] GQ HEX$21 AND GDVAL[0] LQ HEX$2F) OR
  3616. (GDVAL[0] GQ HEX$3A AND GDVAL[0] LQ HEX$3C) OR
  3617. (GDVAL[0] GQ HEX$3E AND GDVAL[0] LQ HEX$40) OR
  3618. (GDVAL[0] GQ HEX$5B AND GDVAL[0] LQ HEX$60) OR
  3619. (GDVAL[0] GQ HEX$7B AND GDVAL[0] LQ HEX$7E)
  3620. )
  3621. THEN
  3622. BEGIN
  3623. GDSTAT = FALSE; # SET GDSTAT FLAG TO FALSE #
  3624. NDLEM2(ERR100,STLNUM[0],XCHD(GDVAL[0])); # PASS ERROR #
  3625. END
  3626. END
  3627. IF GDSTAT # IF STATUS IS O.K. #
  3628. THEN
  3629. BEGIN # PUT VALUE IN DEVICE ENTRY #
  3630. DEVFNFV(FN"MC",GDVAL[0]);
  3631. END
  3632. GOTO NEXT$GEN;
  3633. NEXT$GEN:
  3634. END
  3635. RETURN; # **** RETURN **** #
  3636. END # GENDEV #
  3637. CONTROL EJECT;
  3638. PROC HSPDEV;
  3639. BEGIN
  3640. *IF,DEF,IMS
  3641. #
  3642. ** HSPDEV - CHECK DEVICE STATEMENT FOR PARAMETERS LEGAL FOR HASP TIP.
  3643. *
  3644. * D.K. ENDO 81/11/20
  3645. *
  3646. * THIS PROCEDURE CHECKS PARAMETER TO BE VALID FOR HASP DEVICES.
  3647. *
  3648. * PROC HSPDEV
  3649. *
  3650. * ENTRY NONE.
  3651. *
  3652. * EXIT NONE.
  3653. *
  3654. * METHOD
  3655. *
  3656. * FOR EACH VALUE DECLARATION,
  3657. * SELECT CASE THAT APPLIES,
  3658. * CASE 1(DI,PRI,PW,P90,P91,...,P99):
  3659. * CHECK GENERAL DEVICE PARAMETER.
  3660. * CASE 2(UBZ,DBL,XBZ):
  3661. * CHECK FLOW CONTROL PARAMETER.
  3662. * CASE 3(HN,AUTOLOG,AUTOCON,B1,B2,CN,CT,PG,PL):
  3663. * IF DT IS CONSOLE,
  3664. * THEN,
  3665. * CHECK CONSOLE PARAMETER.
  3666. * OTHERWISE,
  3667. * FLAG ERROR -- PARAMETER INVALID WITH DT SPECIFIED.
  3668. * CASE 4(SDT):
  3669. * IF DT IS NOT CONSOLE OR CARD PUNCH
  3670. * OR SDT VALUE IS SDT12, SDT13, SDT14 OR SDT15,
  3671. * THEN,
  3672. * CHECK BATCH DEVICE PARAMETER.
  3673. * OTHERWISE,
  3674. * FLAG ERROR -- PARAMETER INVALID WITH DT SPECIFIED.
  3675. * CASE 5(DO,STREAM):
  3676. * IF DT IS NOT CONSOLE,
  3677. * THEN,
  3678. * CHECK BATCH DEVICE PARAMETER.
  3679. * OTHERWISE,
  3680. * FLAG ERROR -- PARAMETER NOT ALLOWED WITH DT SPECIFIED.
  3681. * CASE 6(TA,AL,BR,BS,CI,DLC,DLTO,DLX,EP,IN,LI,OP,PA,SE,XLY):
  3682. * FLAG ERROR -- PARAMETER NOT ALLOWED.
  3683. * CASE 7(ABL):
  3684. * IF DT IS CONSOLE,
  3685. * THEN,
  3686. * CHECK FLOW CONTROL PARAMETER.
  3687. * OTHERWISE,
  3688. * FLAG ERROR -- PARAMETER NOT ALLOWED WITH DT SPECIFIED.
  3689. * CASE 8(DBZ):
  3690. * IF DT IS NOT CARD READER,
  3691. * THEN,
  3692. * CHECK FLOW CONTROL PARAMETER.
  3693. * OTHERWISE,
  3694. * FLAG ERROR -- PARAMETER NOT ALLOWED WITH DT SPECIFIED.
  3695. * CASE 9(UBL):
  3696. * IF DT IS NOT CONSOLE AND WITHIN RANGE 1-7
  3697. * THEN,
  3698. * CHECK FLOW CONTROL PARAMETER.
  3699. * OTHERWISE,
  3700. * FLAG ERROR -- PARAMETER NOT ALLOWED WITH DT SPECIFIED.
  3701. * IF DT IS CONSOLE,
  3702. * THEN,
  3703. * IF ABL WAS NOT SPECIFIED,
  3704. * DEFAULT ABL VALUE INTO DEVICE ENTRY.
  3705. * OTHERWISE,
  3706. * IF DO WAS NOT SPECIFIED,
  3707. * IF THIS IS FIRST DEVICE FOR THIS DT
  3708. * THEN,
  3709. * DEFAULT DO VALUE BY ONE.
  3710. * SET BIT IN BIT MAP FOR DO VALUE.
  3711. * OTHERWISE,
  3712. * FLAG ERROR -- REQUIRED PARAMETER MISSING.
  3713. * IF STREAM WAS NOT SPECIFIED AND LINE IS NOT AUTO-REC,
  3714. * FLAG ERROR -- REQUIRED PARAMETER MISSING.
  3715. * IF DBL,UBZ WAS NOT SPECIFIED,
  3716. * DEFAULT VALUE BY DT.
  3717. * IF UBL WAS NOT SPECIFIED AND DT IS CONSOLE OR CARD READER,
  3718. * DEFAULT UBL VALUE BY DT.
  3719. * IF DBZ WAS NOT SPECIFIED AND DT IS NOT CARD READER,
  3720. * DEFAULT DBZ VALUE BY DT.
  3721. * IF XBZ WAS NOT SPECIFIED,
  3722. * DEFAULT XBZ VALUE INTO DEVICE ENTRY.
  3723. * CHECK IS B1,B2,CN,CT ARE UNIQUE,
  3724. * IF NOT UNIQUE,
  3725. * FLAG ERROR -- B1,B2,CN,CT MUST BE UNIQUE.
  3726. *
  3727. #
  3728. *ENDIF
  3729. #
  3730. **** PROC HSPDEV - XREF LIST BEGINS.
  3731. #
  3732. XREF
  3733. BEGIN
  3734. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  3735. FUNC XCDD C(10); # CONVERTS INTEGER TO CHARACTER #
  3736. END
  3737. #
  3738. ****
  3739. #
  3740. DEF ABL$DEF # 2 #; # DEFAULT ABL VALUE #
  3741. DEF B1$DEF # X"3A" #; # DEFAULT B1 VALUE #
  3742. DEF B2$DEF # X"29" #; # DEFAULT B2 VALUE #
  3743. DEF CN$DEF # X"28" #; # DEFAULT CN VALUE #
  3744. DEF CT$DEF # X"25" #; # DEFAULT CT VALUE #
  3745. DEF DO$DEF # 1 #; # DEFAULT -DO- VALUE #
  3746. DEF STRM$DEF # 1 #; # DEFAULT STREAM VALUE #
  3747. DEF UBL$DEF # 7 #; # DEFAULT UBL VALUE #
  3748. DEF XBZ$DEF # 400 #; # DEFAULT XBZ VALUE #
  3749. DEF PL$DEF # 64 #; # DEFAULT PAGE LENGTH VALUE #
  3750. ITEM CHARVAL C(10); # SCRATCH CHARACTER VARIABLE #
  3751. ITEM I; # SCRATCH ITEM #
  3752. ITEM ITEMP; # INTEGER TEMPORARY #
  3753. ITEM J; # SCRATCH ITEM #
  3754. ITEM VALUE; # INTEGER VALUE TEMPORARY #
  3755. DEF MXDT # 5 #;
  3756. ARRAY FC$DEF$TABLE [1:MXDT] S(2);
  3757. BEGIN
  3758. ITEM DBL$DEF (0,0,30) = [2, # CONSOLE -- DBL DEFAULT #
  3759. 2, # CARD READER #
  3760. 1, # LINE PRINTER #
  3761. 1, # CARD PUNCH #
  3762. 1, # PLOTTER #
  3763. ];
  3764. ITEM DBZ$DEF (0,30,30) = [400, # CONSOLE -- DEFAULT DBZ #
  3765. 0, # CARD READER (N/A) #
  3766. 1, # LINE PRINTER #
  3767. 1, # CARD PUNCH #
  3768. 1, # PLOTTER #
  3769. ];
  3770. ITEM UBZ$DEF (1,30,30) = [1, # CONSOLE -- UBZ DEFAULT #
  3771. 1, # CARD READER #
  3772. 2, # LINE PRINTER #
  3773. 2, # CARD PUNCH #
  3774. 2 # PLOTTER #
  3775. ];
  3776. END
  3777. SWITCH HSPDJUMP , , # UNK , NODE ,#
  3778. , , # VARIANT , OPGO ,#
  3779. , , # DMP , LLNAME ,#
  3780. , , # , ,#
  3781. , , # , ,#
  3782. , , # HNAME , LOC ,#
  3783. , , # , ,#
  3784. , , # , ,#
  3785. , , # , ,#
  3786. , GEN$PARAM , # NCNAME , DI ,#
  3787. , , # N1 , P1 ,#
  3788. , , # N2 , P2 ,#
  3789. , , # NOLOAD1 , NOLOAD2 ,#
  3790. , , # , ,#
  3791. , , # , ,#
  3792. , , # NI , PORT ,#
  3793. , , # LTYPE , TIPTYPE ,#
  3794. , , # AUTO , SL ,#
  3795. , , # LSPEED , DFL ,#
  3796. , , # FRAME , RTIME ,#
  3797. , , # RCOUNT , NSVC ,#
  3798. , , # PSN , DCE ,#
  3799. , , # DTEA , ,#
  3800. , , # , ,#
  3801. , , # , ,#
  3802. , , # STIP , TC ,#
  3803. , , # RIC , CSET ,#
  3804. , , # TSPEED , CA ,#
  3805. , , # CO , BCF ,#
  3806. , , # MREC , W ,#
  3807. , , # CTYP , NCIR ,#
  3808. , , # NEN , COLLECT ,#
  3809. , NEXT$HSP , # , DT ,#
  3810. SDT , ILLEGAL , # SDT , TA ,#
  3811. ABL , DBZ , # ABL , DBZ ,#
  3812. UBZ$UBL , FLOW$PARAM , # UBZ , DBL ,#
  3813. UBZ$UBL , FLOW$PARAM , # UBL , XBZ ,#
  3814. ORDINAL , ORDINAL , # DO , STREAM ,#
  3815. CON$PARAM , , # HN , AUTOLOG ,#
  3816. CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
  3817. GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
  3818. GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
  3819. GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
  3820. GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
  3821. GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
  3822. ILLEGAL , ILLEGAL , # AB , BR ,#
  3823. ILLEGAL , CON$PARAM , # BS , B1 ,#
  3824. CON$PARAM , ILLEGAL , # B2 , CI ,#
  3825. CON$PARAM , CON$PARAM , # CN , CT ,#
  3826. ILLEGAL , ILLEGAL , # DLC , DLTO ,#
  3827. ILLEGAL , ILLEGAL , # DLX , EP ,#
  3828. ILLEGAL , ILLEGAL , # IN , LI ,#
  3829. ILLEGAL , ILLEGAL , # OP , PA ,#
  3830. CON$PARAM , PL$PARAM , # PG , PL ,#
  3831. GEN$PARAM , ILLEGAL , # PW , SE ,#
  3832. ILLEGAL , ILLEGAL , # FA , XLC ,#
  3833. ILLEGAL , ILLEGAL , # XLX , XLTO ,#
  3834. ILLEGAL , ILLEGAL , # ELO , ELX ,#
  3835. ILLEGAL , ILLEGAL , # ELR , EBO ,#
  3836. ILLEGAL , ILLEGAL , # EBR , CP ,#
  3837. ILLEGAL , ILLEGAL , # IC , OC ,#
  3838. CON$PARAM , ILLEGAL , # LK , EBX ,#
  3839. CON$PARAM , GEN$PARAM , # HD , MC ,#
  3840. ILLEGAL , , # XLY , EOF ,#
  3841. , ILLEGAL , # PAD , RTS #
  3842. ILLEGAL , ILLEGAL ; # MCI , MLI ,#
  3843.  
  3844. CONTROL EJECT;
  3845. # #
  3846. # HSPDEV CODE BEGINS HERE #
  3847. # #
  3848. CRNT$CC[CC"CN"] = CN$DEF; # CN -- DEFAULT CONTROL CHAR #
  3849. CRNT$CC[CC"B1"] = B1$DEF; # B1 #
  3850. CRNT$CC[CC"B2"] = B2$DEF; # B2 #
  3851. CRNT$CC[CC"CT"] = CT$DEF; # CT #
  3852. FOR I=3 STEP 1 UNTIL STWC[0]
  3853. DO # FOR EACH VALUE-DECLARATION ENTRY #
  3854. BEGIN
  3855. GOTO HSPDJUMP[STKWID[I]]; # GOTO APPROPRIATE PARAGRAPH #
  3856. GEN$PARAM:
  3857. GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETER #
  3858. TEST I;
  3859. FLOW$PARAM:
  3860. FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETER #
  3861. TEST I;
  3862. CON$PARAM:
  3863. IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
  3864. THEN
  3865. BEGIN
  3866. CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
  3867. END
  3868. ELSE # DT IS NOT CONSOLE #
  3869. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  3870. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  3871. END
  3872. TEST I;
  3873. PL$PARAM:
  3874. IF CRNT$DT EQ DT"CON" OR # IF DT IS CONSOLE #
  3875. CRNT$DT EQ DT"LP" # OF DT IS LINEPRINTER #
  3876. THEN
  3877. BEGIN
  3878. CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
  3879. END
  3880. ELSE # DT IS NOT CONSOLE #
  3881. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  3882. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  3883. END
  3884. TEST I;
  3885. SDT:
  3886. IF(CRNT$DT NQ DT"CON" AND # IF DT IS NOT CON OR CP #
  3887. CRNT$DT NQ DT"CP" ) OR
  3888. ( STVALNAM[I] EQ "SDT12" OR # IF SDT12 - SDT15 USED #
  3889. STVALNAM[I] EQ "SDT13" OR
  3890. STVALNAM[I] EQ "SDT14" OR
  3891. STVALNAM[I] EQ "SDT15"
  3892. )
  3893. THEN
  3894. BEGIN # CHECK BATCH DEVICE #
  3895. BTCHDEV(STWORD[I],STLNUM[0]);
  3896. END
  3897. ELSE # DT IS CONSOLE OR CARD PUNCH #
  3898. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  3899. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  3900. END
  3901. TEST I;
  3902. ORDINAL:
  3903. IF CRNT$DT NQ DT"CON" # IF DT IS NOT CONSOLE #
  3904. THEN
  3905. BEGIN # CHECK BATCH PARAMETER #
  3906. BTCHDEV(STWORD[I],STLNUM[0]);
  3907. END
  3908. ELSE # DT IS CONSOLE #
  3909. BEGIN
  3910. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  3911. END
  3912. TEST I;
  3913. ILLEGAL: # ALL OTHER PARAMETERS FLAG AS INVALID #
  3914. IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
  3915. THEN
  3916. BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
  3917. NDLEM2(ERR135,STLNUM[0],KWDNAME[STKWID[I]]);
  3918. END
  3919. ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
  3920. BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
  3921. NDLEM2(ERR106,STLNUM[0],KWDNAME[STKWID[I]]);
  3922. END
  3923. TEST I;
  3924. ABL:
  3925. IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
  3926. THEN
  3927. BEGIN # CHECK FLOW CONTROL PARAMETER #
  3928. FLOWDEV(STWORD[I],STLNUM[0]);
  3929. END
  3930. ELSE # DT IS NOT CONSOLE #
  3931. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  3932. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  3933. END
  3934. TEST I;
  3935. DBZ:
  3936. IF CRNT$DT NQ DT"CR" # IF DT IS NOT CARD READER #
  3937. THEN
  3938. BEGIN # CHECK FLOW CONTROL PARAMETER #
  3939. FLOWDEV(STWORD[I],STLNUM[0]);
  3940. END
  3941. ELSE # DT IS CARD READER #
  3942. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  3943. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  3944. END
  3945. TEST I;
  3946. UBZ$UBL: # IF DT IS CONSOLE, CARD READER, LINE #
  3947. # PRINTER, CARD PUNCH, OR PLOTTER #
  3948. IF CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"CR" OR
  3949. CRNT$DT EQ DT"LP" OR CRNT$DT EQ DT"CP" OR
  3950. CRNT$DT EQ DT"PL"
  3951. THEN
  3952. BEGIN
  3953. IF STKWID[I] EQ KID"UBZ" # IF UBZ PARAMETER #
  3954. THEN
  3955. BEGIN
  3956. FLOWDEV(STWORD[I],STLNUM[0]);
  3957. END
  3958. ELSE
  3959. BEGIN # ELSE, UBL PARAMETER #
  3960. IF CRNT$DT EQ DT"CON"
  3961. THEN
  3962. BEGIN # CONSOLE DEVICES 1 <= UBL <=31#
  3963. FLOWDEV(STWORD[I],STLNUM[0]);
  3964. END
  3965. ELSE
  3966. BEGIN # PASSIVE DEVICE UBL #
  3967. IF (STVALNUM[I] GQ 1 AND STVALNUM[I] LQ 7)
  3968. THEN # 1<= UBL <= 7 #
  3969. BEGIN
  3970. FLOWDEV(STWORD[I],STLNUM[0]);
  3971. END
  3972. ELSE
  3973. BEGIN
  3974. CHARVAL=XCDD(STVALNUM[I]);
  3975. NDLEM2(ERR100,STLNUM[0],CHARVAL);
  3976. END
  3977. END
  3978. END
  3979. END
  3980. ELSE
  3981. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  3982. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  3983. END
  3984. NEXT$HSP:
  3985. END
  3986. IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
  3987. THEN
  3988. BEGIN
  3989. IF NOT AUTO$REC
  3990. THEN # IF THIS IS NOT ON AN AUTO-REC LINE #
  3991. BEGIN
  3992. DEA2[CRNT$DEV + 2] = STRM$DEF; # DEFAULT STREAM VALUE FOR CON#
  3993. END
  3994. IF NOT ABL$USED # IF ABL NOT SPECIFIED #
  3995. THEN
  3996. BEGIN
  3997. DEVFNFV(FN"ABL",ABL$DEF);
  3998. END
  3999. END
  4000. ELSE # DT IS PASSIVE DEVICE #
  4001. BEGIN
  4002. IF NOT DO$USED # IF -DO- NOT SPECIFIED #
  4003. THEN
  4004. BEGIN
  4005. IF FIRST$DT[CRNT$DT] # IF FIRST DEVICE FOR THIS DT #
  4006. THEN
  4007. BEGIN
  4008. DEVFNFV(FN"DO$",DO$DEF); # PUT DEFAULT DO VALUE FOR DEV #
  4009. FIRST$DT[CRNT$DT] = FALSE; # CLEAR FLAG FOR DT #
  4010. END
  4011. ELSE # NOT FIRST DEVICE FOR THIS DT #
  4012. BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
  4013. NDLEM2(ERR103,STLNUM[0],"DO");
  4014. END
  4015. END
  4016. IF NOT STREAM$USED AND # IF STREAM NOT SPECIFIED #
  4017. NOT AUTO$REC # AND NOT AUTO-REC LINE #
  4018. THEN
  4019. BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
  4020. NDLEM2(ERR103,STLNUM[0],"STREAM");
  4021. END
  4022. END
  4023. IF NOT DBL$USED # IF DBL NOT SPECIFIED #
  4024. THEN
  4025. BEGIN
  4026. DEVFNFV(FN"DBL",DBL$DEF[CRNT$DT]);
  4027. END
  4028. IF NOT UBL$USED # IF UBL NOT SPECIFIED #
  4029. THEN
  4030. BEGIN
  4031. DEVFNFV(FN"UBL",UBL$DEF);
  4032. END
  4033. IF NOT DBZ$USED AND # IF DBZ NOT SPECIFIED AND #
  4034. CRNT$DT NQ DT"CR" # DT IS NOT A CARD READER #
  4035. THEN
  4036. BEGIN
  4037. VALUE = DBZ$DEF[CRNT$DT];
  4038. J = B<44,8>VALUE; # MSB OF DEFAULT DBZ #
  4039. DEVFNFV(FN"DBZ$MSB",J);
  4040. J = B<52,8>VALUE; # LSB OF DEFAULT DBZ #
  4041. DEVFNFV(FN"DBZ$LSB",J);
  4042. END
  4043. IF NOT UBZ$USED AND # IF UBZ NOT SPECIFIED #
  4044. (CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"CR")
  4045. THEN
  4046. BEGIN
  4047. DEVFNFV(FN"UBZ",UBZ$DEF[CRNT$DT]);
  4048. END
  4049. IF NOT XBZ$USED # IF XBZ NOT SPECIFIED #
  4050. THEN
  4051. BEGIN
  4052. VALUE = XBZ$DEF;
  4053. J = B<44,8>VALUE; # MSB OF DEFAULT XBZ #
  4054. DEVFNFV(FN"XBZ$MSB",J);
  4055. J = B<52,8>VALUE; # LSB OF DEFAULT XBZ #
  4056. DEVFNFV(FN"XBZ$LSB",J);
  4057. END
  4058. IF NOT PL$USED AND # IF PL NOT SPECIFIED #
  4059. CRNT$DT EQ DT"LP" # DEVICE IS LINEPRINTER #
  4060. THEN
  4061. BEGIN
  4062. DEVFNFV(FN"PL",PL$DEF);
  4063. END
  4064. FOR I=CC"CN" STEP 1 UNTIL CC"CT" - 1
  4065. DO # CHECK UNIQUENESS OF CHARS #
  4066. BEGIN
  4067. FOR J=I+1 STEP 1 UNTIL CC"CT"
  4068. DO
  4069. BEGIN
  4070. IF CRNT$CC[I] EQ CRNT$CC[J]
  4071. THEN
  4072. BEGIN # FLAG ERROR -- VALUE IS NOT UNIQUE #
  4073. NDLEM2(ERR132,STLNUM[0]," ");
  4074. END
  4075. END
  4076. END
  4077. RETURN; # **** RETURN **** #
  4078. END # HSPDEV #
  4079. CONTROL EJECT;
  4080. PROC MBDEV(MBWORD,MBLNUM);
  4081. BEGIN
  4082. *IF,DEF,IMS
  4083. #
  4084. ** MBDEV - CHECK MODE4/BSC PARAMETER FOR DEVICE STATEMENT.
  4085. *
  4086. * D.K. ENDO 81/11/20
  4087. *
  4088. * THIS PROCEDURE CHECKS PARAMETERS THAT ARE COMMON TO MODE4 AND HASP
  4089. * DEVICES.
  4090. *
  4091. * PROC MBDEV(MBWORD,MBLNUM)
  4092. *
  4093. * ENTRY MBWORD = VALUE DECLARATION ENTRY.
  4094. * MBLNUM = CURRENT SOURCE LINE NUMBER.
  4095. *
  4096. * EXIT NONE.
  4097. *
  4098. * METHOD
  4099. *
  4100. * IF VALUE IS O.K.
  4101. * IF VALUE IS -AUTOREC-
  4102. * THEN,
  4103. * IF LINE IS NOT AUTO-REC,
  4104. * FLAG ERROR -- VALUE INVALID ON FIXED LINES.
  4105. * OTHERWISE,
  4106. * IF DT IS USER OR UNKNOWN,
  4107. * THEN,
  4108. * PUT VALUE IS DEVICE ENTRY.
  4109. * OTHERWISE,
  4110. * IF TIPTYPE IS BSC,
  4111. * THEN,
  4112. * IF VALUE IS WITHIN RANGE,
  4113. * THEN,
  4114. * PUT VALUE IS DEVICE ENTRY.
  4115. * OTHERWISE,
  4116. * FLAG ERROR -- VALUE OUT OF RANGE.
  4117. * OTHERWISE,
  4118. * IF TIPTYPE IS MODE4,
  4119. * THEN,
  4120. * IF STIP IS M4A,
  4121. * THEN,
  4122. * IF VALUE IS 60 HEX,
  4123. * THEN,
  4124. * PUT VALUE IN DEVICE ENTRY.
  4125. * OTHERWISE,
  4126. * FLAG ERROR -- VALUE OUT OF RANGE.
  4127. * OTHERWISE,
  4128. * IF STIP IS M4C,
  4129. * THEN,
  4130. * IF VALUE IS IN RANGE,
  4131. * THEN,
  4132. * PUT VALUE IN DEVICE ENTRY.
  4133. * IF LINE IS NOT AUTO-REC
  4134. * CHECK IF VALUE IS UNIQUE.
  4135. * IF NOT UNIQUE,
  4136. * FLAG ERROR -- DUPLICATE TA VALUE.
  4137. * OTHERWISE,
  4138. * FLAG ERROR -- VALUE OUT OF RANGE.
  4139. * OTHERWISE,
  4140. * PUT VALUE IN DEVICE ENTRY.
  4141. * OTHERWISE,
  4142. * IF TIPTYPE IS 3270,
  4143. * THEN
  4144. * IF VALUE IS WITHIN RANGE,
  4145. * THEN
  4146. * PUT VALUE IN DEVICE ENTRY.
  4147. * OTHERWISE,
  4148. * PUT VALUE IN DEVICE ENTRY.
  4149. *
  4150. #
  4151. *ENDIF
  4152. ARRAY MBWORD [0:0] S(1); # VALUE DECLARATION ENTRY #
  4153. BEGIN
  4154. ITEM MBKWID U(0,0,9); # KEYWORD I.D. #
  4155. ITEM MBVLERR B(0,17,1); # VALUE ERROR FLAG #
  4156. ITEM MBNAME C(0,18,7); # CHARACTER VALUE #
  4157. ITEM MBVAL (0,18,42); # INTEGER VALUE #
  4158. END
  4159. ITEM MBLNUM; # STATEMENT SOURCE LINE NUMBER #
  4160. #
  4161. **** PROC MBDEV - XREF LIST BEGINS.
  4162. #
  4163. XREF
  4164. BEGIN
  4165. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  4166. FUNC XCHD C(10); # CONVERTS INTEGER TO HEX DISPLAY CODE #
  4167. END
  4168. #
  4169. ****
  4170. #
  4171. ITEM CTEMP C(10); # CHARACTER TEMPORARY #
  4172. ITEM ITEMP; # INTEGER TEMPORARY #
  4173. CONTROL EJECT;
  4174. # #
  4175. # MBDEV CODE BEGINS HERE #
  4176. # #
  4177. TA$USED = TRUE; # SET TA SPECIFIED FLAG #
  4178. IF NOT MBVLERR[0] # IF VALUE IS O.K. #
  4179. THEN
  4180. BEGIN
  4181. IF MBNAME[0] NQ "AUTOREC" # IF VALUE IS NOT -AUTOREC- #
  4182. THEN
  4183. BEGIN
  4184. IF CRNT$DT NQ DT"USER" AND # IF DT IS NOT USER OR UNKNOWN #
  4185. CRNT$DT NQ DT"UNKNOWN"
  4186. THEN
  4187. BEGIN
  4188. IF CRNT$TIP EQ TIP"BSC" # IF TIPTYPE IS -BSC- #
  4189. THEN
  4190. BEGIN
  4191. IF MBVAL[0] GQ 2 AND # IF TA VALUE IS WITHIN RANGE #
  4192. MBVAL[0] LQ 3
  4193. THEN
  4194. BEGIN # MAKE ENTRY IN LINE RECORD #
  4195. DEA2[CRNT$DEV + 2] = MBVAL[0];
  4196. END
  4197. ELSE # TA VALUE NOT IN RANGE FOR BSC #
  4198. BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
  4199. CTEMP = XCHD(MBVAL[0]);
  4200. NDLEM2(ERR100,MBLNUM,CTEMP);
  4201. END
  4202. END
  4203. ELSE IF CRNT$TIP EQ TIP"MODE4"
  4204. THEN
  4205. BEGIN # IF STIP IS -M4A- #
  4206. IF CRNT$STIP EQ STIP"M4A"
  4207. THEN
  4208. BEGIN # IF TA IS CORRECT VALUE #
  4209. IF MBVAL[0] EQ X"60"
  4210. THEN
  4211. BEGIN # PUT VALUE IN LINE RECORD #
  4212. DEA2[CRNT$DEV + 2] = MBVAL[0];
  4213. END
  4214. ELSE # TA VALUE NOT VALID #
  4215. BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
  4216. CTEMP = XCHD(MBVAL[0]);
  4217. NDLEM2(ERR100,MBLNUM,CTEMP);
  4218. END
  4219. END
  4220. ELSE # STIP IS NOT -M4A- #
  4221. BEGIN # IF STIP IS -M4C- #
  4222. IF CRNT$STIP EQ STIP"M4C"
  4223. THEN
  4224. BEGIN # IF VALUE IS WITHIN RANGE #
  4225. IF MBVAL[0] GQ X"61" AND
  4226. MBVAL[0] LQ X"6F"
  4227. THEN
  4228. BEGIN # PUT VALUE IN LINE RECORD #
  4229. DEA2[CRNT$DEV + 2] = MBVAL[0];
  4230. IF NOT AUTO$REC # IF NOT AUTO-REC LINE #
  4231. THEN # CHECK FOR UNIQUE TA #
  4232. BEGIN
  4233. ITEMP = MBVAL[0] - X"61";
  4234. IF B<ITEMP,1>TA$MAP NQ 1
  4235. THEN
  4236. BEGIN
  4237. B<ITEMP,1>TA$MAP = 1;
  4238. END
  4239. ELSE # TA VALUE NOT UNIQUE #
  4240. BEGIN # FLAG ERROR -- TA NOT UNIQUE #
  4241. NDLEM2(ERR143,MBLNUM," ");
  4242. END
  4243. END
  4244. END
  4245. ELSE # VALUE IS NOT WITHIN RANGE #
  4246. BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
  4247. CTEMP = XCHD(MBVAL[0]);
  4248. NDLEM2(ERR100,MBLNUM,CTEMP);
  4249. END
  4250. END
  4251. ELSE # STIP MUST BE UNKNOWN #
  4252. BEGIN # PUT VALUE IN LINE RECORD #
  4253. DEA2[CRNT$DEV + 2] = MBVAL[0];
  4254. END
  4255. END
  4256. END
  4257. ELSE IF CRNT$TIP EQ TIP"$3270"
  4258. THEN # TIPTYPE IS 3270 #
  4259. BEGIN
  4260. IF MBVAL[0] GQ 0 AND MBVAL[0] LQ X"1F"
  4261. THEN # IF VALUE IS WITHIN RANGE #
  4262. BEGIN
  4263. DEA2[CRNT$DEV+2] = MBVAL[0]; # STORE THE VALUE #
  4264. END
  4265. ELSE # VALUE IS OUT OF RANGE #
  4266. BEGIN
  4267. NDLEM2(ERR100,MBLNUM,XCHD(MBVAL[0]));
  4268. END
  4269. END
  4270. ELSE # TIPTYPE IS USER OR UNKNOWN #
  4271. BEGIN
  4272. DEA2[CRNT$DEV + 2] = MBVAL[0];
  4273. END
  4274. END
  4275. ELSE # DT IS USER OR UNKNOWN #
  4276. BEGIN
  4277. DEA2[CRNT$DEV + 2] = MBVAL[0];
  4278. END
  4279. END
  4280. ELSE # VALUE IS -AUTOREC- #
  4281. BEGIN
  4282. IF NOT AUTO$REC # IF NOT AN AUTO-REC LINE #
  4283. THEN
  4284. BEGIN # FLAG ERROR -- VAL INVALID ON FIXED LINES#
  4285. NDLEM2(ERR113,MBLNUM," ");
  4286. END
  4287. END
  4288. END
  4289. RETURN; # **** RETURN **** #
  4290. END # MBDEV #
  4291. CONTROL EJECT;
  4292. PROC MD4DEV;
  4293. BEGIN
  4294. *IF,DEF,IMS
  4295. #
  4296. ** MD4DEV - CHECK DEVICE STATEMENT PARAMETERS LEGAL FOR MODE4.
  4297. *
  4298. * D.K. ENDO 81/11/20
  4299. *
  4300. * THIS PROCEDURE CHECK PARAMETER TO BE ALLOW FOR MODE4 DEVICES.
  4301. *
  4302. * PROC MD4DEV
  4303. *
  4304. * ENTRY NONE.
  4305. *
  4306. * EXIT NONE.
  4307. *
  4308. * METHOD
  4309. *
  4310. * FOR EACH VALUE DECLARATION,
  4311. * SELECT CASE THAT APPLIES,
  4312. * CASE 1(PRI,DI,PW,P90,P91,...,P99):
  4313. * CHECK GENERAL PARAMETER.
  4314. * CASE 2(TA):
  4315. * CHECK MODE4/BSC PARAMETER.
  4316. * CASE 3(DBL,XBZ):
  4317. * CHECK FLOW CONTROL PARAMETER.
  4318. * CASE 4(B1,B2,CN,CT,PG,PL,HN,AUTOLOG,AUTOCON):
  4319. * IF DT IS CONSOLE,
  4320. * THEN,
  4321. * CHECK CONSOLE PARAMETER.
  4322. * OTHERWISE,
  4323. * FLAG ERROR -- PARAM NOT ALLOWED WITH DT SPECIFIED.
  4324. * CASE 5(SDT):
  4325. * IF DT IS LINEPRINTER OR SDT VALUE SPECIFIED
  4326. * IS SDT12, SDT13, SDT14, SDT15,
  4327. * THEN,
  4328. * CHECK BATCH DEVICE PARAMETER.
  4329. * OTHERWISE,
  4330. * FLAG ERROR -- PARAM NOT ALLOWED WITH DT SPECIFIED.
  4331. * CASE 6(DO):
  4332. * IF DT IS LINE PRINTER,
  4333. * THEN,
  4334. * IF STIP IS M4C OR UNKNOWN,
  4335. * THEN,
  4336. * CHECK BATCH DEVICE PARAMETER.
  4337. * OTHERWISE,
  4338. * FLAG ERROR -- PARAM INVALID WITH STIP SPECIFIED.
  4339. * OTHERWISE,
  4340. * IF DT IS CARD READER,
  4341. * THEN,
  4342. * FLAG ERROR -- PARAM INVALID WITH M4A DEVICES.
  4343. * OTHERWISE,
  4344. * FLAG ERROR -- PARAM INVALID WITH CONSOLE DEVICES.
  4345. * CASE 7(ABL):
  4346. * IF DT IS CONSOLE,
  4347. * THEN,
  4348. * CHECK FLOW CONTROL PARAMETER
  4349. * OTHERWISE,
  4350. * FLAG ERROR -- INVALID WITH DT SPECIFIED.
  4351. * CASE 8(DBZ):
  4352. * IF DT IS NOT CARD READER,
  4353. * THEN,
  4354. * CHECK FLOW CONTROL PARAMETER.
  4355. * OTHERWISE,
  4356. * FLAG ERROR -- INVALID WITH DT SPECIFIED.
  4357. * CASE 9(UBZ):
  4358. * IF DT IS CONSOLE OR CARD READER OR LINEPRINTER,
  4359. * THEN,
  4360. * CHECK FLOW CONTROL PARAMETER.
  4361. * OTHERWISE,
  4362. * FLAG ERROR -- INVALID WITH DT SPECIFIED.
  4363. * CASE 10(UBL):
  4364. * IF DT IS NOT CONSOLE AND UBL WITHIN RANGE 1-7,
  4365. * CALL FLOWDEV TO CHECK FLOW CONTROL PARAMETERS.
  4366. * IF DBL NOT SPECIFIED,
  4367. * DEFAULT VALUE BY DEVICE TYPE.
  4368. * IF UBL NOT SPECIFIED,
  4369. * DEFAULT UBL VALUE.
  4370. * IF DT IS CON AND ABL WAS NOT SPECIFIED,
  4371. * DEFAULT ABL VALUE.
  4372. * IF DT IS NOT CARD READER AND DBZ WAS NOT SPECIFIED,
  4373. * IF TC IS NOT USER OR UNKNOWN,
  4374. * THEN,
  4375. * DEFAULT VALUE BY DT AND TC.
  4376. * OTHERWISE,
  4377. * IF STIP IS NOT UNKNOWN,
  4378. * DEFAULT VALUE BY DT AND STIP.
  4379. * IF DT IS NOT LINE PRINTER AND UBZ WAS NOT SPECIFIED,
  4380. * IF TC IS NOT USER OR UNKNOWN,
  4381. * THEN,
  4382. * DEFAULT VALUE BY DT AND TC.
  4383. * OTHERWISE,
  4384. * IF STIP IS NOT UNKNOWN,
  4385. * DEFAULT VALUE BY DT AND STIP.
  4386. * IF XBZ WAS NOT SPECIFIED,
  4387. * IF TC IS NOT USER OR UNKNOWN,
  4388. * THEN
  4389. * DEFAULT VALUE BY DT AND TC.
  4390. * OTHERWISE,
  4391. * IF STIP IS NOT UNKNOWN,
  4392. * DEFAULT VALUE BY DT AND STIP.
  4393. * IF DO WAS NOT SPECIFIED AND DT IS NOT CONSOLE,
  4394. * IF STIP IS M4A OR UNKNOWN,
  4395. * THEN,
  4396. * DEFAULT DO VALUE TO ONE.
  4397. * OTHERWISE,
  4398. * IF THIS DEVICE IS FIRST LINE PRINTER,
  4399. * THEN,
  4400. * DEFAULT DO VALUE TO ONE.
  4401. * OTHERWISE,
  4402. * FLAG ERROR -- REQUIRED PARAMETER MISSING
  4403. * IF TA WAS NOT SPECIFIED AND LINE IS NOT AUTO-REC,
  4404. * FLAG ERROR -- REQUIRED PARAMETER MISSING.
  4405. * CHECK CN,B1,B2,CT TO BE UNIQUE.
  4406. * IF NOT UNIQUE,
  4407. * FLAG ERROR -- CN,B1,B2,CT MUST BE UNIQUE.
  4408. *
  4409. #
  4410. *ENDIF
  4411. #
  4412. **** PROC MD4DEV - XREF LIST BEGINS.
  4413. #
  4414. XREF
  4415. BEGIN
  4416. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  4417. FUNC XCDD C(10); # CONVERTS INTEGER TO CHARACTER #
  4418. END
  4419. #
  4420. ****
  4421. #
  4422. DEF ABL$DEF # 2 #; # DEFAULT ABL VALUE #
  4423. DEF B1$DEF # X"3A" #; # DEFAULT B1 VALUE #
  4424. DEF B2$DEF # X"29" #; # DEFAULT B2 VALUE #
  4425. DEF CN$DEF # X"28" #; # DEFAULT CN VALUE #
  4426. DEF CT$DEF # X"25" #; # DEFAULT CT VALUE #
  4427. DEF DO$DEF # 1 #; # DEFAULT DO VALUE #
  4428. DEF UBL$DEF # 7 #; # DEFAULT UBL VALUE #
  4429. DEF PL$DEF # 64 #; # DEFAULT PL VALUE #
  4430. ITEM CHARVAL C(10); # SCRATCH CHARACTER VARIABLE #
  4431. ITEM I; # SCRATCH ITEM #
  4432. ITEM ITEMP; # INTEGER TEMPORARY #
  4433. ITEM J; # SCRATCH ITEM #
  4434. ITEM VALUE; # INTEGER VALUE TEMPORARY #
  4435. DEF MXDT # 3 #;
  4436. ARRAY DBL$TABLE [1:MXDT] S(1);
  4437. BEGIN
  4438. ITEM DBL$DEF (0,0,60) = [2, # CONSOLE -- DEFAULT DBL #
  4439. 2, # CARD READER #
  4440. 1 # LINE PRINTER #
  4441. ];
  4442. END
  4443. DEF MXTC # 15 #;
  4444. ARRAY DBZ$TC$TBL [10:MXTC,1:MXDT] S(1);
  4445. BEGIN
  4446. ITEM DBZ$TC$DEF (0,0,60) = [[1040, # 200UT -- CONSOLE #
  4447. 1280, # 714X #
  4448. 1280, # 711 #
  4449. 1280, # 714 #
  4450. 0, # HPRE(N/A) #
  4451. 1040 # 734 #
  4452. ]
  4453. [ 0, # 200UT -- CARD READER(N/A)#
  4454. 0, # 714X(N/A) #
  4455. 0, # 711(N/A) #
  4456. 0, # 714(N/A) #
  4457. 0, # HPRE(N/A) #
  4458. 0 # 734(N/A) #
  4459. ]
  4460. [ 1, # 200UT -- LINE PRINTER #
  4461. 1, # 714X #
  4462. 0, # 711(N/A) #
  4463. 1, # 714 #
  4464. 0, # HPRE(N/A) #
  4465. 1 # 734 #
  4466. ]];
  4467. END
  4468. ARRAY UBZ$TC$TBL [10:MXTC,1:MXDT] S(1);
  4469. BEGIN
  4470. ITEM UBZ$TC$DEF (0,0,60) = [[1, # 200UT -- CONSOLE #
  4471. 1, # 714X #
  4472. 1, # 711 #
  4473. 1, # 714 #
  4474. 0, # HPRE(N/A) #
  4475. 1 # 734 #
  4476. ]
  4477. [1, # 200UT -- CARD READER #
  4478. 0, # 714X(N/A) #
  4479. 0, # 711(N/A) #
  4480. 0, # 714(N/A) #
  4481. 0, # HPRE(N/A) #
  4482. 1 # 734 #
  4483. ]
  4484. [0, # 200UT(N/A) -- LINE PRINTER #
  4485. 0, # 714X(N/A) #
  4486. 0, # 711(N/A) #
  4487. 0, # 714(N/A) #
  4488. 0, # HPRE(N/A) #
  4489. 0 # 734(N/A) #
  4490. ]];
  4491. END
  4492. ARRAY XBZ$TC$TBL [10:MXTC,1:MXDT] S(1);
  4493. BEGIN
  4494. ITEM XBZ$TC$DEF (0,0,60) = [[1040, # 200UT -- CONSOLE #
  4495. 1280, # 714X #
  4496. 1280, # 711 #
  4497. 1280, # 714 #
  4498. 0, # HPRE(N/A) #
  4499. 1040 # 734 #
  4500. ]
  4501. [1040, # 200UT -- CARD READER #
  4502. 0, # 714X(N/A) #
  4503. 0, # 711(N/A) #
  4504. 0, # 714(N/A) #
  4505. 0, # HPRE(N/A) #
  4506. 1040 # 734 #
  4507. ]
  4508. [1000, # 200UT -- LINE PRINTER #
  4509. 1280, # 714X #
  4510. 0, # 711(N/A) #
  4511. 240, # 714 #
  4512. 0, # HPRE(N/A) #
  4513. 1000 # 734 #
  4514. ]];
  4515. END
  4516. DEF MXSTIP # 2 #;
  4517. ARRAY DBZ$STIP$TBL [1:MXSTIP,1:MXDT] S(1);
  4518. BEGIN
  4519. ITEM DBZ$STIP$DEF (0,0,60) = [[1040,# M4A -- CONSOLE #
  4520. 1280 # M4C #
  4521. ]
  4522. [ 0, # M4A -- CARD READER(N/A) #
  4523. 0 # M4C(N/A) #
  4524. ]
  4525. [ 1,# M4A -- LINE PRINTER #
  4526. 1 # M4C #
  4527. ]];
  4528. END
  4529. ARRAY UBZ$STIP$TBL [1:MXSTIP,1:MXDT] S(1);
  4530. BEGIN
  4531. ITEM UBZ$STIP$DEF (0,0,60) = [[1, # M4C -- CONSOLE #
  4532. 1 # M4C #
  4533. ]
  4534. [1, # M4A -- CARD READER #
  4535. 0 # M4C(N/A) #
  4536. ]
  4537. [0, # M4A(N/A) -- LINE PRINTER #
  4538. 0 # M4C(N/A) #
  4539. ]];
  4540. END
  4541. ARRAY XBZ$STIP$TBL [1:MXSTIP,1:MXDT] S(1);
  4542. BEGIN
  4543. ITEM XBZ$STIP$DEF (0,0,60) = [[1040,# M4A -- CONSOLE #
  4544. 1280 # M4C #
  4545. ]
  4546. [1040,# M4A -- CARD READER #
  4547. 0 # M4C(N/A) #
  4548. ]
  4549. [1000,# M4A -- LINE PRINTER #
  4550. 240 # M4C #
  4551. ]];
  4552. END
  4553. SWITCH MD4DJUMP , , # UNK , NODE ,#
  4554. , , # VARIANT , OPGO ,#
  4555. , , # DMP , LLNAME ,#
  4556. , , # , ,#
  4557. , , # , ,#
  4558. , , # HNAME , LOC ,#
  4559. , , # , ,#
  4560. , , # , ,#
  4561. , , # , ,#
  4562. , GEN$PARAM , # NCNAME , DI ,#
  4563. , , # N1 , P1 ,#
  4564. , , # N2 , P2 ,#
  4565. , , # NOLOAD1 , NOLOAD2 ,#
  4566. , , # , ,#
  4567. , , # , ,#
  4568. , , # NI , PORT ,#
  4569. , , # LTYPE , TIPTYPE ,#
  4570. , , # AUTO , SL ,#
  4571. , , # LSPEED , DFL ,#
  4572. , , # FRAME , RTIME ,#
  4573. , , # RCOUNT , NSVC ,#
  4574. , , # PSN , DCE ,#
  4575. , , # DTEA , ,#
  4576. , , # , ,#
  4577. , , # , ,#
  4578. , , # STIP , TC ,#
  4579. , , # RIC , CSET ,#
  4580. , , # TSPEED , CA ,#
  4581. , , # CO , BCF ,#
  4582. , , # MREC , W ,#
  4583. , , # CTYP , NCIR ,#
  4584. , , # NEN , COLLECT ,#
  4585. , NEXT$MD4 , # , DT ,#
  4586. SDT , MB$PARAM , # SDT , TA ,#
  4587. ABL , DBZ , # ABL , DBZ ,#
  4588. UBZ$UBL , FLOW$PARAM , # UBZ , DBL ,#
  4589. UBZ$UBL , FLOW$PARAM , # UBL , XBZ ,#
  4590. $DO , ILLEGAL , # DO , STREAM ,#
  4591. CON$PARAM , , # HN , AUTOLOG ,#
  4592. CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
  4593. GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
  4594. GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
  4595. GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
  4596. GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
  4597. GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
  4598. ILLEGAL , ILLEGAL , # AB , BR ,#
  4599. ILLEGAL , CON$PARAM , # BS , B1 ,#
  4600. CON$PARAM , ILLEGAL , # B2 , CI ,#
  4601. CON$PARAM , CON$PARAM , # CN , CT ,#
  4602. CON$PARAM , ILLEGAL , # DLC , DLTO ,#
  4603. CON$PARAM , ILLEGAL , # DLX , EP ,#
  4604. ILLEGAL , ILLEGAL , # IN , LI ,#
  4605. ILLEGAL , ILLEGAL , # OP , PA ,#
  4606. CON$PARAM , PL$PARAM , # PG , PL ,#
  4607. GEN$PARAM , ILLEGAL , # PW , SE ,#
  4608. CON$PARAM , CON$PARAM , # FA , XLC ,#
  4609. ILLEGAL , ILLEGAL , # XLX , XLTO ,#
  4610. CON$PARAM , ILLEGAL , # ELO , ELX ,#
  4611. CON$PARAM , ILLEGAL , # ELR , EBO ,#
  4612. ILLEGAL , ILLEGAL , # EBR , CP ,#
  4613. ILLEGAL , ILLEGAL , # IC , OC ,#
  4614. CON$PARAM , ILLEGAL , # LK , EBX ,#
  4615. , GEN$PARAM , # , MC ,#
  4616. ILLEGAL , , # XLY , EOF ,#
  4617. , ILLEGAL , # PAD , RTS ,#
  4618. ILLEGAL , ILLEGAL ; # MCI , MLI #
  4619. CONTROL EJECT;
  4620. # #
  4621. # MD4DEV CODE BEGINS HERE #
  4622. # #
  4623. CRNT$CC[CC"CN"] = CN$DEF; # DEFAULT CN AS CURRENT VALUE #
  4624. CRNT$CC[CC"B1"] = B1$DEF; # DEFAULT B1 AS CURRENT VALUE #
  4625. CRNT$CC[CC"B2"] = B2$DEF; # DEFAULT B2 AS CURRENT VALUE #
  4626. CRNT$CC[CC"CT"] = CT$DEF; # DEFAULT CT AS CURRENT VALUE #
  4627. CRNT$CC[CC"BS"] = -1; # SET BS TO -NOT APPLICABLE- #
  4628. FOR I=3 STEP 1 UNTIL STWC[0]
  4629. DO # FOR EACH VALUE DEC ENTRY #
  4630. BEGIN
  4631. GOTO MD4DJUMP[STKWID[I]]; # GO TO APPROPRIATE PROC #
  4632. GEN$PARAM:
  4633. GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETER #
  4634. TEST I;
  4635. MB$PARAM:
  4636. MBDEV(STWORD[I],STLNUM[0]); # CHECK MODE4/BSC PARAMETER #
  4637. TEST I;
  4638. FLOW$PARAM:
  4639. FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETER #
  4640. TEST I;
  4641. ILLEGAL: # ALL OTHER PARAMETERS FLAG AS INVALID #
  4642. IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
  4643. THEN
  4644. BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
  4645. NDLEM2(ERR135,STLNUM[0],KWDNAME[STKWID[I]]);
  4646. END
  4647. ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
  4648. BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
  4649. NDLEM2(ERR106,STLNUM[0],KWDNAME[STKWID[I]]);
  4650. END
  4651. TEST I;
  4652. CON$PARAM:
  4653. IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
  4654. THEN
  4655. BEGIN
  4656. CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
  4657. END
  4658. ELSE # DT IS NOT CONSOLE #
  4659. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  4660. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  4661. END
  4662. TEST I;
  4663. PL$PARAM:
  4664. IF CRNT$DT EQ DT"CON" OR # IF DT IS CONSOLE #
  4665. CRNT$DT EQ DT"LP" # OR DT IS LINEPRINTER #
  4666. THEN
  4667. BEGIN
  4668. CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
  4669. END
  4670. ELSE # DT IS NOT CONSOLE #
  4671. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  4672. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  4673. END
  4674. TEST I;
  4675. SDT:
  4676. IF CRNT$DT EQ DT"LP" OR # IF DT IS LINE PRINTER #
  4677. STVALNAM[I] EQ "SDT12" OR # IF SDT12 - SDT15 USED #
  4678. STVALNAM[I] EQ "SDT13" OR
  4679. STVALNAM[I] EQ "SDT14" OR
  4680. STVALNAM[I] EQ "SDT15"
  4681. THEN
  4682. BEGIN # CHECK BATCH PARAMETER #
  4683. BTCHDEV(STWORD[I],STLNUM[0]);
  4684. END
  4685. ELSE # DT IS CONSOLE OR CARD READER #
  4686. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  4687. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  4688. END
  4689. TEST I;
  4690. $DO:
  4691. IF CRNT$DT EQ DT"LP" # IF DT IS LINE PRINTER #
  4692. THEN
  4693. BEGIN # AND STIP IS M4C OR UNKNOWN #
  4694. IF CRNT$STIP EQ STIP"M4C" OR
  4695. CRNT$STIP EQ STIP"UNKNOWN"
  4696. THEN
  4697. BEGIN # CHECK BATCH PARAMETER #
  4698. BTCHDEV(STWORD[I],STLNUM[0]);
  4699. END
  4700. ELSE # STIP IS M4A #
  4701. BEGIN # FLAG ERROR -- INVALID FOR M4A DEVICES #
  4702. NDLEM2(ERR134,STLNUM[0],KWDNAME[STKWID[I]]);
  4703. END
  4704. END
  4705. ELSE # DT IS CARD READER OR CONSOLE #
  4706. BEGIN
  4707. IF CRNT$DT EQ DT"CR" # IF CURRENT DT IS CR #
  4708. THEN
  4709. BEGIN # FLAG ERROR -- INVALID FOR M4A DEVICES #
  4710. NDLEM2(ERR134,STLNUM[0],KWDNAME[STKWID[I]]);
  4711. END
  4712. ELSE # DT MUST BE CONSOLE #
  4713. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  4714. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  4715. END
  4716. END
  4717. TEST I;
  4718. ABL:
  4719. IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
  4720. THEN
  4721. BEGIN # CHECK FLOW CONTROL PARAMETER #
  4722. FLOWDEV(STWORD[I],STLNUM[0]);
  4723. END
  4724. ELSE # DT IS LP OR CR #
  4725. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  4726. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  4727. END
  4728. TEST I;
  4729. DBZ:
  4730. IF CRNT$DT NQ DT"CR" # IF DT IS NOT A CARD READER #
  4731. THEN
  4732. BEGIN # CHECK FLOW CONTROL PARAMETER #
  4733. FLOWDEV(STWORD[I],STLNUM[0]);
  4734. END
  4735. ELSE # DT IS CARD READER #
  4736. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  4737. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  4738. END
  4739. TEST I;
  4740. UBZ$UBL: # IF DT IS CONSOLE, CARD READER, OR #
  4741. # LINE PRINTER #
  4742. IF CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"CR" OR
  4743. CRNT$DT EQ DT"LP"
  4744. THEN
  4745. BEGIN
  4746. IF STKWID[I] EQ KID"UBZ" # IF UBZ PARAMETER #
  4747. THEN
  4748. BEGIN
  4749. FLOWDEV(STWORD[I],STLNUM[0]);
  4750. END
  4751. ELSE
  4752. BEGIN # ELSE, UBL PARAMETER #
  4753. IF (CRNT$DT NQ "CON") AND
  4754. (STVALNUM[I] GQ 1 AND STVALNUM[I] LQ 7)
  4755. THEN
  4756. BEGIN # PASSIVE DEVICES: 1 <= UBL <= 7#
  4757. FLOWDEV(STWORD[I],STLNUM[0]);
  4758. END
  4759. ELSE
  4760. BEGIN # PARAMETER VALUE OUT OF RANGE #
  4761. CHARVAL=XCDD(STVALNUM[I]);
  4762. NDLEM2(ERR100,STLNUM[0],CHARVAL);
  4763. END
  4764. END
  4765. END
  4766. ELSE
  4767. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  4768. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  4769. END
  4770. NEXT$MD4:
  4771. END
  4772. IF NOT ABL$USED AND # IF ABL NOT SPECIFIED AND DT IS CONSOLE #
  4773. CRNT$DT EQ DT"CON"
  4774. THEN
  4775. BEGIN
  4776. DEVFNFV(FN"ABL",ABL$DEF);
  4777. END
  4778. IF NOT DBL$USED # IF DBL NOT SPECIFIED #
  4779. THEN
  4780. BEGIN
  4781. VALUE = DBL$DEF[CRNT$DT]; # DEFAULT DBL IN VALUE #
  4782. DEVFNFV(FN"DBL",VALUE);
  4783. END
  4784. IF NOT UBL$USED # IF UBL NOT SPECIFIED #
  4785. THEN
  4786. BEGIN
  4787. VALUE = UBL$DEF; # DEFAULT UBL IN VALUE #
  4788. DEVFNFV(FN"UBL",VALUE);
  4789. END
  4790. IF NOT DBZ$USED AND # IF DBZ NOT SPECIFIED #
  4791. CRNT$DT NQ DT"CR"
  4792. THEN
  4793. BEGIN
  4794. VALUE = 0; # CLEAR VALUE TEMPORARY #
  4795. IF CRNT$TC NQ TC"USER" AND # IF TC IS NOT USER OR UNKNOWN #
  4796. CRNT$TC NQ TC"UNKNOWN"
  4797. THEN
  4798. BEGIN # DEFAULT DBZ BY TC AND DT #
  4799. VALUE = DBZ$TC$DEF[CRNT$TC,CRNT$DT];
  4800. END
  4801. ELSE # TC IS USER OR UNKNOWN #
  4802. BEGIN # IF STIP IS NOT UNKNOWN #
  4803. IF CRNT$STIP NQ STIP"UNKNOWN"
  4804. THEN
  4805. BEGIN # DEFAULT DBZ BY STIP AND DT #
  4806. VALUE = DBZ$STIP$DEF[CRNT$STIP,CRNT$DT];
  4807. END
  4808. END
  4809. IF VALUE NQ 0 # IF DEFAULT VALUE IS DETERMINED#
  4810. THEN
  4811. BEGIN
  4812. J = B<44,8>VALUE; # MSB OF VALUE #
  4813. DEVFNFV(FN"DBZ$MSB",J);
  4814. J = B<52,8>VALUE; # LSB OF VALUE #
  4815. DEVFNFV(FN"DBZ$LSB",J);
  4816. END
  4817. END
  4818. IF NOT UBZ$USED AND # IF UBZ NOT SPECIFIED #
  4819. (CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"CR")
  4820. THEN
  4821. BEGIN
  4822. VALUE = 0; # CLEAR VALUE TEMPORARY #
  4823. IF CRNT$TC NQ TC"USER" AND # IF TC IS NOT USER OR UNKNOWN #
  4824. CRNT$TC NQ TC"UNKNOWN"
  4825. THEN
  4826. BEGIN # DEFAULT UBZ BY TC AND DT #
  4827. VALUE = UBZ$TC$DEF[CRNT$TC,CRNT$DT];
  4828. END
  4829. ELSE # TC IS USER OR UNKNOWN #
  4830. BEGIN # IF STIP IS NOT UNKNOWN #
  4831. IF CRNT$STIP NQ STIP"UNKNOWN"
  4832. THEN
  4833. BEGIN # DEFAULT UBZ BY STIP AND DT #
  4834. VALUE = UBZ$STIP$DEF[CRNT$STIP,CRNT$DT];
  4835. END
  4836. END
  4837. IF VALUE NQ 0 # IF DEFAULT VALUE IS DETERMINED#
  4838. THEN
  4839. BEGIN
  4840. DEVFNFV(FN"UBZ",VALUE);
  4841. END
  4842. END
  4843. IF NOT XBZ$USED # IF XBZ NOT SPECIFIED #
  4844. THEN
  4845. BEGIN
  4846. VALUE = 0; # CLEAR VALUE TEMPORARY #
  4847. IF CRNT$TC NQ TC"USER" AND # IF TC IS NOT USER OR UNKNOWN #
  4848. CRNT$TC NQ TC"UNKNOWN"
  4849. THEN
  4850. BEGIN # DEFAULT XBZ BY TC AND DT #
  4851. VALUE = XBZ$TC$DEF[CRNT$TC,CRNT$DT];
  4852. END
  4853. ELSE # TC IS USER OR UNKNOWN #
  4854. BEGIN # IF STIP IS NOT UNKNOWN #
  4855. IF CRNT$STIP NQ STIP"UNKNOWN"
  4856. THEN
  4857. BEGIN # DEFAULT XBZ BY STIP AND DT #
  4858. VALUE = XBZ$STIP$DEF[CRNT$STIP,CRNT$DT];
  4859. END
  4860. END
  4861. IF VALUE NQ 0 # IF DEFAULT VALUE IS DETERMINED#
  4862. THEN
  4863. BEGIN
  4864. J = B<44,8>VALUE; # MSB OF VALUE #
  4865. DEVFNFV(FN"XBZ$MSB",J);
  4866. J = B<52,8>VALUE; # LSB OF VALUE #
  4867. DEVFNFV(FN"XBZ$LSB",J);
  4868. END
  4869. END
  4870. IF NOT DO$USED AND # IF DO IS NOT SPECIFIED #
  4871. CRNT$DT NQ DT"CON" # AND DT IS NOT CONSOLE #
  4872. THEN
  4873. BEGIN
  4874. IF CRNT$STIP EQ STIP"M4A" OR # IF STIP IS M4A OR UNKNOWN #
  4875. CRNT$STIP EQ STIP"UNKNOWN"
  4876. THEN
  4877. BEGIN
  4878. DEVFNFV(FN"DO$",DO$DEF); # PUT DO VALUE IN FOR RBF #
  4879. END
  4880. ELSE # STIP MUST BE M4C #
  4881. BEGIN
  4882. IF FIRST$DT[DT"LP"] # IF THIS IS FIRST LP #
  4883. THEN
  4884. BEGIN # MAKE FNFV PAIR ENTRY #
  4885. DEVFNFV(FN"DO$",DO$DEF);
  4886. B<DO$DEF,1>DO$MAP[DT"LP"] = 1; # SET BIT FOR DEFAULT #
  4887. FIRST$DT[DT"LP"] = FALSE; # CLEAR FLAG FOR DT #
  4888. END
  4889. ELSE # NOT FIRST LINE PRINTER #
  4890. BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
  4891. NDLEM2(ERR103,STLNUM[0],"DO");
  4892. END
  4893. END
  4894. END
  4895. IF NOT TA$USED AND # IF TA NOT SPECIFIED AND NOT AUTO-REC #
  4896. NOT AUTO$REC
  4897. THEN
  4898. BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
  4899. NDLEM2(ERR103,STLNUM[0],"TA");
  4900. END
  4901. DEVFNFV(FN"EOF",CRNT$EOF); # PUT EOF ENTRY IN NCB #
  4902. IF NOT PL$USED AND # IF PL NOT SPECIFIED #
  4903. CRNT$DT EQ DT"LP" # AND DEVICE IS LINEPRINTER #
  4904. THEN
  4905. BEGIN
  4906. DEVFNFV(FN"PL",PL$DEF);
  4907. END
  4908. FOR I=CC"CN" STEP 1 UNTIL CC"CT"
  4909. DO # CHECK CONTROL CHAR FOR UNIQUENESS #
  4910. BEGIN
  4911. FOR J=I+1 STEP 1 UNTIL CC"ELX"
  4912. DO
  4913. BEGIN
  4914. IF CRNT$CC[I] EQ CRNT$CC[J]
  4915. THEN
  4916. BEGIN # FLAG ERROR -- VALUE NOT UNIQUE #
  4917. NDLEM2(ERR132,STLNUM[0]," ");
  4918. END
  4919. END
  4920. END
  4921. RETURN; # **** RETURN **** #
  4922. END # MD4DEV #
  4923. CONTROL EJECT;
  4924. PROC USRDEV;
  4925. *IF,DEF,IMS
  4926. #
  4927. ** USERDEV - CHECK DEVICE STATEMENT PARAMETERS FOR USER TIP.
  4928. *
  4929. * D.K. ENDO 81/11/20
  4930. *
  4931. * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
  4932. * ON THE STATEMENT.
  4933. *
  4934. * PROC USERDEV
  4935. *
  4936. * ENTRY NONE.
  4937. *
  4938. * EXIT NONE.
  4939. *
  4940. * METHOD
  4941. *
  4942. * FOR EACH VALUE DECLARATION,
  4943. * SELECT CASE THAT APPLIES,
  4944. * CASE 1(DI,PRI,PW,P90,P91,...,P99):
  4945. * CHECK GENERAL PARAMETER.
  4946. * CASE 2(HN,AUTOCON,AUTOLOG,AB,BR,BS,B1,B2,CI,CN,CT,DLC,DLTO,
  4947. * DLX,EP,IN,LI,OP,PA,PG,PL,SE,XLY):
  4948. * CHECK CONSOLE PARAMETER.
  4949. * CASE 3(SDT,DO,STREAM):
  4950. * CHECK BATCH DEVICE PARAMETER.
  4951. * CASE 4(TA):
  4952. * CHECK MODE4/BSC PARAMETER.
  4953. * CASE 5(ABL,DBL,DBZ,UBL,UBZ,XBZ):
  4954. * CHECK FLOW CONTROL PARAMETER.
  4955. * IF W SPECIFIED,
  4956. * ENTER FNFV ENTRY FOR CURRENT VALUE OF W.
  4957. * IF NCIR SPECIFIED,
  4958. * ENTER FNFV ENTRY FOR NCIR
  4959. * ENTER FNFV ENTRY FOR NEN.
  4960. * PUT NCIR VALUE IN DEVICE CROSS-REFERENCE TABLE
  4961. * IF EOF SPECIFIED,
  4962. * ENTER FNFV VALUE FOR EOF.
  4963. * IF BCF,CTYP,MREC,NCIR,NEN,W,RIC WAS SPECIFIED
  4964. * PUT VALUE IN DEVICE ENTRY.
  4965. *
  4966. #
  4967. *ENDIF
  4968. BEGIN
  4969. ITEM I; # SCRATCH ITEM #
  4970. ITEM CTEMP C(10); # CHARACTER TEMP #
  4971. SWITCH USRDJUMP , , # UNK , NODE ,#
  4972. , , # VARIANT , OPGO ,#
  4973. , , # DMP , LLNAME ,#
  4974. , , # , ,#
  4975. , , # , ,#
  4976. , , # HNAME , LOC ,#
  4977. , , # , ,#
  4978. , , # , ,#
  4979. , , # , ,#
  4980. , GEN$PARAM , # NCNAME , DI ,#
  4981. , , # N1 , P1 ,#
  4982. , , # N2 , P2 ,#
  4983. , , # NOLOAD1 , NOLOAD2 ,#
  4984. , , # , ,#
  4985. , , # , ,#
  4986. , , # NI , PORT ,#
  4987. , , # LTYPE , TIPTYPE ,#
  4988. , , # AUTO , SL ,#
  4989. , , # LSPEED , DFL ,#
  4990. , , # FRAME , RTIME ,#
  4991. , , # RCOUNT , NSVC ,#
  4992. , , # PSN , DCE ,#
  4993. , , # DTEA , ,#
  4994. , , # , ,#
  4995. , , # , ,#
  4996. , , # STIP , TC ,#
  4997. , , # RIC , CSET ,#
  4998. , , # TSPEED , CA ,#
  4999. , , # CO , BCF ,#
  5000. , , # MREC , W ,#
  5001. , , # CTYP , NCIR ,#
  5002. , , # NEN , COLLECT ,#
  5003. , NEXT$USR , # , DT ,#
  5004. BTCH$PARAM , MB$PARAM , # SDT , TA ,#
  5005. FLOW$PARAM , FLOW$PARAM , # ABL , DBZ ,#
  5006. FLOW$PARAM , FLOW$PARAM , # UBZ , DBL ,#
  5007. FLOW$PARAM , FLOW$PARAM , # UBL , XBZ ,#
  5008. BTCH$PARAM , BTCH$PARAM , # DO , STREAM ,#
  5009. CON$PARAM , , # HN , AUTOLOG ,#
  5010. CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
  5011. GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
  5012. GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
  5013. GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
  5014. GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
  5015. GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
  5016. CON$PARAM , CON$PARAM , # AB , BR ,#
  5017. CON$PARAM , CON$PARAM , # BS , B1 ,#
  5018. CON$PARAM , CON$PARAM , # B2 , CI ,#
  5019. CON$PARAM , CON$PARAM , # CN , CT ,#
  5020. CON$PARAM , CON$PARAM , # DLC , DLTO ,#
  5021. CON$PARAM , CON$PARAM , # DLX , EP ,#
  5022. CON$PARAM , CON$PARAM , # IN , LI ,#
  5023. CON$PARAM , CON$PARAM , # OP , PA ,#
  5024. CON$PARAM , CON$PARAM , # PG , PL ,#
  5025. GEN$PARAM , CON$PARAM , # PW , SE ,#
  5026. CON$PARAM , CON$PARAM , # FA , XLC ,#
  5027. CON$PARAM , CON$PARAM , # XLX , XLTO ,#
  5028. CON$PARAM , CON$PARAM , # ELO , ELX ,#
  5029. CON$PARAM , CON$PARAM , # ELR , EBO ,#
  5030. CON$PARAM , CON$PARAM , # EBR , CP ,#
  5031. CON$PARAM , CON$PARAM , # IC , OC ,#
  5032. CON$PARAM , CON$PARAM , # LK , EBX ,#
  5033. , GEN$PARAM , # , MC ,#
  5034. CON$PARAM , , # XLY , EOF ,#
  5035. , CON$PARAM , # PAD , RTS ,#
  5036. GEN$PARAM , GEN$PARAM ; # MCI , MLI #
  5037. CONTROL EJECT;
  5038. # #
  5039. # USRDEV CODE BEGINS HERE #
  5040. # #
  5041. FOR I=3 STEP 1 UNTIL STWC[0] # CHECK EACH VALUE-DEC ENTRY #
  5042. DO
  5043. BEGIN
  5044. GOTO USRDJUMP[STKWID[I]];
  5045. GEN$PARAM:
  5046. GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETER #
  5047. TEST I;
  5048. CON$PARAM:
  5049. CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
  5050. TEST I;
  5051. BTCH$PARAM:
  5052. BTCHDEV(STWORD[I],STLNUM[0]); # CHECK BATCH/PASSIVE DEV PARAM #
  5053. TEST I;
  5054. MB$PARAM:
  5055. MBDEV(STWORD[I],STLNUM[0]); # CHECK MODE4/BSC PARAMETER #
  5056. TEST I;
  5057. FLOW$PARAM:
  5058. FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETER #
  5059. TEST I;
  5060. NEXT$USR:
  5061. END
  5062. CTEMP = "ABL";
  5063. C$USR$PRM1(ABL$USED,CTEMP); # CHECK IF ABL IS USED #
  5064. CTEMP = "DT";
  5065. C$USR$PRM2(CRNT$DT,CTEMP); # CHECK CURRENT DEVICE TYPE USED #
  5066. CTEMP ="DBZ";
  5067. C$USR$PRM1(DBZ$USED,CTEMP); # CHECK IF DBZ USED #
  5068. CTEMP = "DBL";
  5069. C$USR$PRM1(DBL$USED,CTEMP); # CHECK IF DBL USED #
  5070. CTEMP = "UBZ";
  5071. C$USR$PRM1(UBZ$USED,CTEMP); # CHECK IF UBZ USED #
  5072. CTEMP = "UBL";
  5073. C$USR$PRM1(UBL$USED,CTEMP); # CHECK IF UBL USED #
  5074. CTEMP = "XBZ";
  5075. C$USR$PRM1(XBZ$USED,CTEMP); # CHECK IF XBZ USED #
  5076. IF (CRNT$DT EQ DT"CR") OR (CRNT$DT EQ DT"CP") OR
  5077. (CRNT$DT EQ DT"LP") OR (CRNT$DT EQ DT"PL")
  5078. THEN # VALID ONLY FOR PASSIVE DEVICES #
  5079. BEGIN
  5080. CTEMP = "DO";
  5081. C$USR$PRM1(DO$USED,CTEMP);# CHECK IF DO IS SPECIFIED #
  5082. END
  5083. CTEMP = "AUTOCON";
  5084. C$USR$PRM1((AUTOCON$FLAG OR AUTOCON$NO),CTEMP); # CHECK AUTOCON #
  5085. CTEMP = "HN";
  5086. C$USR$PRM1(HN$USED,CTEMP); # CHECK HN #
  5087. IF CTYP$USED # IF CTYPE SPECIFIED #
  5088. THEN
  5089. BEGIN
  5090. DEVFNFV(FN"CTYP",CRNT$CTYP); # MAKE FNFV ENTRY #
  5091. END
  5092. IF W$USED # IF W SPECIFIED #
  5093. THEN
  5094. BEGIN
  5095. DEVFNFV(FN"W",CRNT$W); # MAKE FNFV ENTRY #
  5096. END
  5097. IF NCIR$USED # IF NCIR IS SPECIFIED #
  5098. THEN
  5099. BEGIN
  5100. DEVFNFV(FN"NCIR",CRNT$NCIR); # MAKE FNFV ENTRY FOR NCIR #
  5101. DCNCIR[DCWC[1]] = CRNT$NCIR; # PUT NCIR VALUE IN DEVICE XREF #
  5102. DEVFNFV(FN"NEN",CRNT$NEN); # MAKE FNFV ENTRY FOR NEN #
  5103. END
  5104. IF EOF$USED # IF EOF SPECIFIED #
  5105. THEN
  5106. BEGIN
  5107. DEVFNFV(FN"EOF",CRNT$EOF); # MAKE FNFV ENTRY FOR EOF #
  5108. END
  5109. RETURN; # **** RETURN **** #
  5110. END # USRDEV #
  5111. CONTROL EJECT;
  5112. PROC X25DEV;
  5113. BEGIN
  5114. *IF,DEF,IMS
  5115. #
  5116. ** X25DEV - CHECK DEVICE STATEMENT PARAMETERS LEGAL FOR X.25
  5117. *
  5118. * D.K. ENDO 81/11/20
  5119. *
  5120. * THIS PROCEDURE CHECKS PARAMETER TO BE LEGAL FOR X.25 CIRCUITS.
  5121. *
  5122. * PROC X25DEV
  5123. *
  5124. * ENTRY NONE.
  5125. *
  5126. * EXIT NONE.
  5127. *
  5128. * METHOD
  5129. *
  5130. * FOR EACH VALUE DECLARATION,
  5131. * SELECT CASE THAT APPLIES,
  5132. * CASE 1(PW,P90,P91,...,P99,PRI):
  5133. * CHECK GENERAL DEVICE PARAMETER.
  5134. * CASE 2(HN,AUTOLOG,AUTOCON,BS,B1,B2,CI,CN,CT,DLX,LI,
  5135. * PA,PG,PL,XLY,IN):
  5136. * CHECK CONSOLE DEVICE PARAMETER.
  5137. * CASE 3(ABL,DBZ,DBL,UBL):
  5138. * CHECK FLOW CONTROL PARAMETER.
  5139. * CASE 4(DI,TA,DO,STREAM,AB,BR,DLC,DLTO,EP,OP,SE):
  5140. * FLAG ERROR -- PARAMETER NOT ALLOW.
  5141. * CASE 5(SDT):
  5142. * IF SDT VALUE IS SDT12, SDT13, SDT14, OR SDT15,
  5143. * CALL BATCH DEVICE PROCESSOR.
  5144. * IF ABL,DBL,UBL NOT SPECIFIED,
  5145. * PUT DEFAULT VALUE INTO DEVICE ENTRY.
  5146. * IF DBZ OR UBZ NOT SPECIFIED
  5147. * PERFORM FNFV ENTRY DEPENDING ON DEVICE TYPE.
  5148. * PUT CTYP VALUE INTO DEVICE ENTRY.
  5149. * IF CTYP IS SVC,
  5150. * PUT NCIR AND NEN VALUES INTO DEVICE ENTRY.
  5151. * CHECK BS,CN,B1,B2,CT FOR UNIQUENESS.
  5152. * IF NOT UNIQUE,
  5153. * FLAG ERROR -- VALUE NOT UNIQUE.
  5154. #
  5155. *ENDIF
  5156. #
  5157. **** PROC X25DEV - XREF LIST BEGINS.
  5158. #
  5159. XREF
  5160. BEGIN
  5161. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  5162. END
  5163. #
  5164. ****
  5165. #
  5166. DEF ABL$DEF # 2 #; # DEFAULT ABL VALUE #
  5167. DEF BS$DEF # X"08" #; # DEFAULT BS VALUE #
  5168. DEF B1$DEF # X"10" #; # DEFAULT B1 VALUE #
  5169. DEF B2$DEF # X"14" #; # DEFAULT B2 VALUE #
  5170. DEF CN$DEF # X"18" #; # DEFAULT CN VALUE #
  5171. DEF CT$DEF # X"1B" #; # DEFAULT CT VALUE #
  5172. DEF EBX$DEF # X"04" #; # DEFAULT EBX VALUE #
  5173. DEF ELX$DEF # X"0D" #; # DEFAULT ELX VALUE #
  5174. DEF DBL$DEF # 2 #; # DEFAULT DBL VALUE #
  5175. DEF DBZ$DEF # 225 #; # DEFAULT DBZ VALUE #
  5176. DEF DBZ$AP$DEF # 128 #; # DEFAULT DBZ VALUE FOR DT=AP #
  5177. DEF UBZ$AP$DEF # 2 #; # DEFAULT UBZ VALUE FOR DT=AP #
  5178. DEF UBL$DEF # 7 #; # DEFAULT UBL VALUE #
  5179. DEF UBZ$DEF # 1 #; # DEFAULT UBZ VALUE #
  5180. DEF PL$DEF # 64 #; # DEFAULT PL VALUE #
  5181. ITEM I; # SCRATCH ITEM #
  5182. ITEM ITEMP; # INTEGER TEMPORARY #
  5183. ITEM J; # SCRATCH ITEM #
  5184. ITEM VALUE; # INTEGER VALUE TEMPORARY #
  5185. SWITCH X25DJUMP , , # UNK , NODE ,#
  5186. , , # VARIANT , OPGO ,#
  5187. , , # DMP , LLNAME ,#
  5188. , , # , ,#
  5189. , , # , ,#
  5190. , , # HNAME , LOC ,#
  5191. , , # , ,#
  5192. , , # , ,#
  5193. , , # , ,#
  5194. , ILLEGAL , # NCNAME , DI ,#
  5195. , , # N1 , P1 ,#
  5196. , , # N2 , P2 ,#
  5197. , , # NOLOAD1 , NOLOAD2 ,#
  5198. , , # , ,#
  5199. , , # , ,#
  5200. , , # NI , PORT ,#
  5201. , , # LTYPE , TIPTYPE ,#
  5202. , , # AUTO , SL ,#
  5203. , , # LSPEED , DFL ,#
  5204. , , # FRAME , RTIME ,#
  5205. , , # RCOUNT , NSVC ,#
  5206. , , # PSN , DCE ,#
  5207. , , # DTEA , ,#
  5208. , , # , ,#
  5209. , , # , ,#
  5210. , , # STIP , TC ,#
  5211. , , # RIC , CSET ,#
  5212. , , # TSPEED , CA ,#
  5213. , , # CO , BCF ,#
  5214. , , # MREC , W ,#
  5215. , , # CTYP , NCIR ,#
  5216. , , # NEN , COLLECT ,#
  5217. , NEXT$X25 , # , DT ,#
  5218. SDT , ILLEGAL , # SDT , TA ,#
  5219. FLOW$PARAM , FLOW$PARAM , # ABL , DBZ ,#
  5220. FLOW$PARAM , FLOW$PARAM , # UBZ , DBL ,#
  5221. FLOW$PARAM , ILLEGAL , # UBL , XBZ ,#
  5222. ILLEGAL , ILLEGAL , # DO , STREAM ,#
  5223. CON$PARAM , , # HN , AUTOLOG ,#
  5224. CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
  5225. GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
  5226. GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
  5227. GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
  5228. GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
  5229. GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
  5230. CON$PARAM , CON$PARAM , # AB , BR ,#
  5231. CON$PARAM , CON$PARAM , # BS , B1 ,#
  5232. CON$PARAM , CON$PARAM , # B2 , CI ,#
  5233. CON$PARAM , CON$PARAM , # CN , CT ,#
  5234. CON$PARAM , CON$PARAM , # DLC , DLTO ,#
  5235. CON$PARAM , CON$PARAM , # DLX , EP ,#
  5236. IN , CON$PARAM , # IN , LI ,#
  5237. CON$PARAM , CON$PARAM , # OP , PA ,#
  5238. CON$PARAM , CON$PARAM , # PG , PL ,#
  5239. GEN$PARAM , ILLEGAL , # PW , SE ,#
  5240. CON$PARAM , CON$PARAM , # FA , XLC ,#
  5241. CON$PARAM , CON$PARAM , # XLX , XLTO ,#
  5242. CON$PARAM , CON$PARAM , # ELO , ELX ,#
  5243. CON$PARAM , CON$PARAM , # ELR , EBO ,#
  5244. CON$PARAM , CON$PARAM , # EBR , CP ,#
  5245. CON$PARAM , CON$PARAM , # IC , OC ,#
  5246. CON$PARAM , CON$PARAM , # LK , EBX ,#
  5247. , GEN$PARAM , # , MC ,#
  5248. CON$PARAM , , # XLY , EOF ,#
  5249. , ILLEGAL , # PAD , RTS ,#
  5250. GEN$PARAM , GEN$PARAM ; # MCI , MLI #
  5251. CONTROL EJECT;
  5252. # #
  5253. # X25DEV CODE BEGINS HERE #
  5254. # #
  5255. CRNT$CC[CC"CN"] = CN$DEF; # CN -- DEFAULT CONTROL CHAR #
  5256. CRNT$CC[CC"B1"] = B1$DEF; # B1 #
  5257. CRNT$CC[CC"B2"] = B2$DEF; # B2 #
  5258. CRNT$CC[CC"CT"] = CT$DEF; # CT #
  5259. CRNT$CC[CC"BS"] = BS$DEF; # BS #
  5260. CRNT$CC[CC"ELX"] = ELX$DEF; # ELX #
  5261. CRNT$CC[CC"EBX"] = EBX$DEF; # EBX #
  5262. FOR I=3 STEP 1 UNTIL STWC[0] # CHECK EACH VALUE-DEC ENTRY #
  5263. DO
  5264. BEGIN
  5265. GOTO X25DJUMP[STKWID[I]]; # GOTO APPROPRIATE PARAGRAPH #
  5266. GEN$PARAM:
  5267. IF STKWID[I] EQ KID"MCI" OR # IF -MCI- OR -MLI- USED #
  5268. STKWID[I] EQ KID"MLI"
  5269. THEN
  5270. BEGIN
  5271. IF CRNT$STIP EQ STIP"PAD" # IF STIP IS PAD #
  5272. THEN
  5273. BEGIN
  5274. GENDEV(STWORD[I],STLNUM[0]);
  5275. END
  5276. ELSE
  5277. BEGIN # XAA STIP #
  5278. NDLEM2(ERR135,STLNUM[0],KWDNAME[STKWID[I]]);
  5279. END # PARAMETER NOT ALLOWED FOR XAA #
  5280. END
  5281. ELSE
  5282. BEGIN
  5283. GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETER #
  5284. END
  5285. TEST I;
  5286. SDT:
  5287. IF STVALNAM[I] EQ "SDT12" OR # IF SDT12 - SDT15 USED #
  5288. STVALNAM[I] EQ "SDT13" OR
  5289. STVALNAM[I] EQ "SDT14" OR
  5290. STVALNAM[I] EQ "SDT15"
  5291. THEN
  5292. BEGIN
  5293. BTCHDEV(STWORD[I],STLNUM[0]); # CALL BATCH DEVICE PROCESSOR #
  5294. END
  5295. ELSE
  5296. BEGIN
  5297. GOTO ILLEGAL;
  5298. END
  5299. TEST I;
  5300. IN:
  5301. IF CRNT$TIP EQ TIP"X25" AND
  5302. STVALNAM[I] EQ "PT"
  5303. THEN # IN=PT NOT ALLOWED FOR X.25 #
  5304. BEGIN # FLAG ERROR -- VALUE INVALID WITH TIPTYPE#
  5305. NDLEM2(ERR112,STLNUM[0],STVALNAM[I]);
  5306. TEST I; # GET NEXT VALUE DECLARATION #
  5307. END
  5308. CON$PARAM:
  5309. CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
  5310. TEST I;
  5311. FLOW$PARAM:
  5312. FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETER #
  5313. TEST I;
  5314. ILLEGAL: # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
  5315. IF STKWID[I] EQ KID"DI"
  5316. THEN # IF PARAMETER IS -DI- #
  5317. BEGIN
  5318. NDLEM2(ERR106,STLNUM[0],"DI"); # PUT -DI- IN MESSAGE #
  5319. END
  5320. ELSE # PARAMETER IS NOT -DI- #
  5321. BEGIN
  5322. NDLEM2(ERR106,STLNUM[0],KWDNAME[STKWID[I]]);
  5323. END
  5324. NEXT$X25:
  5325. END
  5326. IF NOT ABL$USED # IF ABL NOT SPECIFIED #
  5327. THEN
  5328. BEGIN # MAKE FNFV PAIR ENTRY FOR DEFAULT ABL #
  5329. DEVFNFV(FN"ABL",ABL$DEF);
  5330. END
  5331. IF NOT DBL$USED # IF DBL NOT SPECIFIED #
  5332. THEN
  5333. BEGIN # MAKE FNFV PAIR ENTRY FOR DEFAULT DBL #
  5334. DEVFNFV(FN"DBL",DBL$DEF);
  5335. END
  5336. IF NOT DBZ$USED # IF DBZ NOT SPECIFIED #
  5337. THEN
  5338. BEGIN
  5339. IF CRNT$DT EQ DT"AP" # IF A-A DEVICE TYPE #
  5340. THEN
  5341. BEGIN
  5342. VALUE = DBZ$AP$DEF; # MAKE FNFV PAIR ENTRY FOR #
  5343. END
  5344. ELSE
  5345. BEGIN # ALL OTHER DEVICE TYPE #
  5346. VALUE = DBZ$DEF;
  5347. END
  5348. J = B<44,8>VALUE; # MSB OF DEFAULT DBZ #
  5349. DEVFNFV(FN"DBZ$MSB",J);
  5350. J = B<52,8>VALUE; # LSB OF DEFAULT DBZ #
  5351. DEVFNFV(FN"DBZ$LSB",J);
  5352. END
  5353. IF NOT UBL$USED # IF UBL NOT SPECIFIED #
  5354. THEN
  5355. BEGIN # MAKE FNFV ENTRY WITH DEFAULT UBL #
  5356. DEVFNFV(FN"UBL",UBL$DEF);
  5357. END
  5358. IF NOT UBZ$USED # IF UBZ NOT SPECIFIED #
  5359. THEN
  5360. BEGIN
  5361. IF CRNT$DT EQ DT"AP" # IF DEVICE TYPE IS AP #
  5362. THEN
  5363. BEGIN
  5364. DEVFNFV(FN"UBZ",UBZ$AP$DEF);
  5365. END
  5366. ELSE
  5367. BEGIN
  5368. DEVFNFV(FN"UBZ",UBZ$DEF); # ELSE PASS REGULAR DEFAULT #
  5369. END
  5370. END
  5371. IF COLLECT$USED # IF COLLECT WAS SPECIFIED #
  5372. THEN
  5373. BEGIN # PUT VALUE IN ENTRY #
  5374. DEVFNFV(FN"COLLECT",COLLECT$FLAG);
  5375. END
  5376. IF NOT PL$USED AND # IF PL NOT SPECIFIED #
  5377. CRNT$DT EQ DT"LP" # AND DEVICE IS LINEPRINTER #
  5378. THEN
  5379. BEGIN
  5380. DEVFNFV(FN"PL",PL$DEF);
  5381. END
  5382. # MAKE FNFV PAIR ENTRIES FOR CTYP,NEN,NCIR,W#
  5383. DEVFNFV(FN"CTYP",CRNT$CTYP);
  5384. DEVFNFV(FN"W",CRNT$W);
  5385. IF CRNT$CTYP EQ CTYP"SVC" # IF CURRENT CTYP IS -SVC- #
  5386. THEN
  5387. BEGIN
  5388. DEVFNFV(FN"NCIR",CRNT$NCIR); # PUT FNFV PAIR FOR NCIR #
  5389. DEVFNFV(FN"NEN",CRNT$NEN); # PUT FNFV PAIR FOR NEN #
  5390. DCNCIR[DCWC[1]] = CRNT$NCIR; # PUT NCIR VALUE IN DEVICE XREF #
  5391. END
  5392. # CHECK UNIQUENESS OF CONTROL CHARS #
  5393. FOR I=CC"CN" STEP 1 UNTIL CC"BS"
  5394. DO
  5395. BEGIN
  5396. FOR J=I+1 STEP 1 UNTIL CC"EBX"
  5397. DO
  5398. BEGIN
  5399. IF CRNT$CC[I] EQ CRNT$CC[J]
  5400. THEN
  5401. BEGIN # FLAG ERROR -- CONTROL CHAR NOT UNIQUE #
  5402. NDLEM2(ERR132,STLNUM[0]," ");
  5403. END
  5404. END
  5405. END
  5406. RETURN; # **** RETURN **** #
  5407. END # X25DEV #
  5408. CONTROL EJECT;
  5409. PROC $3270DEV;
  5410. BEGIN
  5411. *IF,DEF,IMS
  5412. #
  5413. ** $3270DEV - CHECK DEVICE STATEMENT PARAMETERS LEGAL FOR 3270.
  5414. *
  5415. * D.K. ENDO 81/11/20
  5416. *
  5417. * THIS PROCEDURE CHECK PARAMETER TO BE ALLOW FOR MODE4 DEVICES.
  5418. *
  5419. * PROC $3270DEV
  5420. *
  5421. * ENTRY NONE.
  5422. *
  5423. * EXIT NONE.
  5424. *
  5425. * METHOD
  5426. *
  5427. * FOR EACH VALUE DECLARATION,
  5428. * SELECT CASE THAT APPLIES,
  5429. * CASE 1(PRI,DI,PW,P90,P91,...,P99):
  5430. * CHECK GENERAL PARAMETER.
  5431. * CASE 2(TA):
  5432. * CHECK MODE4/BSC PARAMETER.
  5433. * CASE 3(DBL,DBZ,XBZ):
  5434. * CHECK FLOW CONTROL PARAMETER.
  5435. * CASE 4(B1,B2,CN,CT,PG,PL,HN,AUTOLOG,AUTOCON):
  5436. * IF DT IS CONSOLE,
  5437. * THEN,
  5438. * CHECK CONSOLE PARAMETER.
  5439. * OTHERWISE,
  5440. * FLAG ERROR -- PARAM NOT ALLOWED WITH DT SPECIFIED.
  5441. * CASE 5(ABL):
  5442. * IF DT IS CONSOLE,
  5443. * THEN,
  5444. * CHECK FLOW CONTROL PARAMETER
  5445. * OTHERWISE,
  5446. * FLAG ERROR -- INVALID WITH DT SPECIFIED.
  5447. * CASE 6(UBZ):
  5448. * IF DT IS CONSOLE OR CARD READER OR LINEPRINTER,
  5449. * THEN,
  5450. * CHECK FLOW CONTROL PARAMETER.
  5451. * OTHERWISE,
  5452. * FLAG ERROR -- INVALID WITH DT SPECIFIED.
  5453. * CASE 7(UBL):
  5454. * IF DT IS NOT CONSOLE AND UBL WITHIN RANGE 1-7,
  5455. * CALL FLOWDEV TO CHECK FLOW CONTROL PARAMETERS.
  5456. * CASE 8(XBZ):
  5457. * IF DT IS LP OR USER,
  5458. * CALL FLOWDEV TO CHECK FLOW CONTROL PARAMETERS.
  5459. * OTHERWISE,
  5460. * FLAG ERROR -- INVALID WITH DT SPECIFIED.
  5461. * IF DBL NOT SPECIFIED,
  5462. * DEFAULT VALUE BY DEVICE TYPE.
  5463. * IF UBL NOT SPECIFIED,
  5464. * DEFAULT UBL VALUE.
  5465. * IF DT IS CON AND ABL WAS NOT SPECIFIED,
  5466. * DEFAULT ABL VALUE.
  5467. * IF DBZ WAS NOT SPECIFIED,
  5468. * DEFAULT VALUE BY DEVICE TYPE.
  5469. * IF DT IS A CONSOLE AND UBZ WAS NOT SPECIFIED,
  5470. * DEFAULT UBZ VALUE.
  5471. * IF DT IS LP AND XBZ WAS NOT SPECIFIED,
  5472. * DEFAULT XBZ VALUE.
  5473. * CHECK CN,B1,B2,CT TO BE UNIQUE.
  5474. * IF NOT UNIQUE,
  5475. * FLAG ERROR -- CN,B1,B2,CT MUST BE UNIQUE.
  5476. *
  5477. #
  5478. *ENDIF
  5479. #
  5480. **** PROC $3270DEV - XREF LIST BEGINS.
  5481. #
  5482. XREF
  5483. BEGIN
  5484. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  5485. FUNC XCDD C(10); # CONVERTS INTEGER TO CHARACTER #
  5486. END
  5487. #
  5488. ****
  5489. #
  5490. DEF ABL$DEF # 2 #; # DEFAULT ABL VALUE #
  5491. DEF B1$DEF # X"3A" #; # DEFAULT B1 VALUE #
  5492. DEF B2$DEF # X"29" #; # DEFAULT B2 VALUE #
  5493. DEF CN$DEF # X"28" #; # DEFAULT CN VALUE #
  5494. DEF CT$DEF # X"25" #; # DEFAULT CT VALUE #
  5495. DEF DBL$DEF$CON # 2 #; # DEFAULT DBL VALUE FOR CONSOLES #
  5496. DEF DBL$DEF$LP # 1 #; # DEFAULT DBL VALUE FOR LINE PRINTERS #
  5497. DEF DBZ$DEF$CON # 1280 #; # DEFAULT DBZ VALUE FOR CONSOLES#
  5498. DEF DBZ$DEF$LP # 1 #; # DEFAULT DBZ VALUE FOR LINE PRINTERS #
  5499. DEF DO$DEF # 1 #; # DEFAULT DO VALUE #
  5500. DEF UBL$DEF # 7 #; # DEFAULT UBL VALUE #
  5501. DEF UBZ$DEF # 1 #; # DEFAULT UBZ VALUE #
  5502. DEF XBZ$DEF # 400 #; # DEFAULT XBZ VALUE #
  5503. DEF PL$DEF # 64 #; # DEFAULT PL VALUE #
  5504. ITEM CHARVAL C(10); # SCRATCH CHARACTER VARIABLE #
  5505. ITEM I; # SCRATCH ITEM #
  5506. ITEM ITEMP; # INTEGER TEMPORARY #
  5507. ITEM J; # SCRATCH ITEM #
  5508. ITEM VALUE; # INTEGER VALUE TEMPORARY #
  5509.  
  5510. SWITCH $3270JMP , , # UNK , NODE ,#
  5511. , , # VARIANT , OPGO ,#
  5512. , , # DMP , LLNAME ,#
  5513. , , # , ,#
  5514. , , # , ,#
  5515. , , # HNAME , LOC ,#
  5516. , , # , ,#
  5517. , , # , ,#
  5518. , , # , ,#
  5519. , GEN$PARAM , # NCNAME , DI ,#
  5520. , , # N1 , P1 ,#
  5521. , , # N2 , P2 ,#
  5522. , , # NOLOAD1 , NOLOAD2 ,#
  5523. , , # , ,#
  5524. , , # , ,#
  5525. , , # NI , PORT ,#
  5526. , , # LTYPE , TIPTYPE ,#
  5527. , , # AUTO , SL ,#
  5528. , , # LSPEED , DFL ,#
  5529. , , # FRAME , RTIME ,#
  5530. , , # RCOUNT , NSVC ,#
  5531. , , # PSN , DCE ,#
  5532. , , # DTEA , ,#
  5533. , , # , ,#
  5534. , , # , ,#
  5535. , , # STIP , TC ,#
  5536. , , # RIC , CSET ,#
  5537. , , # TSPEED , CA ,#
  5538. , , # CO , BCF ,#
  5539. , , # MREC , W ,#
  5540. , , # CTYP , NCIR ,#
  5541. , , # NEN , COLLECT ,#
  5542. , NEXT$3270 , # , DT ,#
  5543. SDT , MB$PARAM , # SDT , TA ,#
  5544. ABL , FLOW$PARAM , # ABL , DBZ ,#
  5545. UBZ$UBL , FLOW$PARAM , # UBZ , DBL ,#
  5546. UBZ$UBL , XBZ , # UBL , XBZ ,#
  5547. $DO , ILLEGAL , # DO , STREAM ,#
  5548. CON$PARAM , , # HN , AUTOLOG ,#
  5549. CON$PARAM , GEN$PARAM , # AUTOCON , PRI ,#
  5550. GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
  5551. GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
  5552. GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
  5553. GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
  5554. GEN$PARAM , GEN$PARAM , # P98 , P99 ,#
  5555. ILLEGAL , ILLEGAL , # AB , BR ,#
  5556. ILLEGAL , CON$PARAM , # BS , B1 ,#
  5557. CON$PARAM , ILLEGAL , # B2 , CI ,#
  5558. CON$PARAM , CON$PARAM , # CN , CT ,#
  5559. CON$PARAM , ILLEGAL , # DLC , DLTO ,#
  5560. CON$PARAM , ILLEGAL , # DLX , EP ,#
  5561. ILLEGAL , ILLEGAL , # IN , LI ,#
  5562. ILLEGAL , ILLEGAL , # OP , PA ,#
  5563. CON$PARAM , PL$PARAM , # PG , PL ,#
  5564. GEN$PARAM , ILLEGAL , # PW , SE ,#
  5565. CON$PARAM , CON$PARAM , # FA , XLC ,#
  5566. ILLEGAL , ILLEGAL , # XLX , XLTO ,#
  5567. CON$PARAM , ILLEGAL , # ELO , ELX ,#
  5568. CON$PARAM , ILLEGAL , # ELR , EBO ,#
  5569. ILLEGAL , ILLEGAL , # EBR , CP ,#
  5570. ILLEGAL , ILLEGAL , # IC , OC ,#
  5571. CON$PARAM , ILLEGAL , # LK , EBX ,#
  5572. , GEN$PARAM , # , MC ,#
  5573. ILLEGAL , , # XLY , EOF ,#
  5574. , ILLEGAL , # PAD , RTS ,#
  5575. ILLEGAL , ILLEGAL ; # MCI , MLI #
  5576. CONTROL EJECT;
  5577. # #
  5578. # $3270DEV CODE BEGINS HERE #
  5579. # #
  5580. CRNT$CC[CC"CN"] = CN$DEF; # DEFAULT CN AS CURRENT VALUE #
  5581. CRNT$CC[CC"B1"] = B1$DEF; # DEFAULT B1 AS CURRENT VALUE #
  5582. CRNT$CC[CC"B2"] = B2$DEF; # DEFAULT B2 AS CURRENT VALUE #
  5583. CRNT$CC[CC"CT"] = CT$DEF; # DEFAULT CT AS CURRENT VALUE #
  5584. CRNT$CC[CC"BS"] = -1; # SET BS TO -NOT APPLICABLE- #
  5585. FOR I=3 STEP 1 UNTIL STWC[0]
  5586. DO # FOR EACH VALUE DEC ENTRY #
  5587. BEGIN
  5588. GOTO $3270JMP[STKWID[I]]; # GO TO APPROPRIATE PROC #
  5589. GEN$PARAM:
  5590. GENDEV(STWORD[I],STLNUM[0]); # CHECK GENERAL PARAMETER #
  5591. TEST I;
  5592. MB$PARAM:
  5593. MBDEV(STWORD[I],STLNUM[0]); # CHECK MODE4/BSC PARAMETER #
  5594. TEST I;
  5595. FLOW$PARAM:
  5596. FLOWDEV(STWORD[I],STLNUM[0]); # CHECK FLOW CONTROL PARAMETER #
  5597. TEST I;
  5598. ILLEGAL: # ALL OTHER PARAMETERS FLAG AS INVALID #
  5599. IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
  5600. THEN
  5601. BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
  5602. NDLEM2(ERR135,STLNUM[0],KWDNAME[STKWID[I]]);
  5603. END
  5604. ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
  5605. BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
  5606. NDLEM2(ERR106,STLNUM[0],KWDNAME[STKWID[I]]);
  5607. END
  5608. TEST I;
  5609. CON$PARAM:
  5610. IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
  5611. THEN
  5612. BEGIN
  5613. CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
  5614. END
  5615. ELSE # DT IS NOT CONSOLE #
  5616. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  5617. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  5618. END
  5619. TEST I;
  5620. PL$PARAM:
  5621. IF CRNT$DT EQ DT"CON" OR # IF DT IS CONSOLE #
  5622. CRNT$DT EQ DT"LP" # DT IS LINEPRINTER #
  5623. THEN
  5624. BEGIN
  5625. CONDEV(STWORD[I],STLNUM[0]); # CHECK CONSOLE PARAMETER #
  5626. END
  5627. ELSE # DT IS NOT CONSOLE #
  5628. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  5629. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  5630. END
  5631. TEST I;
  5632. SDT:
  5633. IF CRNT$DT EQ DT"LP" OR # IF DT IS LINE PRINTER #
  5634. STVALNAM[I] EQ "SDT12" OR # IF SDT12 - SDT15 USED #
  5635. STVALNAM[I] EQ "SDT13" OR
  5636. STVALNAM[I] EQ "SDT14" OR
  5637. STVALNAM[I] EQ "SDT15"
  5638. THEN
  5639. BEGIN # CHECK BATCH PARAMETER #
  5640. BTCHDEV(STWORD[I],STLNUM[0]);
  5641. END
  5642. ELSE # DT IS CONSOLE OR CARD READER #
  5643. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  5644. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  5645. END
  5646. TEST I;
  5647. $DO:
  5648. IF CRNT$DT EQ DT"LP" # IF DT IS LINE PRINTER #
  5649. THEN
  5650. BEGIN # CHECK BATCH PARAMETER #
  5651. BTCHDEV(STWORD[I],STLNUM[0]);
  5652. END
  5653. ELSE # DT IS NOT LP OR CON #
  5654. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  5655. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  5656. END
  5657. TEST I;
  5658. ABL:
  5659. IF CRNT$DT EQ DT"CON" # IF DT IS CONSOLE #
  5660. THEN
  5661. BEGIN # CHECK FLOW CONTROL PARAMETER #
  5662. FLOWDEV(STWORD[I],STLNUM[0]);
  5663. END
  5664. ELSE # DT IS LP OR CR #
  5665. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  5666. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  5667. END
  5668. TEST I;
  5669. UBZ$UBL: # IF DT IS CONSOLE, USER, OR LINE PRINTER #
  5670. IF CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"LP" OR
  5671. CRNT$DT EQ DT"USER"
  5672. THEN
  5673. BEGIN
  5674. IF STKWID[I] EQ KID"UBZ" # IF UBZ PARAMETER #
  5675. THEN
  5676. BEGIN
  5677. FLOWDEV(STWORD[I],STLNUM[0]);
  5678. END
  5679. ELSE
  5680. BEGIN # ELSE, UBL PARAMETER #
  5681. IF (CRNT$DT EQ DT"CON") OR (CRNT$DT EQ DT"USER") OR
  5682. (STVALNUM[I] GQ 1 AND STVALNUM[I] LQ 7)
  5683. THEN
  5684. BEGIN # PASSIVE DEVICES: 1 <= UBL <= 7#
  5685. FLOWDEV(STWORD[I],STLNUM[0]);
  5686. END
  5687. ELSE
  5688. BEGIN # PARAMETER VALUE OUT OF RANGE #
  5689. CHARVAL=XCDD(STVALNUM[I]);
  5690. NDLEM2(ERR100,STLNUM[0],CHARVAL);
  5691. END
  5692. END
  5693. END
  5694. ELSE
  5695. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  5696. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  5697. END
  5698. TEST I;
  5699. XBZ:
  5700. IF CRNT$DT EQ DT"LP" OR
  5701. CRNT$DT EQ DT"USER"
  5702. THEN
  5703. BEGIN
  5704. FLOWDEV(STWORD[I],STLNUM[0]);
  5705. END
  5706. ELSE
  5707. BEGIN # FLAG ERROR -- INVALID WITH DT SPECIFIED #
  5708. NDLEM2(ERR133,STLNUM[0],KWDNAME[STKWID[I]]);
  5709. END
  5710. TEST I;
  5711. NEXT$3270:
  5712. END
  5713. IF NOT ABL$USED AND # IF ABL NOT SPECIFIED AND DT IS CONSOLE #
  5714. CRNT$DT EQ DT"CON"
  5715. THEN
  5716. BEGIN
  5717. DEVFNFV(FN"ABL",ABL$DEF);
  5718. END
  5719. IF NOT DBL$USED # IF DBL NOT SPECIFIED #
  5720. THEN
  5721. BEGIN
  5722. IF CRNT$DT EQ DT"LP"
  5723. THEN
  5724. VALUE = DBL$DEF$LP; # DEFAULT DBL VALUE FOR LP #
  5725. ELSE
  5726. VALUE = DBL$DEF$CON; # DEFAULT DBL VALUE FOR CON/USER#
  5727. DEVFNFV(FN"DBL",VALUE);
  5728. END
  5729. IF NOT UBL$USED # IF UBL NOT SPECIFIED #
  5730. THEN
  5731. BEGIN
  5732. VALUE = UBL$DEF; # DEFAULT UBL IN VALUE #
  5733. DEVFNFV(FN"UBL",VALUE);
  5734. END
  5735. IF NOT DBZ$USED # IF DBZ NOT SPECIFIED #
  5736. THEN
  5737. BEGIN
  5738. IF CRNT$DT EQ DT"LP"
  5739. THEN
  5740. VALUE = DBZ$DEF$LP; # DEFAULT DBZ VALUE FOR LP #
  5741. ELSE
  5742. VALUE = DBZ$DEF$CON; # DEFAULT DBZ VALUE FOR CON/USER#
  5743.  
  5744. J = B<44,8>VALUE; # MSB OF VALUE #
  5745. DEVFNFV(FN"DBZ$MSB",J);
  5746. J = B<52,8>VALUE; # LSB OF VALUE #
  5747. DEVFNFV(FN"DBZ$LSB",J);
  5748. END
  5749. IF NOT UBZ$USED AND # IF UBZ NOT SPECIFIED #
  5750. (CRNT$DT EQ DT"CON" OR CRNT$DT EQ DT"USER")
  5751. THEN
  5752. BEGIN
  5753. VALUE = UBZ$DEF;
  5754. DEVFNFV(FN"UBZ",VALUE);
  5755. END
  5756. IF NOT XBZ$USED AND # IF XBZ NOT SPECIFIED #
  5757. CRNT$DT EQ DT"LP"
  5758. THEN
  5759. BEGIN
  5760. VALUE = XBZ$DEF;
  5761. J = B<44,8>VALUE; # MSB OF VALUE #
  5762. DEVFNFV(FN"XBZ$MSB",J);
  5763. J = B<52,8>VALUE; # LSB OF VALUE #
  5764. DEVFNFV(FN"XBZ$LSB",J);
  5765. END
  5766. IF NOT DO$USED AND # IF DO IS NOT SPECIFIED #
  5767. CRNT$DT EQ DT"LP" # AND DT IS LINE PRINTER #
  5768. THEN
  5769. BEGIN
  5770. DEVFNFV(FN"DO$",DO$DEF); # PUT DO VALUE IN FOR RBF #
  5771. END
  5772. IF NOT PL$USED AND # IF PL NOT SPECIFIED #
  5773. CRNT$DT EQ DT"LP" # AND DT IS LINE PRINTER #
  5774. THEN
  5775. BEGIN
  5776. DEVFNFV(FN"PL",PL$DEF);
  5777. END
  5778. FOR I=CC"CN" STEP 1 UNTIL CC"CT"
  5779. DO # CHECK CONTROL CHAR FOR UNIQUENESS #
  5780. BEGIN
  5781. FOR J=I+1 STEP 1 UNTIL CC"ELX"
  5782. DO
  5783. BEGIN
  5784. IF CRNT$CC[I] EQ CRNT$CC[J]
  5785. THEN
  5786. BEGIN # FLAG ERROR -- VALUE NOT UNIQUE #
  5787. NDLEM2(ERR132,STLNUM[0]," ");
  5788. END
  5789. END
  5790. END
  5791. RETURN; # **** RETURN **** #
  5792. END # $3270DEV #
  5793. CONTROL EJECT;
  5794. # #
  5795. # DEVPR CODE BEGINS HERE #
  5796. # #
  5797. ABL$USED = FALSE; # INITIALIZE FLAGS AND VALUES #
  5798. AUTOCON$FLAG = FALSE;
  5799. AUTOCON$NO = FALSE;
  5800. BIT$POS = FIRST$POS;
  5801. CRNT$DT = DT"UNKNOWN";
  5802. DBL$USED = FALSE;
  5803. DBZ$USED = FALSE;
  5804. DO$USED = FALSE;
  5805. HN$USED = FALSE;
  5806. STREAM$USED = FALSE;
  5807. TA$USED = FALSE;
  5808. UBL$USED = FALSE;
  5809. UBZ$USED = FALSE;
  5810. XBZ$USED = FALSE;
  5811. PL$USED = FALSE;
  5812. GR$SET = S"NO"; # GR$SET INITIALISED TO NO #
  5813. # #
  5814. IF LRWC[1]+MXDVENT GQ LR$LENG
  5815. THEN # IF THERE IS NOT ENOUGH ROOM FOR ENTRY #
  5816. BEGIN
  5817. SSTATS(P<LINE$RECORD>,MXDVENT); # ALLOC MORE SPACE #
  5818. END
  5819. CRNT$DEV = LRWC[1] + 1; # SET POINTER TO CURRENT DEVICE #
  5820. LRWORD[CRNT$DEV] = 0; # CLEAR 1ST WORD OF ENTRY #
  5821. DE$IDENT[CRNT$DEV] = "DEV"; # SET DEVICE ENTRY IDENTIFIER #
  5822. DEWC[CRNT$DEV] = 3; # INITIALIZE ENTRY WORD COUNT #
  5823. LRWC[1] = LRWC[1] + 3; # INCREMENT LINE RECORD WORD CNT#
  5824. LRWORD[CRNT$DEV + 1] = 0; # CLEAR 2ND WORD IN ENTRY #
  5825. LRWORD[CRNT$DEV + 2] = 0; # CLEAR 3RD WORD IN ENTRY #
  5826. DEVCNT = DEVCNT + 1; # INCREMENT DEVICE COUNT #
  5827. IF NOT STLBERR[1] # IF LABEL IS O.K. #
  5828. THEN
  5829. BEGIN
  5830. DENAME[CRNT$DEV + 1] = STLABEL[1]; # PUT LABEL IN DEVICE ENTRY#
  5831. IF LCNI[0] GR 0 # IF GROUP COUNT GREATER THAN ZERO #
  5832. THEN
  5833. BEGIN # FOR EACH GENERATED NAME PUT IN DEV XREF #
  5834. IF DCWC[1]+LCNI[0] GQ DC$LENG
  5835. THEN # IF NEED MORE TABLE SPACE FOR ENTRIES #
  5836. BEGIN
  5837. SSTATS(P<DEVICE$XREF>,LCNI[0]+1); # ALLOCATE MORE SPACE #
  5838. END
  5839. FOR I=STLBPNTR[1] STEP 1 UNTIL (STLBPNTR[1] + LCNI[0]) - 1
  5840. DO
  5841. BEGIN
  5842. DCWC[1] = DCWC[1] + 1; # INCREMENT WORD COUNT #
  5843. DCWORD[DCWC[1]] = 0; # CLEAR ENTRY WORD #
  5844. DCNAME[DCWC[1]] = LABLNAM[I]; # PUT NAME IN ENTRY #
  5845. DCPORT[DCWC[1]] = LABLPORT[I]; # PUT PORT NUMBER #
  5846. DCNID[DCWC[1]] = CRNT$NID; # PUT NPU NODE I.D. #
  5847. END
  5848. IF LCNI[0] EQ 1
  5849. THEN
  5850. BEGIN
  5851. DENAME[CRNT$DEV + 1] = LABLNAM[STLBPNTR[1]];
  5852. END
  5853. END
  5854. ELSE # NO GENERATED NAME FOR DEVICE #
  5855. BEGIN
  5856. DCWC[1] = DCWC[1] + 1; # INCREMENT WORD COUNT #
  5857. IF DCWC[1] GQ DC$LENG
  5858. THEN # IF NEED MORE SPACE FOR ENTRY #
  5859. BEGIN
  5860. SSTATS(P<DEVICE$XREF>,100); # ALLOCATE MORE TABLE SPACE #
  5861. END
  5862. DCWORD[DCWC[1]] = 0; # CLEAR ENTRY WORD #
  5863. DCNAME[DCWC[1]] = STLABEL[1]; # PUT NAME IN ENTRY #
  5864. DCPORT[DCWC[1]] = LCPORT[1]; # PUT PORT NUMBER #
  5865. DCNID[DCWC[1]] = CRNT$NID; # PUT NPU NODE I.D. #
  5866. IF LTYPE EQ "X25" # IF LINE IS X25 #
  5867. THEN
  5868. BEGIN
  5869. IF CRNT$CTYP EQ CTYP"SVC" # IF CURRENT CTYP IS -SVC- #
  5870. THEN
  5871. BEGIN
  5872. DCSVC[DCWC[1]] = TRUE; # SET SVC FLAG IN DEVICE XREF #
  5873. END
  5874. END
  5875. END
  5876. END
  5877. IF STORD1[2] NQ 0 # IF DT IS SPECIFIED #
  5878. THEN
  5879. BEGIN
  5880. IF NOT STVLERR[STORD1[2]] # IF VALUE IS O.K. #
  5881. THEN
  5882. BEGIN
  5883. FOR I=1 STEP 1 UNTIL MXDT # MAP DT TO NUMERICAL VALUE #
  5884. DO
  5885. BEGIN # IF VALUE FOUND IN TABLE #
  5886. IF STVALNAM[STORD1[2]] EQ DTNAME[I]
  5887. THEN
  5888. BEGIN
  5889. CRNT$DT = DT$STAT[I]; # SET CURRENT DEVICE TYPE #
  5890. DEDT[CRNT$DEV + 2] = DT$NUMV[I]; # PUT NUM VALUE IN ENTRY#
  5891. END
  5892. END
  5893. IF CRNT$TIP NQ TIP"USER" AND
  5894. CRNT$DT NQ DT"USER" # IF TIPTYPE AND DT NOT USER #
  5895. THEN
  5896. BEGIN
  5897. IF CRNT$TC NQ TC"USER" AND
  5898. CRNT$TC NQ TC"UNKNOWN"
  5899. THEN # IF TC IS NOT USER OR UNKNOWN #
  5900. BEGIN
  5901. IF B<CRNT$TC,1>DT$TC$MAP[CRNT$DT] NQ 1
  5902. THEN # IF TC AND DT NOT COMPATIBLE #
  5903. BEGIN # FLAG ERROR -- INVALID WITH TC SPECIFIED #
  5904. NDLEM2(ERR110,STLNUM[0],DTNAME[CRNT$DT]);
  5905. CRNT$DT = DT"UNKNOWN"; # CLEAR CURRENT DEVICE TYPE #
  5906. END
  5907. END
  5908. ELSE # TC IS USER OR UNKNOWN #
  5909. BEGIN # IF STIP IS NOT UNKNOWN #
  5910. IF CRNT$STIP NQ STIP"UNKNOWN"
  5911. THEN
  5912. BEGIN # IF STIP AND DT NOT COMPATIBLE #
  5913. IF B<CRNT$STIP,1>DT$STIP$MAP[CRNT$DT] NQ 1
  5914. THEN
  5915. BEGIN # FLAG ERROR -- INVALID WITH STIP SPEC #
  5916. NDLEM2(ERR111,STLNUM[0],DTNAME[CRNT$DT]);
  5917. CRNT$DT = DT"UNKNOWN"; # CLEAR CURRENT DT #
  5918. END
  5919. END
  5920. ELSE # STIP IS UNKNOWN #
  5921. BEGIN # IF TIPTYPE IS NOT UNKNOWN #
  5922. IF CRNT$TIP NQ TIP"UNKNOWN"
  5923. THEN
  5924. BEGIN # IF TIPTYPE AND DT NOT COMPAT #
  5925. IF B<CRNT$TIP,1>DT$TIP$MAP[CRNT$DT] NQ 1
  5926. THEN
  5927. BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
  5928. NDLEM2(ERR112,STLNUM[0],DTNAME[CRNT$DT]);
  5929. CRNT$DT = DT"UNKNOWN"; # CLEAR CURRENT DT #
  5930. END
  5931. END
  5932. END
  5933. END
  5934. END
  5935. END
  5936. END
  5937. ELSE # DT WAS NOT SPECIFIED #
  5938. BEGIN
  5939. IF CRNT$TIP NQ TIP"USER" # IF TIP IS NOT USER #
  5940. THEN
  5941. BEGIN
  5942. IF CRNT$TIP EQ TIP"X25" AND CRNT$STIP EQ STIP"XAA"
  5943. THEN # IF X25 TIP AND XAA STIP #
  5944. BEGIN
  5945. CRNT$DT = DT"AP"; # DEFAULT TO AP #
  5946. DEDT[CRNT$DEV + 2] = DT$NUMV[DT"AP"];
  5947. END
  5948. ELSE
  5949. BEGIN
  5950. CRNT$DT = DT"CON"; # ELSE CONSOLE IS THE DEFAULT #
  5951. END
  5952. END
  5953. END
  5954. IF DEVCNT GR MAXDEV # MAXIMUM NUMBER OF DEVICE STMTS EXCEEDED #
  5955. THEN
  5956. BEGIN # FLAG ERROR -- MAX DEVICE STMTS EXCEEDED #
  5957. NDLEM2(ERR116,STLNUM[0]," ");
  5958. END
  5959. IF CRNT$TIP NQ TIP"USER" AND
  5960. CRNT$TIP NQ TIP"UNKNOWN" AND
  5961. CRNT$DT NQ DT"UNKNOWN" AND
  5962. NOT AUTO$REC # IF TIP IS NOT USER OR UNKNOWN #
  5963. THEN # AND DT IS NOT UNKNOWN #
  5964. BEGIN # AND NOT AN AUTO-REC LINE #
  5965. DT$CNT[CRNT$DT] = DT$CNT[CRNT$DT] + 1; # INCR COUNT FOR DT #
  5966. IF DT$CNT[CRNT$DT] GR DT$MAX[CRNT$DT]
  5967. THEN # IF COUNT EXCEEDS MAX FOR DT #
  5968. BEGIN # FLAG ERROR -- MAX DT EXCEEDED #
  5969. NDLEM2(ERR142,STLNUM[0],DTNAME[CRNT$DT]);
  5970. END
  5971. IF CRNT$TIP EQ TIP"HASP" AND # IF CURRENT TIPTYPE IS HASP #
  5972. (CRNT$DT EQ DT"CP" OR CRNT$DT EQ DT"PL")
  5973. THEN
  5974. BEGIN # -CP- PLUS -PL- MUST NOT EXCEED MAXIMUM #
  5975. ITEMP = DT$CNT[DT"CP"] + DT$CNT[DT"PL"];
  5976. IF ITEMP GR DT$MAX[DT"CP"] # IF SUM EXCEEDS MAXIMUM #
  5977. THEN
  5978. BEGIN # FLAG ERROR - MAX NUM OF DEV EXCEEDED #
  5979. NDLEM2(ERR142,STLNUM[0],DTNAME[CRNT$DT]);
  5980. END
  5981. END
  5982. END
  5983. IF (CRNT$TIP NQ TIP"USER" AND CRNT$TIP NQ TIP"UNKNOWN") AND
  5984. (CRNT$DT NQ DT"USER" AND CRNT$DT NQ DT"UNKNOWN")
  5985. THEN
  5986. BEGIN # IF TIP AND DT NOT USER OR UNKNOWN #
  5987. GOTO DEVPJUMP[CRNT$TIP]; # JUMP TO APPROPRIATE PARAGRAPH #
  5988. ASYNC:
  5989. ASYDEV; # CHECK FOR ASYNC DEVICES #
  5990. GOTO NEXT;
  5991. MODE4:
  5992. MD4DEV; # CHECK FOR MODE4 DEVICES #
  5993. GOTO NEXT;
  5994. HASP:
  5995. HSPDEV; # CHECK FOR HASP DEVICES #
  5996. GOTO NEXT;
  5997. X25:
  5998. X25DEV; # CHECK FOR X25 DEVICES #
  5999. GOTO NEXT;
  6000. BSC:
  6001. BSCDEV; # CHECK FOR BSC DEVICES #
  6002. GOTO NEXT;
  6003. $3270:
  6004. $3270DEV; # CHECK FOR 3270 DEVICES #
  6005. GOTO NEXT;
  6006. NEXT:
  6007. END
  6008. ELSE # TIP OR DT IS USER OR UNKNOWN #
  6009. BEGIN
  6010. USRDEV; # CHECK USER DEVICES #
  6011. END
  6012. COUNT$LK; # CALL LOGLINK COUNTER #
  6013. IF CRNT$TIP NQ TIP"USER" AND # IF TIP IS NOT USER #
  6014. CRNT$DT EQ DT"CON" # AND DT IS CONSOLE #
  6015. THEN
  6016. BEGIN
  6017. IF NOT HN$USED # IF HN WAS NOT SPECIFIED #
  6018. THEN
  6019. BEGIN
  6020. IF LL$CNT EQ 1 # IF ONLY ONE LOGLINK TO THIS NPU #
  6021. THEN
  6022. BEGIN # DEFAULT HN VALUE #
  6023. DEVFNFV(FN"HN",LLTHNID[LLT$PNTR]);
  6024. IF NOT AUTOCON$FLAG AND # IF NOT ALREADY SPEC AS -YES- #
  6025. NOT AUTOCON$NO # AND NOT SPECIFIEC AS -NO- #
  6026. THEN
  6027. BEGIN
  6028. DEVFNFV(FN"AUTOCON",TRUE);# DEFAULT AUTO CONNECT #
  6029. END
  6030. END
  6031. ELSE # NONE OR MORE THAN ONE LOGLINK #
  6032. BEGIN
  6033. IF AUTOCON$FLAG
  6034. # IF AUTO CONNECT SPECIFIED #
  6035. THEN
  6036. BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
  6037. NDLEM2(ERR103,STLNUM[0],"HN");
  6038. END
  6039. ELSE
  6040. BEGIN
  6041. IF SAVE$ENTRY GR 0
  6042. # IF MORE THAN ONE LOGLINK IS FOUND
  6043.   AND HOST NAMES ARE THE SAME #
  6044. THEN
  6045. BEGIN
  6046. DEVFNFV(FN"HN",LLTHNID[SAVE$ENTRY]);
  6047. # DEFAULT TO THE LAST MATCH FOUND #
  6048. IF NOT AUTOCON$FLAG AND NOT AUTOCON$NO
  6049. THEN # IF AUTOCON NOT SPECIFIED AS YES OR NO #
  6050. BEGIN
  6051. DEVFNFV(FN"AUTOCON",TRUE); # DEFAULT TO AUTOCON YES #
  6052. END
  6053. END
  6054. END
  6055. END
  6056. END
  6057. END
  6058. DEVFNFV(FN"RIC",RIC$FLAG);
  6059. # NUMBER OF 8-BIT PAD ENTRIES #
  6060. DEPAD[CRNT$DEV + 1] = CRNT$DEPAD;
  6061. FOR I = 0 STEP 1 UNTIL CRNT$DEPAD-1
  6062. DO
  6063. BEGIN # ASSIGN PAD VALUES FOR THIS DEVICE #
  6064. PWI = I*8/60 + 1; # PAD WORD INDEX (1-RELATIVE)#
  6065. PDI=I*8 -(PWI-1)*60; # PAD WORD DISPLACEMENT INDEX (0-RELATIVE)#
  6066. IF PDI LS 56
  6067. THEN
  6068. BEGIN # 8-BIT ENTRIES DO NOT CROSS WORD BOUNDARY#
  6069. ITEMP = B<PDI,8>CRNT$PAD[PWI];
  6070. END
  6071. ELSE
  6072. BEGIN # NEW WORD BOUNDARY #
  6073. B<52,4>ITEMP = B<PDI,4>CRNT$PAD[PWI]; # FIRST 4-BIT NIBBLE #
  6074. B<56,4>ITEMP = B<0,4>CRNT$PAD[PWI+1]; # SECOND " " #
  6075. END
  6076. # PAD FNS ASSIGNED IN CONSEC. SEQ., STARTING FROM PAD$FN$FIRST #
  6077. DEVFNFV(PAD$FN$FIRST+I,ITEMP);
  6078. # I=10/I DIVIDE BY 0 ERROR: TRAP #
  6079. END
  6080. DEWC[CRNT$DEV] = (LRWC[1] - CRNT$DEV)+ 1;
  6081. TEWC[CRNT$TERM] = TEWC[CRNT$TERM] + DEWC[CRNT$DEV];
  6082. # SET TERM ENTRY WC #
  6083. RETURN; # **** RETURN **** #
  6084. END # DEVPR #
  6085. CONTROL EJECT;
  6086. PROC LINFNFV(FN,FV);
  6087. BEGIN
  6088. *IF,DEF,IMS
  6089. #
  6090. ** LINFNFV - MAKE FNFV ENTRY FOR LINE.
  6091. *
  6092. * D.K. ENDO 81/11/20
  6093. *
  6094. * THIS PROC PUTS AN FNFV PAIR INTO THE CURRENT LINE CONFIGURE ENTRY.
  6095. *
  6096. * PROC LINFNFV(FN,FV)
  6097. *
  6098. * ENTRY FN = FIELD NUMBER.
  6099. * FV = FIELD VALUE.
  6100. *
  6101. * EXIT NONE.
  6102. *
  6103. * METHOD
  6104. *
  6105. * INCREMENT FNFV PAIR COUNT IN CURRENT LINE CONFIGURE ENTRY.
  6106. * INCREMENT ENTRY WORD COUNT.
  6107. * PUT FNFV PAIR IN ENTRY.
  6108. *
  6109. #
  6110. *ENDIF
  6111. ITEM FN; # FIELD NUMBER #
  6112. ITEM FV; # FIELD VALUE #
  6113. # #
  6114. # LINFNFV CODE BEGINS HERE #
  6115. # #
  6116. LCFNFV[3] = LCFNFV[3] + 1; # INCREMENT FNFV COUNT #
  6117. LCWC[0] = LCWC[0] + 1; # INCREMENT WORD COUNT OF TABLE #
  6118. LCFN[LCWC[0]] = FN; # PUT FIELD NUMBER IN ENTRY ONE #
  6119. LCFV[LCWC[0]] = FV; # PUT FIELD VALUE IN ENTRY ONE #
  6120. RETURN; # **** RETURN **** #
  6121. END # LINFNFV #
  6122. CONTROL EJECT;
  6123. PROC LINGRPR;
  6124. BEGIN
  6125. *IF,DEF,IMS
  6126. #
  6127. ** LINGRPR - LINE/GROUP STATEMENT PROC
  6128. *
  6129. * D.K. ENDO 81/11/20
  6130. *
  6131. * THIS PROCEDURE CHECKS PARAMETERS ON LINE AND GROUP STATEMENTS.
  6132. *
  6133. * PROC LINGRPR
  6134. *
  6135. * ENTRY NONE.
  6136. *
  6137. * EXIT NONE.
  6138. *
  6139. * METHOD
  6140. *
  6141. * CLEAR AND INITIALIZE FLAG AND VALUES.
  6142. * CLEAR LINE CONFIG ENTRY BUFFER.
  6143. * IF LABEL IS O.K.,
  6144. * PUT LABEL FROM STMT ENTRY INTO LINE XREF TABLE.
  6145. * PUT LABEL IN LINE RECORD.
  6146. * IF CURRENT STMT IS -GROUP-,
  6147. * DEFAULT GROUP COUNT IN LINE RECORD.
  6148. * DEFAULT NI VALUE IN LINE CONFIG ENTRY.
  6149. * PUT LABEL FROM LABEL TABLE INTO LINE XREF TABLE.
  6150. * PUT PORT VALUE FROM LABEL TABLE INTO LINE XREF TABLE.
  6151. * PUT CURRENT NODE I.D. INTO LINE XREF TABLE.
  6152. * PUT CURRENT NODE I.D. INTO LINE RECORD.
  6153. * IF LTYPE WAS SPECIFIED,
  6154. * THEN,
  6155. * IF VALUE IS O.K.
  6156. * MAP NUMERIC VALUE FOR LTYPE
  6157. * PUT NUMERIC VALUE FOR LTYPE INTO LINE CONFIG ENTRY.
  6158. * OTHERWISE,
  6159. * FLAG ERROR REQUIRED PARAMETER MISSING.
  6160. * SET CURRENT LTYPE TO UNKNOWN.
  6161. * IF TIPTYPE WAS SPECIFIED,
  6162. * THEN,
  6163. * IF VALUE IS O.K.
  6164. * MAP NUMERIC VALUE FOR TIPTYPE
  6165. * IF TIPTYPE IS USER,
  6166. * THEN,
  6167. * SET CURRENT TIPTYPE TO USER
  6168. * PUT NUMERIC VALUE INTO LINE CONFIG ENTRY.
  6169. * OTHERWISE,
  6170. * SET CURRENT TIPTYPE
  6171. * PUT NUMERIC VALUE INTO LINE CONFIG ENTRY.
  6172. * IF LTYPE IS NOT UNKNOWN,
  6173. * IF LTYPE IS NOT COMPATIBLE WITH TIPTYPE,
  6174. * FLAG ERROR -- LTYPE AND TIPTYPE NOT COMPATIBLE.
  6175. * OTHERWISE,
  6176. * SET CURRENT TIPTYPE TO UNKNOWN.
  6177. * IF AUTO OR XAUTO WAS SPECIFIED,
  6178. * IF CURRENT TIPTYPE IS -X25-,
  6179. * THEN
  6180. * FLAG ERROR -- PARAMETER NOT ALLOWED WITH TIPTYPE SPECIFIED.
  6181. * OTHERWISE,
  6182. * IF VALUE IS -YES-
  6183. * SET AUTO-REC FLAG IN LINE CONFIG ENTRY.
  6184. * SET AUTO-REC FLAG IN LINE RECORD.
  6185. * IF XAUTO IS SPECIFIED
  6186. * SET HIGH SPEED FLAG IN LINE CONFIG ENTRY.
  6187. * FOR EACH VALUE DECLARATION,
  6188. * SELECT CASE THAT APPLIES,
  6189. * CASE 1(AL,PORT,NI,DI,SL,P90,P91,...,P99):
  6190. * CHECK GENERAL LINE PARAMETER.
  6191. * CASE 2(DFL,FRAME,RTIME,RCOUNT,NSVC,PSN,DCE,DTEA):
  6192. * IF TIPTYPE IS X25 OR LTYPE IS X.25 AND TIPTYPE IS USER,
  6193. * THEN,
  6194. * CHECK X.25 PARAMETER.
  6195. * OTHERWISE,
  6196. * FLAG ERROR -- PARAMETER NOT ALLOWED WITH TIPTYPE SPECIFIED
  6197. * CASE 3(LSPEED):
  6198. * IF TIPTYPE NOT ASYNC OR USER,
  6199. * THEN,
  6200. * FLAG ERROR -- LSPEED ALLOWED ON ASYNC NON-AUTO REC LINES.
  6201. * OTHERWISE,
  6202. * IF TIPTYPE IS ASYNC AND LINE IS AUTO-REC,
  6203. * THEN,
  6204. * FLAG ERROR -- ALLOWED ON ASYNC NON-AUTO REC LINES ONLY.
  6205. * OTHERWISE,
  6206. * MAP NUMERIC VALUE FOR LSPEED.
  6207. * PUT VALUE IS LINE CONFIG ENTRY.
  6208. * CASE 4(ARSPEED):
  6209. * CHECK ASYNC PARAMETERS.
  6210. * IF PORT WAS NOT SPECIFIED,
  6211. * FLAG ERROR -- REQUIRED PARAMETER MISSING.
  6212. * IF AL WAS NOT SPECIFIED,
  6213. * MAKE FNFV ENTRY FOR DEFAULT AL.
  6214. * IF AESPEED NOT SPECIFIED,
  6215. * IF TIPTYPE IS ASYNC AND EITHER AUTO OR XAUTO IS SET TO YES,
  6216. * SET ARSPEED FLAG TO TRUE IN LINE CONFIGURATION RECORD.
  6217. * IF TIPTYPE IS ASYNC,
  6218. * IF LSPEED WAS NOT SPECIFIED AND LINE IS NON-AUTO REC.
  6219. * DEFAULT LSPEED IN LINE CONFIG ENTRY.
  6220. * IF TIPTYPE IS X.25,
  6221. * IF DFL,FRAME,RTIME,PSN NOT SPECIFIED,
  6222. * FLAG ERROR -- REQUIRED PARAMETER MISSING.
  6223. * IF RCOUNT,DCE,ACCTYPE NOT SPECIFIED,
  6224. * PUT DEFAULT VALUE IN LINE CONFIG ENTRY.
  6225. * IF TIPTYPE IS X.25 OR LTYPE IS X.25 AND TIPTYPE IS USER,
  6226. * IF NSVC WAS NOT SPECIFIED
  6227. * DEFAULT NSVC VALUE INTO LINE CONFIG ENTRY.
  6228. * IF LINE NOT AUTO-REC,
  6229. * DEFAULT MAXIMUM TERMINAL STATEMENTS BY TIPTYPE.
  6230. *
  6231. #
  6232. *ENDIF
  6233. #
  6234. **** PROC LINGRPR - XREF LIST BEGIN.
  6235. #
  6236. XREF
  6237. BEGIN
  6238. PROC NDLEM2; # MAKE ENTRIES IN ERROR-2-FILE #
  6239. END
  6240. #
  6241. ****
  6242. #
  6243. DEF DEF$DCE # 0 #; # DEFAULT VALUE FOR DCE #
  6244. DEF DEF$LSPD # 4 #; # DEFAULT VALUE FOR LSPEED #
  6245. DEF DEF$RCNT # 15 #; # DEFAULT VALUE FOR RCOUNT #
  6246. DEF LC$FIX$ENT # 3 #; # LENGTH OF FIXED PORTION OF LC ENTRY #
  6247. DEF MXDTEA # 2 #; # MAXIMUM LENGTH OF DTEA VALUE ALLOWED #
  6248. DEF ZERO # O"33" #; # DISPLAY CODE VALUE FOR ZERO #
  6249. ITEM DCEUSED B; # DCE DECLARED FLAG #
  6250. ITEM DCE$FLG B; # SET IF DCE WAS SPECIFIED -YES- #
  6251. ITEM DFLUSED B; # DFL DECLARED FLAG #
  6252. ITEM DTEAUSED B; # DTEA SPECIFIED FLAG #
  6253. ITEM FRMUSED B; # FRAME DECLARED FLAG #
  6254. ITEM I; # SCRATCH ITEM #
  6255. ITEM J; # SCRATCH ITEM #
  6256. ITEM LSPDUSED B; # LSPEED DECLARED FLAG #
  6257. ITEM ARSUSED B; # ARSPEED DECLARED FLAG #
  6258. ITEM NSVCUSED B; # NSVC DECLARED FLAG #
  6259. ITEM PORTUSED B; # PORT DECLARED FLAG #
  6260. ITEM PSNUSED B; # PSN DECLARED FLAG #
  6261. ITEM RCNTUSED B; # RCOUNT DECLARED FLAG #
  6262. ITEM RTMUSED B; # RTIME DECLARED FLAG #
  6263. ITEM AL$USED B; # AL DECLARED FLAG #
  6264.  
  6265. ARRAY DTEA$VALUE [0:0] S(1);
  6266. BEGIN
  6267. ITEM DTEA$VL1 U(00,00,04); # 1ST DIGIT OF DTEA VALUE #
  6268. ITEM DTEA$VL2 U(00,04,04); # 2ND DIGIT OF DTEA VALUE #
  6269. ITEM DTEA$VAL U(00,00,08); # DTEA VALUE #
  6270. END
  6271. DEF MXLTYPE # 9 #; # MAXIMUM NUMBER OF LINE TYPES #
  6272. ARRAY LTYPE$TABLE [1:MXLTYPE] S(2); # LINE TYPE TABLE #
  6273. BEGIN
  6274. ITEM LT$VAL C(0,0,7) = ["S1", # LTYPE VALUES #
  6275. "S2",
  6276. "S3",
  6277. "S4",
  6278. "A1",
  6279. "A2",
  6280. "A6",
  6281. "H1",
  6282. "H2"
  6283. ];
  6284. ITEM LT$NUMV (0,42,18) = [1, # S1 LTYPE NUMERICAL VALUES#
  6285. 2, # S2 #
  6286. 3, # S3 #
  6287. 11, # S4 #
  6288. 6, # A1 #
  6289. 7, # A2 #
  6290. 9, # A6 #
  6291. 10, # H1 #
  6292. 12 # H2 #
  6293. ];
  6294. ITEM LT$CAT C(1,0,10) = ["SYNC", # S1 LINE TYPE CATEGORY #
  6295. "SYNC", # S2 #
  6296. "SYNC", # S3 #
  6297. "SYNC", # S4 #
  6298. "ASYNC", # A1 #
  6299. "ASYNC", # A2 #
  6300. "ASYNC", # A6 #
  6301. "X25", # H1 #
  6302. "X25" # H2 #
  6303. ];
  6304. END
  6305. DEF MXTTYPE # 9 #; # MAXIMUM NUMBER OF TIP-TYPES #
  6306. ARRAY TIPTYPE$TABL [1:MXTTYPE] S(1); # TIPTYPE TABLE #
  6307. BEGIN
  6308. ITEM TT$VAL C(0,0,7) = ["ASYNC", # TIPTYPE VALUES #
  6309. "MODE4",
  6310. "HASP",
  6311. "X25",
  6312. "BSC",
  6313. "TT12",
  6314. "TT13",
  6315. "TT14",
  6316. "3270"
  6317. ];
  6318. ITEM TT$NUMV (0,42,18) = [1, # ASYNC TIPTYPE NUMERICAL VALUE#
  6319. 2, # MODE4 #
  6320. 3, # HASP #
  6321. 4, # X25 #
  6322. 5, # BSC #
  6323. 12, # USER -- TT12 #
  6324. 13, # USER -- TT13 #
  6325. 14, # USER -- TT13 #
  6326. 15 # 3270 #
  6327. ];
  6328. END
  6329. DEF MXLSPD # 11 #; # MAXIMUM NUMBER OF LINE SPEEDS #
  6330. ARRAY LSPD$TABLE [1:MXLSPD] S(1); # LINE SPEED TABLE #
  6331. BEGIN
  6332. ITEM LST$VAL C(0,0,7) = ["110",# LINE SPEED VALUES #
  6333. "134",
  6334. "150",
  6335. "300",
  6336. "600",
  6337. "1200",
  6338. "2400",
  6339. "4800",
  6340. "9600",
  6341. "19200",
  6342. "38400"
  6343. ];
  6344. ITEM LST$NUMV (0,42,18) = [1, # 110 LSPEED NUMERICAL VALUES #
  6345. 2, # 134 #
  6346. 3, # 150 #
  6347. 4, # 300 #
  6348. 5, # 600 #
  6349. 6, # 1200 #
  6350. 7, # 2400 #
  6351. 8, # 4800 #
  6352. 9, # 9600 #
  6353. 10, # 19200 #
  6354. 11 # 38400 #
  6355. ];
  6356. END
  6357. ARRAY X25$PARAMS [KID"DFL":KID"W"] S(1);
  6358. BEGIN
  6359. ITEM X25$PNAM C(00,00,10) = ["DFL", # X25 PARAM NAMES #
  6360. "FRAME",
  6361. "RTIME",
  6362. "RCOUNT",
  6363. "NSVC",
  6364. "PSN",
  6365. "DCE",
  6366. "DTEA",
  6367. ,
  6368. "LCN",
  6369. ,,,,,,,,,,,,
  6370. "W",
  6371. ];
  6372. END
  6373. SWITCH LINJUMP NEXT , , # UNKNOWN , NODE ,#
  6374. , , # VARIANT , OPGO ,#
  6375. , , # DMP , LLNAME ,#
  6376. , , # , ,#
  6377. , , # , ,#
  6378. , , # HNAME , LOC ,#
  6379. , , # , ,#
  6380. , , # , ,#
  6381. , , # , ,#
  6382. , GEN$PARAM , # NCNAME , DI ,#
  6383. , , # N1 , P1 ,#
  6384. , , # N2 , P2 ,#
  6385. , , # NOLOAD1 , NOLOAD2 ,#
  6386. , , # , ,#
  6387. , , # , ,#
  6388. GEN$PARAM , GEN$PARAM , # NI , PORT ,#
  6389. NEXT , NEXT , # LTYPE , TIPTYPE ,#
  6390. NEXT , GEN$PARAM , # AUTO , AL ,#
  6391. ASY$PARAM , X25$PARAM , # LSPEED , DFL ,#
  6392. X25$PARAM , X25$PARAM , # FRAME , RTIME ,#
  6393. X25$PARAM , X25$PARAM , # RCOUNT , NSVC ,#
  6394. X25$PARAM , X25$PARAM , # PSN , DCE ,#
  6395. X25$PARAM , ASY$PARAM , # DTEA , ARSPEED ,#
  6396. X25$PARAM , GEN$PARAM , # LCN , IMDISC ,#
  6397. GEN$PARAM , , # RC , ,#
  6398. , , # STIP , TC ,#
  6399. , , # RIC , CSET ,#
  6400. , , # TSPEED , CA ,#
  6401. , , # CO , BCF ,#
  6402. , , # MREC , W ,#
  6403. , , # CTYP , NCIR ,#
  6404. , , # NEN , COLLECT ,#
  6405. NEXT , , # XAUTO , DT ,#
  6406. , , # SDT , TA ,#
  6407. , , # ABL , DBZ ,#
  6408. , , # UBZ , DBL ,#
  6409. , , # UBL , XBZ ,#
  6410. , , # DO , STREAM ,#
  6411. , , # HN , AUTOLOG ,#
  6412. , , # AUTOCON , PI ,#
  6413. GEN$PARAM , GEN$PARAM , # P90 , P91 ,#
  6414. GEN$PARAM , GEN$PARAM , # P92 , P93 ,#
  6415. GEN$PARAM , GEN$PARAM , # P94 , P95 ,#
  6416. GEN$PARAM , GEN$PARAM , # P96 , P97 ,#
  6417. GEN$PARAM , GEN$PARAM ; # P98 , P99 #
  6418. CONTROL EJECT;
  6419. PROC GENLINE;
  6420. BEGIN
  6421. *IF,DEF,IMS
  6422. #
  6423. ** GENLINE - CHECK GENERAL LINE PARAMETERS.
  6424. *
  6425. * D.K. ENDO 81/11/20
  6426. *
  6427. * THIS PROCEDURE CHECKS PARAMETERS WHICH ARE COMMON TO ALL TIPTYPES.
  6428. *
  6429. * PROC GENLINE
  6430. *
  6431. * ENTRY NONE.
  6432. *
  6433. * EXIT NONE.
  6434. *
  6435. * METHOD
  6436. *
  6437. * SELECT THE CASE THAT APPLIES,
  6438. * CASE 1(PORT):
  6439. * IF VALUE IS O.K.,
  6440. * CHECK IF VALUE IS IN RANGE.
  6441. * IF IN RANGE,
  6442. * PUT VALUE IN LINE RECORD.
  6443. * PUT VALUE IN LINE XREF ENTRY.
  6444. * IF STATEMENT IS NOT -GROUP-,
  6445. * PUT VALUE IN LINE RECORD INDEX.
  6446. * CHECK IF PORT VALUE IS UNIQUE FOR CURRENT NPU.
  6447. * CASE 2(DI):
  6448. * IF VALUE IS O.K.
  6449. * IF VALUE IS -YES-,
  6450. * SET STATUS FLAG IN LINE CONFIG ENTRY.
  6451. * CASE 3(NI):
  6452. * IF VALUE IS O.K.
  6453. * CHECK IF VALUE IS IN RANGE.
  6454. * IF IN RANGE,
  6455. * PUT THE VALUE MINUS ONE IN THE LINE RECORD
  6456. * PUT VALUE IN LINE CONFIG ENTRY.
  6457. * IF LABEL IS O.K. AND NI VALUE IS GREATER THAN ONE,
  6458. * FOR EACH ITERATION OF PORT
  6459. * INCREMENT LINE XREF TABLE ENTRY COUNT.
  6460. * CLEAR NEXT ENTRY.
  6461. * PUT CURRENT NODE I.D. IN ENTRY.
  6462. * PUT GENERATED NAME FROM LABEL TABLE IN ENTRY.
  6463. * CHECK IF PORT IS IN RANGE.
  6464. * IF IN RANGE,
  6465. * PUT PORT VALUE IN ENTRY.
  6466. * CHECK IF PORT IS UNIQUE FOR CURRENT NPU.
  6467. * CASE 4(AL):
  6468. * IF VALUE IS WITHIN RANGE,
  6469. * MAKE FNFV ENTRY FOR AL SPECIFIED.
  6470. * CASE 5(SL,P90,P91,P92,...,P99):
  6471. * IF VALUE IS O.K.
  6472. * IF VALUE IS NOT -NONE-,
  6473. * CHECK IF VALUE IS IN RANGE,
  6474. * IF IN RANGE,
  6475. * PUT VALUE IN LINE CONFIG ENTRY.
  6476. *
  6477. #
  6478. *ENDIF
  6479. #
  6480. **** PROC GENLINE - XREF LIST BEGIN.
  6481. #
  6482. XREF
  6483. BEGIN
  6484. PROC NDLCKPT; # CHECK UNIQUENESS OF PORT NUMBER #
  6485. PROC NDLCKRG; # CHECK IF VALUE IS IN RANGE #
  6486. END
  6487. #
  6488. ****
  6489. #
  6490. DEF DI$VAL # 1 #; # VALUE FOR DISABLED #
  6491. ITEM GENL$STAT B; # RETURNED STATUS FROM CHECK ROUTINES #
  6492. ITEM J; # SCRATCH ITEM #
  6493. # #
  6494. SWITCH GENLJUMP NEXT$PARAM , , # UNKNOWN , NODE ,#
  6495. , , # VARIANT , OPGO ,#
  6496. , , # DMP , LLNAME ,#
  6497. , , # , ,#
  6498. , , # , ,#
  6499. , , # HNAME , LOC ,#
  6500. , , # , ,#
  6501. , , # , ,#
  6502. , , # , ,#
  6503. , DI , # NCNAME , DI ,#
  6504. , , # N1 , P1 ,#
  6505. , , # N2 , P2 ,#
  6506. , , # NOLOAD1 , NOLOAD2 ,#
  6507. , , # , ,#
  6508. , , # , ,#
  6509. NI , PORT , # NI , PORT ,#
  6510. , , # LTYPE , TIPTYPE ,#
  6511. , AL , # AUTO , AL ,#
  6512. , , # LSPEED , DFL ,#
  6513. , , # FRAME , RTIME ,#
  6514. , , # RCOUNT , NSVC ,#
  6515. , , # PSN , DCE ,#
  6516. , , # DTEA , ,#
  6517. , IMDISC , # , IMDISC ,#
  6518. RC , , # RC , ,#
  6519. , , # STIP , TC ,#
  6520. , , # RIC , CSET ,#
  6521. , , # TSPEED , CA ,#
  6522. , , # CO , BCF ,#
  6523. , , # MREC , W ,#
  6524. , , # CTYP , NCIR ,#
  6525. , , # NEN , COLLECT ,#
  6526. , , # , DT ,#
  6527. , , # SDT , TA ,#
  6528. , , # ABL , DBZ ,#
  6529. , , # DBL , UBZ ,#
  6530. , , # UBL , XBZ ,#
  6531. , , # DO , STREAM ,#
  6532. , , # HN , AUTOLOG ,#
  6533. , , # AUTOCON , PRI ,#
  6534. USER$PARAM , USER$PARAM , # P90 , P91 ,#
  6535. USER$PARAM , USER$PARAM , # P92 , P93 ,#
  6536. USER$PARAM , USER$PARAM , # P94 , P95 ,#
  6537. USER$PARAM , USER$PARAM , # P96 , P97 ,#
  6538. USER$PARAM , USER$PARAM ; # P98 , P99 #
  6539. CONTROL EJECT;
  6540. # #
  6541. # GENLINE CODE BEGINS HERE #
  6542. # #
  6543. GOTO GENLJUMP[STKWID[I]]; # JUMP BY KEYWORD I.D. #
  6544. PORT:
  6545. PORTUSED = TRUE; # SET PORT SPECIFIED FLAG #
  6546. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  6547. THEN
  6548. BEGIN
  6549. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  6550. THEN
  6551. BEGIN
  6552. USR$RANGE(STVALNUM[I],USR$WID1,NUM"DEC",GENL$STAT);
  6553. # MAX USER VALUE #
  6554. END
  6555. ELSE
  6556. BEGIN
  6557. NDLCKRG(STKWID[I],STVALNUM[I],GENL$STAT); # CHECK FOR MAX #
  6558. # NORMAL VALUE #
  6559. END
  6560. IF GENL$STAT # IF VALUE IS WITHIN RANGE #
  6561. THEN
  6562. BEGIN
  6563. LRPORT[2] = STVALNUM[I]; # PUT PORT IN LINE-RECORD #
  6564. LCPORT[1] = STVALNUM[I]; # PUT PORT IN LINE-CONFIG-RECORD#
  6565. IF STSTID[0] NQ STID"GROUP" # IF THIS STMT IS GROUP #
  6566. THEN
  6567. BEGIN
  6568. LCTPORT[LCTWC[1]] = STVALNUM[I]; # PUT PORT IN LINE XREF #
  6569. END
  6570. NDLCKPT(STVALNUM[I],CRNT$NID,GENL$STAT); # CHECK PORT #
  6571. END
  6572. END
  6573. GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
  6574. DI:
  6575. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  6576. THEN
  6577. BEGIN
  6578. IF STVALNAM[I] EQ "YES" # IF VALUE IS -YES- #
  6579. THEN
  6580. BEGIN
  6581. LCST[3] = DI$VAL; # SET STATUS FLAG IN LINE-CONFIG#
  6582. END # RECORD #
  6583. END
  6584. GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
  6585. IMDISC:
  6586. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  6587. THEN
  6588. BEGIN
  6589. IF STVALNAM[I] EQ "YES" # IF YES IS SPECIFIED #
  6590. THEN
  6591. BEGIN
  6592. LINFNFV(FN"IMD",TRUE); # STORE LINE FNFV #
  6593. END
  6594. ELSE
  6595. BEGIN
  6596. LINFNFV(FN"IMD",FALSE); # STORE LINE FNFV #
  6597. END
  6598. END
  6599. GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
  6600. NI:
  6601. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  6602. THEN
  6603. BEGIN
  6604. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  6605. THEN
  6606. BEGIN
  6607. USR$RANGE(STVALNUM[I],USR$WID1,NUM"DEC",GENL$STAT);
  6608. # USER VALUE #
  6609. END
  6610. ELSE
  6611. BEGIN
  6612. NDLCKRG(STKWID[I],STVALNUM[I],GENL$STAT); # CHECK FOR MAX #
  6613. # NORMAL VALUE #
  6614. END
  6615. IF GENL$STAT # IF VALUE IS WITHIN RANGE #
  6616. THEN
  6617. BEGIN
  6618. LRGC[1] = STVALNUM[I] - 1; # PUT -NI- IN LINE-RECORD #
  6619. LCNI[0] = STVALNUM[I]; # PUT -NI- IN LINE-CONFIG-RECORD#
  6620. IF LCTWC[1]+LCNI[0] GQ LCT$LENG
  6621. THEN # IF NEED MORE SPACE FOR ENTRIES #
  6622. BEGIN
  6623. SSTATS(P<LINE$XREF>,LCNI[0]+1); # ALLOCATE MORE TABLE SPACE#
  6624. END
  6625. IF NOT STLBERR[1] AND STVALNUM[I] GR 1
  6626. THEN # IF LABEL IS O.K. AND -NI- GREATER THAN 1#
  6627. BEGIN # MAKE ENTRY IN LINE-XREF FOR EACH LABEL#
  6628. FOR J=STLBPNTR[1]+1 STEP 1 UNTIL (STLBPNTR[1] + LCNI[0]) - 1
  6629. DO # BEGINNING WITH THE SECOND LABEL #
  6630. BEGIN
  6631. LCTWC[1] = LCTWC[1] + 1; # INCREMENT ENTRY COUNT #
  6632. LCTWORD[LCTWC[1]] = 0; # CLEAR ENTRY #
  6633. LCTNAME[LCTWC[1]] = LABLNAM[J]; # ENTER LABEL #
  6634. LCTNID[LCTWC[1]] = CRNT$NID; # ENTER NPU NODE I.D. #
  6635. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER #
  6636. THEN
  6637. BEGIN
  6638. USR$RANGE(LABLPORT[J],USR$WID1,NUM"DEC",GENL$STAT);
  6639. # VALUE CHECK#
  6640. END
  6641. ELSE
  6642. BEGIN
  6643. NDLCKRG(KID"PORT",LABLPORT[J],GENL$STAT); # CHECK NORMAL#
  6644. # RANGE #
  6645. END
  6646. IF GENL$STAT # IF PORT IS WITHIN RANGE #
  6647. THEN
  6648. BEGIN
  6649. LCTPORT[LCTWC[1]] = LABLPORT[J]; # PUT -PORT- IN XREF #
  6650. NDLCKPT(LABLPORT[J],CRNT$NID,GENL$STAT); # CHECK PORT #
  6651. END
  6652. END
  6653. END
  6654. END
  6655. END
  6656. GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
  6657. AL:
  6658. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  6659. THEN
  6660. BEGIN
  6661. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  6662. THEN
  6663. BEGIN
  6664. USR$RANGE(STVALNUM[I],USR$WID1,NUM"DEC",GENL$STAT);
  6665. END
  6666. ELSE
  6667. BEGIN
  6668. NDLCKRG(STKWID[I],STVALNUM[I],GENL$STAT); # CHECK RANGE #
  6669. END
  6670. IF GENL$STAT # IF VALUE IS WITHIN RANGE #
  6671. THEN
  6672. BEGIN # ENTER FNFV PAIR IN RECORD #
  6673. AL$USED = TRUE; # SET AL USED FLAG #
  6674. B<38,1>STVALNUM[I] = 1; # SET VALID FLAG #
  6675. LINFNFV(FN"AL",STVALNUM[I]);
  6676. END
  6677. END
  6678. GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
  6679. RC:
  6680. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  6681. THEN
  6682. BEGIN
  6683. IF STVALNAM[I] EQ "YES" # IF YES IS SPECIFIED #
  6684. THEN
  6685. BEGIN
  6686. LINFNFV(FN"RC",TRUE); # STORE LINE FNFV #
  6687. END
  6688. ELSE
  6689. BEGIN
  6690. LINFNFV(FN"RC",FALSE); # STORE LINE FNFV #
  6691. END
  6692. END
  6693. GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
  6694.  
  6695. USER$PARAM:
  6696. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  6697. THEN
  6698. BEGIN
  6699. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  6700. THEN
  6701. BEGIN
  6702. USR$RANGE(STVALNUM[I],USR$WID1,NUM"HEX",GENL$STAT);
  6703. END
  6704. ELSE
  6705. BEGIN
  6706. NDLCKRG(STKWID[I],STVALNUM[I],GENL$STAT); # CHECK FOR MAX #
  6707. # VALUE RANGE #
  6708. END
  6709. IF GENL$STAT # IF VALUE IS WITHIN RANGE #
  6710. THEN
  6711. BEGIN # MAKE FNFV PAIR ENTRY IN RECORD#
  6712. LINFNFV(STKWID[I]+10,STVALNUM[I]);
  6713. END
  6714. END
  6715. GOTO NEXT$PARAM; # CHECK NEXT PARAMETER #
  6716. NEXT$PARAM:
  6717. RETURN; # **** RETURN **** #
  6718. END # GENLINE #
  6719. CONTROL EJECT;
  6720. PROC X25LINE;
  6721. BEGIN
  6722. *IF,DEF,IMS
  6723. #
  6724. ** X25LINE - CHECK X.25 LINE PARAMETERS
  6725. *
  6726. * D.K. ENDO 81/11/20
  6727. *
  6728. * THIS PROCEDURE CHECKS PARAMETERS LEGAL FOR X.25 LINES.
  6729. *
  6730. * PROC X25LINE
  6731. *
  6732. * ENTRY NONE.
  6733. *
  6734. * EXIT NONE.
  6735. *
  6736. * METHOD
  6737. *
  6738. * SELECT CASE THAT APPLIES
  6739. * CASE 1(DFL,FRAME,RCOUNT,NSVC):
  6740. * IF VALUE IS O.K.,
  6741. * CHECK IF VALUE IS IN RANGE.
  6742. * IF IN RANGE,
  6743. * PUT VALUE IN LINE CONFIG ENTRY.
  6744. * CASE 2(RTIME):
  6745. * IF VALUE IS O.K.,
  6746. * CHECK IF VALUE IS IN RANGE.
  6747. * IF IN RANGE,
  6748. * DIVIDE VALUE BY 100.
  6749. * PUT RESULT IN LINE CONFIG ENTRY.
  6750. * CASE 3(PSN):
  6751. * IF VALUE IS O.K.,
  6752. * MAP PSN TO NUMERIC VALUE.
  6753. * PUT VALUE IN LINE CONFIG ENTRY.
  6754. * CASE 4(DCE):
  6755. * IF VALUE IS O.K.,
  6756. * IF VALUE IS -YES-,
  6757. * THEN,
  6758. * PUT VALUE OF TRUE IN LINE CONFIG ENTRY.
  6759. * OTHERWISE,
  6760. * PUT VALUE OF FALSE IN LINE CONFIG ENTRY.
  6761. * CASE 5(DTEA):
  6762. * IF VALUE IS WITH RANGE,
  6763. * PERFORM FNFV ENTRY FOR DTEA SPECIFIED.
  6764. *
  6765. #
  6766. *ENDIF
  6767. #
  6768. **** PROC X25LINE - XREF LIST BEGINS.
  6769. #
  6770. XREF
  6771. BEGIN
  6772. PROC NDLCKRG; # CHECKS IF VALUE IS WITHIN RANGE #
  6773. FUNC XCDD U; # CONVERT INTEGER TO DECIMAL DISPLAY CODE #
  6774. END
  6775. #
  6776. ****
  6777. #
  6778. ITEM ITEMP; # INTEGER TEMPORARY #
  6779. ITEM J; # SCRATCH ITEM #
  6780. ITEM VALUE; # INTEGER TEMPORARY FOR VALUE #
  6781. ITEM X25$STAT B; # RETURNED STATUS FROM RANGE CHECK PROC #
  6782. ARRAY ERROR$WORD [0:0] S(1); # BUFFER WORD FOR ERROR MESSAGE #
  6783. BEGIN
  6784. ITEM PARAM C(0,0,4) = [" "]; # PARAMETER #
  6785. ITEM SLASH C(0,24,1) = ["/"];
  6786. ITEM PVALUE U(0,30,30); # VALUE #
  6787. END
  6788. DEF MXPSN # 10 #; # MAXIMUM NUMBER OF PSN VALUES #
  6789. ARRAY PSN$TABLE [1:MXPSN] S(1);
  6790. BEGIN
  6791. ITEM PSN$VAL C(0,0,7) = [ "DATAPAC", # PSN VALUES #
  6792. "TELENET",
  6793. "TRNSPAC",
  6794. "TYMNET ",
  6795. "CDSN ",
  6796. "UNINET",
  6797. "C120 ",
  6798. "PSN253 ",
  6799. "PSN254 ",
  6800. "PSN255 "
  6801. ];
  6802. ITEM PSN$NUMV (0,42,18) = [ 1, # PSN NUMERICAL VALUES#
  6803. 2,
  6804. 3,
  6805. 4,
  6806. 5,
  6807. 6,
  6808. 7,
  6809. 253,
  6810. 254,
  6811. 255
  6812. ];
  6813. END
  6814. SWITCH X25JUMP , , # UNKNOWN , NODE ,#
  6815. , , # VARIANT , OPGO ,#
  6816. , , # DMP , LLNAME ,#
  6817. , , # , ,#
  6818. , , # , ,#
  6819. , , # HNAME , LOC ,#
  6820. , , # , ,#
  6821. , , # , ,#
  6822. , , # , ,#
  6823. , , # NCNAME , DI ,#
  6824. , , # N1 , P1 ,#
  6825. , , # N2 , P2 ,#
  6826. , , # NOLOAD1 , NOLOAD2 ,#
  6827. , , # , ,#
  6828. , , # , ,#
  6829. , , # NI , PORT ,#
  6830. , , # LTYPE , TIPTYPE ,#
  6831. , , # AUTO , SL ,#
  6832. , DFL , # LSPEED , DFL ,#
  6833. FRAME , RTIME , # FRAME , RTIME ,#
  6834. RCOUNT , NSVC , # RCOUNT , NSVC ,#
  6835. PSN , DCE , # PSN , DCE ,#
  6836. DTEA , , # DTEA , ,#
  6837. LCN , , # LCN , ,#
  6838. , , # , ,#
  6839. , , # STIP , TC ,#
  6840. , , # RIC , CSET ,#
  6841. , , # TSPEED , CA ,#
  6842. , , # CO , BCF ,#
  6843. , ; # MREC , W #
  6844. # #
  6845. # X25LINE CODE BEGINS HERE #
  6846. # #
  6847. GOTO X25JUMP[STKWID[I]]; # CASE ON KEYWORD I.D. #
  6848. DFL:
  6849. DFLUSED = TRUE; # SET DFL SPECIFIED FLAG #
  6850. IF NOT STVLERR[I] # IF THE VALUE IS O.K. #
  6851. THEN
  6852. BEGIN # CHECK IF VALUE IS WITHIN RANGE#
  6853. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  6854. THEN
  6855. BEGIN
  6856. USR$RANGE(STVALNUM[I],USR$WID2,NUM"DEC",X25$STAT);
  6857. END
  6858. ELSE
  6859. BEGIN
  6860. NDLCKRG(STKWID[I],STVALNUM[I],X25$STAT); # NORMAL RANGE #
  6861. # CHECKS #
  6862. END
  6863. IF X25$STAT # IF IT IS IN RANGE #
  6864. THEN # STORE DFL VALUE IN LINE #
  6865. BEGIN # CONFIGURE RECORD #
  6866. IF CRNT$TIP EQ TIP"X25"
  6867. THEN
  6868. BEGIN
  6869. ITEMP = 16; # SET TO MINIMUM DPLS VALUE #
  6870. FOR J=4 STEP 1 WHILE ITEMP LS STVALNUM[I]
  6871. DO # DETERMINE VALUE (POWER OF TWO) #
  6872. BEGIN
  6873. ITEMP = ITEMP * 2; # SET TO NEXT POWER OF TWO #
  6874. END
  6875. LINFNFV(FN"DFL",J); # STORE DFL VALUE #
  6876. IF STVALNUM[I] NQ ITEMP
  6877. THEN # VALUE IS NOT POWER OF 2 #
  6878. BEGIN # FLAG WARNING #
  6879. PARAM[0] = X25$PNAM[STKWID[I]]; # PARAMETER NAME #
  6880. PVALUE[0] = XCDD(ITEMP); # STORE VALUE #
  6881. NDLEM2(ERR137,STLNUM[0],ERROR$WORD);
  6882. END
  6883. END
  6884. ELSE # MUST BE A USER TIPTYPE #
  6885. BEGIN
  6886. LINFNFV(FN"DFL",STVALNUM[I]); # STORE DFL VALUE #
  6887. END
  6888. END
  6889. END
  6890. GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
  6891. FRAME:
  6892. FRMUSED = TRUE; # SET FRAME SPECIFIED FLAG #
  6893. IF NOT STVLERR[I] # IF THE VALUE IS O.K. #
  6894. THEN
  6895. BEGIN # CHECK IF VALUE IS WITHIN RANGE#
  6896. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  6897. THEN
  6898. BEGIN
  6899. USR$RANGE(STVALNUM[I],USR$WID1,NUM"DEC",X25$STAT);
  6900. END
  6901. ELSE
  6902. BEGIN
  6903. NDLCKRG(STKWID[I],STVALNUM[I],X25$STAT); # NORMAL RANGE #
  6904. # CHECKS #
  6905. END
  6906. IF X25$STAT # IF VALUE IS WITHIN RANGE #
  6907. THEN # STORE FRAME VALUE #
  6908. BEGIN
  6909. LINFNFV(FN"FRAME",STVALNUM[I]);
  6910. END
  6911. END
  6912. GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
  6913. LCN:
  6914. IF NOT STVLERR[I] # IF THE VALUE IS O.K. #
  6915. THEN
  6916. BEGIN
  6917. NDLCKRG(STKWID[I],STVALNUM[I],X25$STAT); # CHECK RANGE #
  6918. IF X25$STAT # IF VALUE IS WITHIN RANGE #
  6919. THEN # STORE LCN VALUE #
  6920. BEGIN
  6921. LINFNFV(FN"LCN",STVALNUM[I]);
  6922. END
  6923. END
  6924. GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
  6925.  
  6926. RTIME:
  6927. RTMUSED = TRUE; # SET RTIME SPECIFIED FLAG #
  6928. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  6929. THEN
  6930. BEGIN # CHECK IF VALUE IS WITHIN RANGE#
  6931. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  6932. THEN
  6933. BEGIN
  6934. USR$RANGE(STVALNUM[I],USR$WID1*100,NUM"DEC",X25$STAT);
  6935. # MULTIPLES OF 100#
  6936. END
  6937. ELSE
  6938. BEGIN
  6939. NDLCKRG(STKWID[I],STVALNUM[I],X25$STAT); # NORMAL RANGE #
  6940. # CHECKS #
  6941. END
  6942. IF X25$STAT # IF VALUE IS IN RANGE #
  6943. THEN # DIVIDE THE VALUE BY 100 #
  6944. BEGIN # AND ROUND UP TO THE NEAREST #
  6945. ITEMP = STVALNUM[I]; # MULTIPLE OF 100 #
  6946. FOR VALUE=0 STEP 1 WHILE ITEMP GR 0
  6947. DO
  6948. BEGIN
  6949. ITEMP = ITEMP - 100;
  6950. END # STORE VALUE IN LIN$CON$REC #
  6951. LINFNFV(FN"RTIME",VALUE);
  6952. END
  6953. END
  6954. GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
  6955. RCOUNT:
  6956. RCNTUSED = TRUE; # SET RCOUNT SPECIFIED FLAG #
  6957. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  6958. THEN
  6959. BEGIN # CHECK IF VALUE IS WITHIN RANGE#
  6960. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  6961. THEN
  6962. BEGIN
  6963. USR$RANGE(STVALNUM[I],USR$WID1,NUM"DEC",X25$STAT);
  6964. END
  6965. ELSE
  6966. BEGIN
  6967. NDLCKRG(STKWID[I],STVALNUM[I],X25$STAT); # NORMAL RANGE #
  6968. # CHECKS #
  6969. END
  6970. IF X25$STAT # IF VALUE IS WITHIN RANGE #
  6971. THEN
  6972. BEGIN # STORE RCOUNT IN LIN$CON$REC #
  6973. LINFNFV(FN"RCOUNT",STVALNUM[I]);
  6974. END
  6975. END
  6976. GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
  6977. NSVC:
  6978. NSVCUSED = TRUE; # SET NSVC SPECIFIED FLAG #
  6979. NSVCERR = TRUE; # SET NSVC ERROR FLAG #
  6980. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  6981. THEN
  6982. BEGIN # CHECK IF VALUE IS WITHIN RANGE#
  6983. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  6984. THEN
  6985. BEGIN
  6986. USR$RANGE(STVALNUM[I],USR$WID2,NUM"DEC",X25$STAT);
  6987. END
  6988. ELSE
  6989. BEGIN
  6990. NDLCKRG(STKWID[I],STVALNUM[I],X25$STAT); # NORMAL RANGE #
  6991. # CHECKS #
  6992. END
  6993. IF X25$STAT # IF VALUE IS WITHIN RANGE #
  6994. THEN
  6995. BEGIN
  6996. NSVCERR = FALSE; # CLEAR NSVC ERROR FLAG #
  6997. SVC$CNT = STVALNUM[I]; # SAVE NSVC VALUE #
  6998. LINFNFV(FN"SVC",SVC$CNT);
  6999. END
  7000. END
  7001. GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
  7002. PSN:
  7003. PSNUSED = TRUE; # SET PSN SPECIFIED FLAG #
  7004. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  7005. THEN
  7006. BEGIN # SEARCH PSN TABLE FOR VALUE #
  7007. FOR J=1 STEP 1 UNTIL MXPSN
  7008. DO
  7009. BEGIN
  7010. IF STVALNAM[I] EQ PSN$VAL[J] # IF VALUE IS FOUND #
  7011. THEN
  7012. BEGIN #STORE NUMERICAL VALUE IN RECORD#
  7013. LINFNFV(FN"PSN",PSN$NUMV[J]);
  7014. END
  7015. END
  7016. END
  7017. GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
  7018. DCE:
  7019. DCEUSED = TRUE; # SET DCE SPECIFIED FLAG #
  7020. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  7021. THEN
  7022. BEGIN
  7023. IF STVALNAM[I] EQ "YES" # IF VALUE IS YES #
  7024. THEN
  7025. BEGIN # STORE VALUE -TRUE- IN RECORD #
  7026. LINFNFV(FN"DCE",TRUE);
  7027. DCE$FLG = TRUE; # SET DCE FLAG #
  7028. END
  7029. ELSE # VALUE IS NO #
  7030. BEGIN # STORE VALUE -FALSE- IN RECORD #
  7031. LINFNFV(FN"DCE",FALSE);
  7032. END
  7033. END
  7034. GOTO NEXT$PARAM; # GO TO NEXT PARAMETER #
  7035. DTEA:
  7036. DTEAUSED = TRUE; # SET DTEA SPECIFIED FLAG #
  7037. IF NOT STVLERR[I]
  7038. THEN # IF VALUE IS O.K. #
  7039. BEGIN
  7040. IF STVALLEN[I] LQ MXDTEA
  7041. THEN # IF VALUE IS WITHIN RANGE #
  7042. BEGIN # CONVERT VALUE #
  7043. DTEA$VAL[0] = 0; # CLEAR DTEA TEMPORARY #
  7044. DTEA$VL1[0] = C<0,1>STVALNAM[I] - ZERO;
  7045. IF STVALLEN[I] GR 1
  7046. THEN # IF VALUE IS TWO DIGITS #
  7047. BEGIN
  7048. DTEA$VL2[0] = C<1,1>STVALNAM[I] - ZERO;
  7049. END
  7050. LINFNFV(FN"DTEA",DTEA$VAL[0]); # PUT VALUE IN LINE ENTRY #
  7051. END
  7052. ELSE # VALUE IS TOO BIG #
  7053. BEGIN # FLAG ERROR -- VALUE OUT OF RANGE #
  7054. NDLEM2(ERR100,STLNUM[0],STVALNAM[I]);
  7055. END
  7056. END
  7057. GOTO NEXT$PARAM;
  7058. GOTO NEXT$PARAM;
  7059. NEXT$PARAM:
  7060. RETURN; # **** RETURN **** #
  7061. END # X25LINE #
  7062. CONTROL EJECT;
  7063. # #
  7064. # LINGRPR CODE BEGINS HERE #
  7065. # #
  7066. CRNT$LSPD = LSPD"UNKNOWN"; # AND INITIALIZE VALUES #
  7067. DCEUSED = FALSE;
  7068. DCE$FLG = FALSE;
  7069. DEVCNT = 0;
  7070. DFLUSED = FALSE;
  7071. DTEAUSED = FALSE;
  7072. FRMUSED = FALSE;
  7073. LSPDUSED = FALSE;
  7074. ARSUSED = FALSE;
  7075. NSVCUSED = FALSE;
  7076. PORTUSED = FALSE;
  7077. AL$USED = FALSE;
  7078. PSNUSED = FALSE;
  7079. RCNTUSED = FALSE;
  7080. RTMUSED = FALSE;
  7081. LCR$EXIST = TRUE; # SET LINE CONFIG REC EXISTS FLG#
  7082. LCTWC[1] = LCTWC[1] + 1; # INCREMENT WORD COUNT IN XREF #
  7083. LCTWORD[LCTWC[1]] = 0; # CLEAR ENTRY WORD IN XREF #
  7084. LR$EXIST = TRUE; # SET LINE RECORD EXISTS FLAG #
  7085. LRWORD[1] = 0; # CLEAR WORD 1 IN LINE RECORD #
  7086. LRWORD[2] = 0; # CLEAR WORD 2 IN LINE RECORD #
  7087. LRWC[1] = 2; # SET WORD COUNT IN LINE RECORD #
  7088. LCWORD[0] = 0; # CLEAR FIRST WORD IN LC ENTRY #
  7089. LCWC[0] = LC$FIX$ENT; # SET WORD COUNT FOR LIN$CON$REC#
  7090. PVC$CNT = 0; # CLEAR PVC COUNT #
  7091. SVC$CNT = 0; # CLEAR SVC COUNT #
  7092. XTERMASK = 0; # CLEAR X.25 TERMINAL MASK #
  7093. SVC$SPEC = FALSE; # CLEAR SVC SPECIFIED FLAG #
  7094. FOR I=1 STEP 1 UNTIL LC$LENG # CLEAR LINE CONFIGURATION #
  7095. DO # RECORD #
  7096. BEGIN
  7097. LCWORD[I] = 0;
  7098. END
  7099. IF LCTWC[1] GQ LCT$LENG
  7100. THEN # IF NEED MORE TABLE SPACE FOR ENTRY #
  7101. BEGIN
  7102. SSTATS(P<LINE$XREF>,50); # ALLOCATE MORE SPACE #
  7103. END
  7104. IF NOT STLBERR[1] # IF NO LABEL ERROR #
  7105. THEN
  7106. BEGIN
  7107. LCTNAME[LCTWC[1]] = STLABEL[1];# PUT LABEL IN LINE XREF TABLE #
  7108. LRNAME[2] = STLABEL[1]; # PUT LABEL IN LINE RECORD #
  7109. IF STSTID[0] EQ STID"GROUP" # IF STATEMENT IS A GROUP STMT #
  7110. THEN
  7111. BEGIN
  7112. LRGC[1] = 0; # SET GROUP COUNT TO DEFAULT VALUE IN THE #
  7113. LCNI[0] = 1; # LINE RECORD AND LIN$CON$REC #
  7114. LCTNAME[LCTWC[1]] = LABLNAM[STLBPNTR[1]]; # GENERATED LABEL #
  7115. LCTPORT[LCTWC[1]] = LABLPORT[STLBPNTR[1]]; # GENERATED PORT #
  7116. LRPORT[2] = LABLPORT[STLBPNTR[1]];
  7117. END
  7118. END
  7119. LCTNID[LCTWC[1]] = CRNT$NID; # CURRENT NPU NODE I.D. IN XREF #
  7120. LRNID[2] = CRNT$NID; # PUT CURRENT NODE I.D. IN LINE RECORD #
  7121. IF STORD1[2] NQ 0 # IF LINE TYPE WAS SPECIFIED #
  7122. THEN
  7123. BEGIN
  7124. LTYPE = " "; # CLEAR CURRENT LINE TYPE #
  7125. IF NOT STVLERR[STORD1[2]] # IF VALUE IS O.K. #
  7126. THEN
  7127. BEGIN # SEARCH FOR LTYPE IN TABLE #
  7128. FOR I=1 STEP 1 UNTIL MXLTYPE
  7129. DO
  7130. BEGIN # IF VALUE IS FOUND IN TABLE #
  7131. IF STVALNAM[STORD1[2]] EQ LT$VAL[I]
  7132. THEN
  7133. BEGIN
  7134. LTYPE = LT$CAT[I]; # STORE LTYPE CATEGORY #
  7135. LCLTYPE[2] = LT$NUMV[I]; # STORE LTYPE NUMBER #
  7136. END
  7137. END
  7138. END
  7139. END
  7140. ELSE # LTYPE WAS NOT SPECIFIED #
  7141. BEGIN # FLAG ERROR -- REQUIRED PARAM #
  7142. NDLEM2(ERR103,STLNUM[0],"LTYPE"); # MISSING #
  7143. LTYPE = " "; # CLEAR CURRENT LTYPE #
  7144. END
  7145. IF STORD2[2] NQ 0 # IF TIPTYPE WAS SPECIFIED #
  7146. THEN
  7147. BEGIN
  7148. CRNT$TIP = TIP"UNKNOWN"; # CLEAR CURRENT TIPTYPE #
  7149. TT$USED = TRUE; # SET TIPTYPE SPECIFIED FLAG #
  7150. IF NOT STVLERR[STORD2[2]] # IF VALUE IS O.K. #
  7151. THEN
  7152. BEGIN # SEARCH TABLE FOR TIPTYPE VALUE#
  7153. FOR I=1 STEP 1 UNTIL MXTTYPE
  7154. DO
  7155. BEGIN # IF VALUE IS FOUND #
  7156. IF STVALNAM[STORD2[2]] EQ TT$VAL[I]
  7157. THEN
  7158. BEGIN
  7159. IF TT$NUMV[I] GQ 12 AND # IF NUMBER VALUE IS BETWEEN #
  7160. TT$NUMV[I] LQ 14 # 12 AND 14 #
  7161. THEN
  7162. BEGIN
  7163. CRNT$TIP = TIP"USER"; # MUST BE A USER TIPTYPE #
  7164. LCTTYP$IP[2] = TT$NUMV[I]; # STORE NUMERIC VAL OF TIP #
  7165. END
  7166. ELSE # TIPTYPE IS NOT A USER TIP #
  7167. BEGIN
  7168. IF TT$NUMV[I] EQ 15
  7169. THEN # THIS MUST BE 3270 #
  7170. CRNT$TIP = TIP"$3270";
  7171. ELSE
  7172. CRNT$TIP = TT$NUMV[I]; # STORE TIPTYPE NUMBER VALUE #
  7173. LCTTYP$IP[2] = TT$NUMV[I];# STORE NUMBER VALUE OF TIP #
  7174. IF LTYPE NQ " " # IF LINE TYPE WAS SPECIFIED #
  7175. THEN # CHECK IF THEY ARE COMPATIBLE#
  7176. BEGIN
  7177. IF CRNT$TIP EQ TIP"ASYNC"
  7178. THEN # IF ASYNC TIPTYPE #
  7179. BEGIN
  7180. IF LTYPE NQ "ASYNC"
  7181. THEN # IF LTYPE IS NOT ASYNC #
  7182. BEGIN
  7183. NDLEM2(ERR104,STLNUM[0]," "); # FLAG ERROR #
  7184. END
  7185. END
  7186. ELSE # TIP IS NOT ASYNC #
  7187. BEGIN # IF X25 TIPTYPE #
  7188. IF CRNT$TIP EQ TIP"X25"
  7189. THEN
  7190. BEGIN # IF LINE TYPE IS NOT X25 #
  7191. IF LTYPE NQ "X25"
  7192. THEN
  7193. BEGIN
  7194. NDLEM2(ERR104,STLNUM[0]," "); # FLAG ERROR #
  7195. END
  7196. END
  7197. ELSE # NOT ASYNC OR X25 TIPTYPE #
  7198. BEGIN # IF LTYPE IS NOT SYNCHRONOUS #
  7199. IF LTYPE NQ "SYNC"
  7200. THEN
  7201. BEGIN
  7202. NDLEM2(ERR104,STLNUM[0]," "); # FLAG ERROR #
  7203. END
  7204. END
  7205. END
  7206. END
  7207. END
  7208. END
  7209. END
  7210. END
  7211. END
  7212. ELSE # TIPTYPE WAS NOT SPECIFIED #
  7213. BEGIN
  7214. CRNT$TIP = TIP"UNKNOWN"; # CLEAR CURRENT TIPTYPE #
  7215. TT$USED = FALSE; # CLEAR TIPTYPE SPECIFIED FLAG #
  7216. END # PARAMETER MISSING #
  7217. AUTO$REC = FALSE; # CLEAR AUTO RECOGNITION FLAG #
  7218. XAUTO$REC = FALSE; # CLEAR XAUTO RECOGNITION FLAG #
  7219. IF STORD3[2] NQ 0 # IF AUTO PARAMETER WAS SPECIFIED #
  7220. THEN
  7221. BEGIN
  7222. IF CRNT$TIP NQ TIP"X25" # IF TIPTYPE IS NOT X25 OR 3270 #
  7223. AND CRNT$TIP NQ TIP"$3270"
  7224. THEN
  7225. BEGIN
  7226. IF STVALNAM[STORD3[2]] EQ "YES"
  7227. THEN # IF VALUE IS YES #
  7228. BEGIN
  7229. AUTO$REC = TRUE; # SET AUTO RECOGNITION FLAG #
  7230. LCTTYP$A[2] = TRUE; # SET FLAG IN LIN$CON$REC #
  7231. LRAUTO[2] = TRUE; # SET FLAG IN LINE RECORD #
  7232. IF STKWID[STORD3[2]] EQ KID"XAUTO" # IF XAUTO IS USED #
  7233. THEN
  7234. BEGIN
  7235. LC$SRANGE[2] = TRUE; # SET HIGH SPEED FLAG ON #
  7236. XAUTO$REC = TRUE; # SET XAUTO$FLAG ON #
  7237. END
  7238. END
  7239. END
  7240. ELSE # CURRENT TIPTYPE IS X25 OR 3270 #
  7241. BEGIN # FLAG ERROR -- INVALID WITH TIP SPECIFIED#
  7242. IF STKWID[STORD3[2]] EQ KID"XAUTO" # XAUTO IS USED #
  7243. THEN
  7244. BEGIN
  7245. NDLEM2(ERR106,STLNUM[0],"XAUTO");
  7246. END
  7247. ELSE # MUST BE AUTO #
  7248. BEGIN
  7249. NDLEM2(ERR106,STLNUM[0],"AUTO");
  7250. END
  7251. END
  7252. END
  7253. IF NOT TT$USED # IF TIPTYPE WAS NOT SPECIFIED #
  7254. THEN
  7255. BEGIN
  7256. IF NOT(LTYPE EQ "SYNC" AND # IF LTYPE IS NOT SYNC #
  7257. AUTO$REC) # AND THIS IS NOT AN AUTO-REC LINE #
  7258. THEN
  7259. BEGIN # FLAG ERROR -- TIPTYPE MUST BE SPECIFIED #
  7260. NDLEM2(ERR103,STLNUM[0],"TIPTYPE");
  7261. END
  7262. ELSE # MUST BE A SYNAUTO LINE #
  7263. BEGIN
  7264. LCTTYP$IP[2] = SYNAUTO; # PUT SYNAUTO VALUE FOR TIPTYPE #
  7265. END
  7266. END
  7267. FOR I=3 STEP 1 UNTIL STWC[0] # CHECK REMAINDER OF PARAMETERS #
  7268. DO # -- INDEPENDENT PARAMETERS #
  7269. BEGIN
  7270. GOTO LINJUMP[STKWID[I]]; # CLASSIFY PARAMETER BY KEYWORD #
  7271. GEN$PARAM: # I.D. #
  7272. GENLINE; # GENERAL LINE PARAMETERS #
  7273. TEST I;
  7274. X25$PARAM:
  7275. IF CRNT$TIP EQ TIP"X25" OR
  7276. CRNT$TIP EQ TIP"USER" # IF CRNT TIP IS X.25 OR USER #
  7277. THEN
  7278. BEGIN
  7279. X25LINE; # CHECK X25 LINE PARAMETERS #
  7280. END
  7281. ELSE # CRNT TIP IS NOT COMPATIBLE WITH PARAM #
  7282. BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
  7283. NDLEM2(ERR106,STLNUM[0],X25$PNAM[STKWID[I]]);
  7284. END
  7285. TEST I;
  7286. ASY$PARAM: # ASYNCHRONOUS LINE PARAMETERS #
  7287. IF STKWID[I] EQ KID"ARSPEED" # IF ARSPEED IS THE PARAM #
  7288. THEN
  7289. BEGIN
  7290. IF CRNT$TIP EQ TIP"ASYNC" OR
  7291. CRNT$TIP EQ TIP"USER" # IF ASYNC OR USER TIPTYPE #
  7292. THEN
  7293. BEGIN
  7294. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  7295. THEN
  7296. BEGIN
  7297. ARSUSED = TRUE; # SET FLAG TO TRUE #
  7298. LC$ARSPEED[2] = (STVALNAM[I] EQ "YES");# SET FLAG IF YES #
  7299. END
  7300. END
  7301. ELSE
  7302. BEGIN
  7303. NDLEM2(ERR106,STLNUM[0],"ARSPEED"); # TIPTYPE NOT COMPATIBLE #
  7304. END
  7305. END
  7306. ELSE
  7307. BEGIN
  7308. LSPDUSED = TRUE; # SET LSPEED SPECIFIED FLAG #
  7309. IF CRNT$TIP EQ TIP"ASYNC" OR
  7310. CRNT$TIP EQ TIP"USER"
  7311. THEN # IF TIPTYPE IS ASYNC OR USER #
  7312. BEGIN
  7313. IF CRNT$TIP EQ TIP"ASYNC" AND
  7314. AUTO$REC
  7315. THEN # IF ASYNC TIP AND AUTO REC LINE #
  7316. BEGIN # FLAG ERROR -- LSPEED ALLOWED ON NON- #
  7317. NDLEM2(ERR105,STLNUM[0]," "); # AUTO REC ASYNC LINES #
  7318. END
  7319. ELSE # MUST BE NON-AUTO REC OR USER TIP LINE #
  7320. BEGIN
  7321. IF NOT STVLERR[I] # IF VALUE IS O.K. #
  7322. THEN
  7323. BEGIN # SEARCH LSPEED TABLE FOR VALUE #
  7324. FOR J=1 STEP 1 UNTIL MXLSPD
  7325. DO
  7326. BEGIN # IF VALUE IS FOUND #
  7327. IF STVALNAM[I] EQ LST$VAL[J]
  7328. THEN
  7329. BEGIN # MAKE FNFV PAIR ENTRY #
  7330. LINFNFV(FN"LSPEED",LST$NUMV[J]);
  7331. CRNT$LSPD = LST$NUMV[J]; # SAVE CURRENT LSPEED #
  7332. END
  7333. END
  7334. END
  7335. END
  7336. END
  7337. ELSE # TIP IS NOT ASYNC OR USER #
  7338. BEGIN # FLAG ERROR -- LSPEED ALLOWED ON NON-AUTO#
  7339. NDLEM2(ERR105,STLNUM[0]," "); # REC ASYNC LINES ONLY #
  7340. END
  7341. END
  7342. TEST I;
  7343. NEXT: # GOTO NEXT PARAMETER #
  7344. END
  7345. IF LCNI[0] EQ 1
  7346. THEN
  7347. BEGIN
  7348. LRNAME[2] = LABLNAM[STLBPNTR[1]];
  7349. END
  7350. IF NOT PORTUSED # IF PORT WAS NOT SPECIFIED #
  7351. THEN
  7352. BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
  7353. NDLEM2(ERR103,STLNUM[0],"PORT");
  7354. END
  7355. IF CRNT$TIP EQ TIP"ASYNC" # IF TIPTYPE IS ASYNC #
  7356. THEN
  7357. BEGIN
  7358. IF NOT AUTO$REC AND # IF NON-AUTO REC AND LSPEED NOT SPECIFIED#
  7359. NOT LSPDUSED
  7360. THEN
  7361. BEGIN # MAKE FNFV PAIR ENTRY WITH DEFAULT LSPEED#
  7362. LINFNFV(FN"LSPEED",DEF$LSPD);
  7363. CRNT$LSPD = DEF$LSPD; # SAVE DEFAULT LSPEED #
  7364. END
  7365. END
  7366. IF CRNT$TIP EQ TIP"X25" AND
  7367. STSTID[0] NQ STID"GROUP" # X25 TIPTYPE AND NOT GROUP STMT#
  7368. THEN
  7369. BEGIN
  7370. IF NOT DFLUSED # IF DFL WAS NOT SPECIFIED #
  7371. THEN
  7372. BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
  7373. NDLEM2(ERR103,STLNUM[0],"DFL");
  7374. END
  7375. IF NOT FRMUSED # IF FRAME WAS NOT SPECIFIED #
  7376. THEN
  7377. BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
  7378. NDLEM2(ERR103,STLNUM[0],"FRAME");
  7379. END
  7380. IF NOT RTMUSED # IF RTIME WAS NOT SPECIFIED #
  7381. THEN
  7382. BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
  7383. NDLEM2(ERR103,STLNUM[0],"RTIME");
  7384. END
  7385. IF NOT PSNUSED # IF PSN WAS NOT SPECIFIED #
  7386. THEN
  7387. BEGIN # FLAG ERROR -- REQUIRED PARAMETER MISSING#
  7388. NDLEM2(ERR103,STLNUM[0],"PSN");
  7389. END
  7390. IF NOT RCNTUSED # IF RCOUNT NOT SPECIFIED #
  7391. THEN
  7392. BEGIN # MAKE FNFV PAIR ENTRY WITH DEFAULT RCOUNT#
  7393. LINFNFV(FN"RCOUNT",DEF$RCNT);
  7394. END
  7395. IF NOT DCEUSED # IF DCE NOT SPECIFIED #
  7396. THEN
  7397. BEGIN # MAKE FNFV PAIR ENTRY WITH DEFAULT DCE #
  7398. LINFNFV(FN"DCE",DEF$DCE);
  7399. END
  7400. IF NOT DCE$FLG AND
  7401. DTEAUSED # IF DCE WAS NOT SPECIFIED AND DTEA WAS #
  7402. THEN
  7403. BEGIN # FLAG ERROR -- DTEA INVALID ON NON DCE LN#
  7404. NDLEM2(ERR156,STLNUM[0]," ");
  7405. END
  7406. END
  7407. IF CRNT$TIP EQ TIP"X25" OR # IF USER TIP AND X25 LINE #
  7408. (CRNT$TIP EQ TIP"USER" AND LTYPE EQ "X25")
  7409. THEN
  7410. BEGIN
  7411. IF NOT NSVCUSED # IF NSVC NOT SPECIFED #
  7412. THEN # PUT DEFAULT IN LIN$CON$REC #
  7413. BEGIN
  7414. LINFNFV(FN"SVC",SVC$CNT);
  7415. END
  7416. END
  7417. IF NOT ARSUSED # IF NOT ARSUSED #
  7418. THEN
  7419. BEGIN
  7420. IF CRNT$TIP EQ TIP"ASYNC" # IF ASYNC TIPTYPE #
  7421. THEN
  7422. BEGIN
  7423. IF AUTO$REC OR XAUTO$REC # IF AUTO-RECOGNITION LINE #
  7424. THEN
  7425. BEGIN
  7426. LC$ARSPEED[2] = TRUE; # SET FLAG TO TRUE #
  7427. END
  7428. END
  7429. END
  7430. IF NOT AUTO$REC
  7431. THEN # IF NOT AN AUTO-REC LINE, #
  7432. BEGIN
  7433. MAXTERM = TRM$MAX[CRNT$TIP]; # SAVE MAXIMUM NUMBER OF TERMS #
  7434. TERMCNT = 0; # CLEAR TERMINAL STMT COUNT #
  7435. END
  7436. IF NOT AL$USED
  7437. THEN
  7438. BEGIN
  7439. LINFNFV(FN"AL",0); # MAKE 0 ENTRY FOR AL #
  7440. END
  7441. CA$MAP = 0; # CLEAR -CA- BIT MAP #
  7442. RETURN; # **** RETURN **** #
  7443. END # LINGRPR #
  7444. CONTROL EJECT;
  7445. PROC TERMPR;
  7446. BEGIN
  7447. *IF,DEF,IMS
  7448. #
  7449. ** TERMPR - TERMINAL STATEMENT PROC.
  7450. *
  7451. * D.K. ENDO 81/11/20
  7452. *
  7453. * THIS PROCEDURE CHECKS THE TC AND STIP PARAMETERS, TERMINAL STMT
  7454. * COUNT, AND CALL A PROC, BASED ON TIPTYPE, TO CHECK THE REMAINING
  7455. * PARAMETERS.
  7456. *
  7457. * PROC TERMPR
  7458. *
  7459. * ENTRY NONE.
  7460. *
  7461. * EXIT NONE.
  7462. *
  7463. * METHOD
  7464. *
  7465. * INITIALIZE FLAGS AND VALUES.
  7466. * INITIALIZE NEXT TERMINAL ENTRY.
  7467. * IF LINE IS AUTO-REC,
  7468. * CLEAR DEVICE STATEMENT COUNT.
  7469. * INCREMENT TERMINAL STATEMENT COUNT.
  7470. * IF TERMINAL COUNT GREATER THAN MAXIMUM ALLOWED,
  7471. * FLAG ERROR -- MAXIMUM TERMINAL COUNT EXCEEDED.
  7472. * PUT CURRENT TIPTYPE IN TERMINAL ENTRY FROM LINE CONFIG ENTRY.
  7473. * IF STIP WAS SPECIFIED,
  7474. * IF VALUE IS O.K.,
  7475. * IF VALUE IS -AUTOREC-,
  7476. * THEN,
  7477. * IF LINE IS NOT AUTO-REC,
  7478. * FLAG ERROR -- INVALID VALUE.
  7479. * OTHERWISE,
  7480. * MAP STIP NUMERIC VALUE.
  7481. * PUT STIP VALUE IN TERMINAL ENTRY.
  7482. * IF TIP IS NOT USER OR UNKNOWN,
  7483. * IF TIPTYPE IS NOT COMPATIBLE WITH STIP,
  7484. * FLAG ERROR -- STIP AND TIPTYPE VALUE NOT COMPATIBLE.
  7485. * SET CURRENT STIP TO UNKNOWN.
  7486. * IF TC WAS SPECIFIED,
  7487. * IF VALUE IS O.K.,
  7488. * IF VALUE IS -CCP-,
  7489. * THEN
  7490. * CLEAR TC SPECIFIED FLAG.
  7491. * OTHERWISE,
  7492. * MAP TC NUMERIC VALUE.
  7493. * PUT VALUE IN TERMINAL ENTRY.
  7494. * IF TIPTYPE IS NOT USER AND TC IS NOT USER,
  7495. * IF STIP IS NOT UNKNOWN,
  7496. * THEN,
  7497. * IF STIP IS NOT COMPATIBLE WITH TC,
  7498. * FLAG ERROR -- TC AND STIP NOT COMPATIBLE
  7499. * SET CURRENT TC TO UNKNOWN.
  7500. * OTHERWISE,
  7501. * IF TIPTYPE IS NOT UNKNOWN,
  7502. * IF TIPTYPE AND TC ARE NOT COMPATIBLE,
  7503. * FLAG ERROR -- TC AND TIPTYPE NOT COMPATIBLE.
  7504. * SET CURRENT TC TO UNKNOWN.
  7505. * IF TIPTYPE IS NOT USER
  7506. * IF STIP WAS NOT SPECIFIED,
  7507. * IF TC WAS SPECIFIED,
  7508. * THEN,
  7509. * DEFAULT STIP ACCORDING TO TC.
  7510. * IF TIPTYPE IS X.25,
  7511. * DEFAULT STIP TO -PAD-.
  7512. * PUT STIP IN TERMINAL ENTRY.
  7513. * OTHERWISE,
  7514. * FLAG ERROR -- TC OR STIP REQUIRED.
  7515. * IF TIPTYPE IS SYNAUTO,
  7516. * DEFAULT TIPTYPE ACCORDING TO STIP.
  7517. * PUT TIPTYPE VALUE IN TERMINAL ENTRY.
  7518. * SELECT CASE THAT APPLIES,
  7519. * CASE 1(ASYNC TIP):
  7520. * CHECK ASYNC TERMINAL STMT ENTRY.
  7521. * CASE 2(MODE4 TIP):
  7522. * CHECK MODE4 TERMINAL STMT ENTRY.
  7523. * CASE 3(HASP TIP):
  7524. * CHECK HASP TERMINAL STMT ENTRY.
  7525. * CASE 4(X25 TIP):
  7526. * CHECK X25 TERMINAL STMT ENTRY.
  7527. * CASE 5(BSC TIP):
  7528. * CHECK BSC TERMINAL STMT ENTRY.
  7529. * CASE 6(USER OR UNKNOWN TIP):
  7530. * CHECK USER TERMINAL STMT ENTRY.
  7531. * IF CSET WAS NOT SPECIFIED AND NOT AN AUTO-REC LINE,
  7532. * DEFAULT CSET ACCORDING TO STIP.
  7533. * PUT VALUE IN TERMINAL ENTRY.
  7534. * IF LINE IS NOT AUTOREC,
  7535. * THEN,
  7536. * DEFAULT MAXIMUM DEVICE STMTS ALLOWED ACCORDING TO TIPTYPE.
  7537. * OTHERWISE,
  7538. * SET MAXIMUM NUMBER OF DEVICE STMTS TO 255.
  7539. *
  7540. #
  7541. *ENDIF
  7542. #
  7543. **** PROC TERMPR - XREF LIST BEGINS.
  7544. #
  7545. XREF
  7546. BEGIN
  7547. PROC NDLEM2; # MAKES ENTRIES IN PASS 2 ERROR FILE #
  7548. END
  7549. #
  7550. ****
  7551. #
  7552. DEF MXTRENT # 3 #; # MAXIMUM WORD COUNT FOR TERMINAL ENTRY #
  7553. DEF NCIR$DEF # 1 #; # DEFAULT VALUE FOR NCIR #
  7554. ITEM CA$USED B; # CA SPECIFIED FLAG #
  7555. ITEM CSET$USED B; # CSET SPECIFIED FLAG #
  7556. ITEM I; # SCRATCH ITEM #
  7557. ITEM RIC$USED B; # RIC SPECIFIED FLAG #
  7558. ITEM STIP$USED B; # STIP SPECIFIED FLAG #
  7559. ITEM TC$USED B; # TC SPECIFIED FLAG #
  7560. DEF MXTKWD # 78 #; # MAXIMUM NUMBER TERMINAL KEYWORDS #
  7561. DEF W$DEF # 2 #; # W DEFAULT #
  7562. ARRAY KYWD$NAM$TAB [0:MXTKWD] S(1);
  7563. BEGIN
  7564. ITEM KWDNAME C(0,0,10) = ["STIP",
  7565. "TC",
  7566. "RIC",
  7567. "CSET",
  7568. "TSPEED",
  7569. "CA",
  7570. "CO",
  7571. "BCF",
  7572. "MREC",
  7573. "W",
  7574. "CTYP",
  7575. "NCIR",
  7576. "NEN",
  7577. "COLLECT",
  7578. , # XAUTO #
  7579. , # DT #
  7580. , # SDT #
  7581. , # TA #
  7582. , # ABL #
  7583. , # DBZ #
  7584. , # UBZ #
  7585. , # DBL #
  7586. , # UBL #
  7587. , # XBZ #
  7588. , # DO #
  7589. , # STREAM #
  7590. , # HN #
  7591. , # AUTOLOG #
  7592. , # AUTOCON #
  7593. , # PRI #
  7594. , # P80 #
  7595. , # P81 #
  7596. , # P82 #
  7597. , # P83 #
  7598. , # P84 #
  7599. , # P85 #
  7600. , # P86 #
  7601. , # P87 #
  7602. , # P88 #
  7603. , # P89 #
  7604. , # AB #
  7605. , # BR #
  7606. , # BS #
  7607. , # B1 #
  7608. , # B2 #
  7609. , # CI #
  7610. , # CN #
  7611. , # CT #
  7612. , # DLC #
  7613. , # DLTO #
  7614. , # DLX #
  7615. , # EP #
  7616. , # IN #
  7617. , # LI #
  7618. , # OP #
  7619. , # PA #
  7620. , # PG #
  7621. , # PL #
  7622. , # PW #
  7623. , # SE #
  7624. , # FA #
  7625. , # XLC #
  7626. , # XLX #
  7627. , # XLTO #
  7628. , # ELO #
  7629. , # ELX #
  7630. , # ELR #
  7631. , # EBO #
  7632. , # EBR #
  7633. , # CP #
  7634. , # IC #
  7635. , # OC #
  7636. , # LK #
  7637. , # EBX #
  7638. , # HD #
  7639. , # MC #
  7640. , # XLY #
  7641. "EOF", # EOF #
  7642. "PAD" # PAD #
  7643. ];
  7644. END
  7645. DEF MXSTIP # 11 #; # MAXIMUM NUMBER OF STIPS #
  7646. ARRAY STIP$TABLE [0:MXSTIP] S(2);
  7647. BEGIN
  7648. ITEM STIP$VAL C(0,0,7) = [,"M4A", # STIP VALUES #
  7649. "M4C",
  7650. "2741",
  7651. "N2741",
  7652. "POST",
  7653. "PRE",
  7654. "PAD",
  7655. "USER",
  7656. "XAA",
  7657. "2780",
  7658. "3780"
  7659. ];
  7660. ITEM STIP$NUMV U(0,42,3) = [0, # UNKNOWN -- NUMERICAL VALUES #
  7661. 1, # M4A #
  7662. 2, # M4C #
  7663. 2, # 2741 #
  7664. 1, # N2741 #
  7665. 1, # POST #
  7666. 2, # PRE #
  7667. 1, # PAD #
  7668. 6, # USER #
  7669. 3, # XAA #
  7670. 1, # 2780 #
  7671. 2, # 3780 #
  7672. ];
  7673. ITEM STIP$STATUS U(0,45,5) =[STIP"UNKNOWN", # STIP STATUS VALUE#
  7674. STIP"M4A",
  7675. STIP"M4C",
  7676. STIP"$2741",
  7677. STIP"N2741",
  7678. STIP"POST",
  7679. STIP"PRE",
  7680. STIP"PAD",
  7681. STIP"USER",
  7682. STIP"XAA",
  7683. STIP"$2780",
  7684. STIP"$3780"
  7685. ];
  7686. ITEM STIP$TIP U(0,50,5) = [TIP"UNKNOWN", # ALLOWABLE TIP VALUE #
  7687. TIP"MODE4",
  7688. TIP"MODE4",
  7689. TIP"ASYNC",
  7690. TIP"ASYNC",
  7691. TIP"HASP",
  7692. TIP"HASP",
  7693. TIP"X25",
  7694. TIP"X25",
  7695. TIP"X25",
  7696. TIP"BSC",
  7697. TIP"BSC"
  7698. ];
  7699. ITEM STIP$TIP$MAP U(1,0,15) = [ 0, # TIPTYPE ALLOWED MAP #
  7700. O"10000",
  7701. O"10000",
  7702. O"20000",
  7703. O"20000",
  7704. O"04000",
  7705. O"04000",
  7706. O"02000",
  7707. O"02000",
  7708. O"02000",
  7709. O"01000",
  7710. O"01000"
  7711. ];
  7712. ITEM CSET$DEF (1,30,15) = [CSET"UNKNOWN", # UNKNOWN #
  7713. CSET"ASCII", # M4A #
  7714. CSET"ASCII", # M4C #
  7715. CSET"CORRES", # 2741 #
  7716. CSET"ASCII", # N2741 #
  7717. CSET"EBCDIC", # POST #
  7718. CSET"EBCDIC", # PRE #
  7719. CSET"ASCII", # PAD #
  7720. CSET"ASCII", # USER #
  7721. CSET"ASCII", # XAA #
  7722. CSET"EBCDIC", # 2780 #
  7723. CSET"EBCDIC" # 3780 #
  7724. ];
  7725. END
  7726. DEF MXTC # 24 #; # MAXIMUM NUMBER OF TC VALUES #
  7727. ARRAY TC$TABLE [1:MXTC] S(2);
  7728. BEGIN
  7729. ITEM TC$VAL C(0,0,7) = ["M33", # TC VALUES #
  7730. "713",
  7731. "721",
  7732. "2741",
  7733. "M40",
  7734. "H2000",
  7735. "751",
  7736. "T4014",
  7737. "HASP",
  7738. "200UT",
  7739. "714X",
  7740. "711",
  7741. "714",
  7742. "HPRE",
  7743. "734",
  7744. "2780",
  7745. "3780",
  7746. "752",
  7747. "X364",
  7748. "3270",
  7749. "TC28",
  7750. "TC29",
  7751. "TC30",
  7752. "TC31",
  7753. ];
  7754. ITEM TC$NUMV U(0,45,5) = [1, # M33 -- TC NUMERICAL VALUE #
  7755. 2, # 713 #
  7756. 3, # 721 #
  7757. 4, # 2741 #
  7758. 5, # M40 #
  7759. 6, # H2000 #
  7760. 2, # 751 #
  7761. 8, # T4014 #
  7762. 9, # HASP #
  7763. 10, # 200UT #
  7764. 11, # 714X #
  7765. 12, # 711 #
  7766. 13, # 714 #
  7767. 14, # HPRE #
  7768. 15, # 734 #
  7769. 16, # 2780 #
  7770. 17, # 3780 #
  7771. 2, # 752 #
  7772. 7, # X364 #
  7773. 18, # 3270 #
  7774. 28, # TC28 #
  7775. 29, # TC29 #
  7776. 30, # TC30 #
  7777. 31, # TC31 #
  7778. ];
  7779. ITEM TC$STATUS U(0,50,5) = [TC"M33", # TC STATUS VALUE #
  7780. TC"$713",
  7781. TC"$721",
  7782. TC"$2741",
  7783. TC"M40",
  7784. TC"H2000",
  7785. TC"$751",
  7786. TC"T4014",
  7787. TC"HASP",
  7788. TC"$200UT",
  7789. TC"$714X",
  7790. TC"$711",
  7791. TC"$714",
  7792. TC"HPRE",
  7793. TC"$734",
  7794. TC"$2780",
  7795. TC"$3780",
  7796. TC"$752",
  7797. TC"X364",
  7798. TC"$3270",
  7799. TC"USER",
  7800. TC"USER",
  7801. TC"USER",
  7802. TC"USER",
  7803. ];
  7804. ITEM DEF$STIP U(0,55,5) = [STIP"N2741", # M33 -- DEFAULT STIP #
  7805. STIP"N2741", # 713/751/X364 #
  7806. STIP"N2741", # 721 #
  7807. STIP"$2741", # 2741 #
  7808. STIP"N2741", # M40 #
  7809. STIP"N2741", # H2000 #
  7810. STIP"N2741", # 751 #
  7811. STIP"N2741", # T4014 #
  7812. STIP"POST", # HASP #
  7813. STIP"M4A", # 200UT #
  7814. STIP"M4C", # 714X #
  7815. STIP"M4C", # 711 #
  7816. STIP"M4C", # 714 #
  7817. STIP"PRE", # HPRE #
  7818. STIP"M4A", # 734 #
  7819. STIP"$2780", # 2780 #
  7820. STIP"$3780", # 3780 #
  7821. STIP"N2741", # 752 #
  7822. STIP"N2741", # X364 #
  7823. STIP"UNKNOWN",# 3270 #
  7824. STIP"UNKNOWN",# TC28 #
  7825. STIP"UNKNOWN",# TC29 #
  7826. STIP"UNKNOWN",# TC30 #
  7827. STIP"UNKNOWN",# TC31 #
  7828. ];
  7829. ITEM STIP$AMAP U(1,0,15) = [O"02200", # M33 -- STIP ALLOWED #
  7830. O"02200", # 713 #
  7831. O"02200", # 721 #
  7832. O"04000", # 2741 #
  7833. O"02200", # M40 #
  7834. O"02200", # H2000 #
  7835. O"02200", # 751 #
  7836. O"02200", # T4014 #
  7837. O"01000", # HASP #
  7838. O"20000", # 200UT #
  7839. O"10000", # 714X #
  7840. O"10000", # 711 #
  7841. O"10000", # 714 #
  7842. O"00400", # HPRE #
  7843. O"20000", # 734 #
  7844. O"00020", # 2780 #
  7845. O"00010", # 3780 #
  7846. O"02200", # 752 #
  7847. O"02200", # X364 #
  7848. 0, # 3270 -- N/A #
  7849. O"37770", # TC28 #
  7850. O"37770", # TC29 #
  7851. O"37770", # TC30 #
  7852. O"37770", # TC31 #
  7853. ];
  7854. ITEM TC$TIP$AMAP U(1,15,15) = [O"22000", # M33 -- TIP ALLOWED #
  7855. O"22000", # 713 #
  7856. O"22000", # 721 #
  7857. O"20000", # 2741 #
  7858. O"22000", # M40 #
  7859. O"22000", # H2000 #
  7860. O"22000", # 751 #
  7861. O"22000", # T4014 #
  7862. O"04000", # HASP #
  7863. O"10000", # 200UT #
  7864. O"10000", # 714X #
  7865. O"10000", # 711 #
  7866. O"10000", # 714 #
  7867. O"04000", # HPRE #
  7868. O"10000", # 734 #
  7869. O"01000", # 2780 #
  7870. O"01000", # 3780 #
  7871. O"22000", # 752 #
  7872. O"22000", # X364 #
  7873. O"00400", # 3270 #
  7874. O"37000", # TC28 #
  7875. O"37000", # TC29 #
  7876. O"37000", # TC30 #
  7877. O"37000", # TC31 #
  7878. ];
  7879. END
  7880. SWITCH TRMJUMP USER, # UNKNOWN TIPTYPE #
  7881. ASYNC, # ASYNC TIPTYPE #
  7882. MODE4, # MODE4 TIPTYPE #
  7883. HASP, # HASP TIPTYPE #
  7884. X25, # X25 TIPTYPE #
  7885. BSC, # BISYNC TIPTYPE #
  7886. $3270, # 3270 TIPTYPE #
  7887. USER; # USER TIPTYPE #
  7888. CONTROL EJECT;
  7889. PROC ASYTERM;
  7890. BEGIN
  7891. *IF,DEF,IMS
  7892. #
  7893. ** ASYTERM -- CHECKS TERMINAL PARAMETERS LEGAL FOR ASYNC TIP.
  7894. *
  7895. * D.K. ENDO 81/12/01
  7896. *
  7897. * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMRTER
  7898. * ON THE STATEMENT.
  7899. *
  7900. * PROC ASYTERM
  7901. *
  7902. * ENTRY NONE.
  7903. *
  7904. * EXIT NONE.
  7905. *
  7906. * METHOD
  7907. *
  7908. * FOR EACH VALUE DECLARATION,
  7909. * SELECT CASE THAT APPLIES,
  7910. * CASE 1(RIC,CSET):
  7911. * CHECK GENERAL PARAMETER.
  7912. * CASE 2(TSPEED):
  7913. * IF LINE IS AUTO-REC,
  7914. * THEN
  7915. * CHECK ASYNC PARAMETER.
  7916. * OTHERWISE,
  7917. * FLAG ERROR -- TSPEED VALID ON AUTO-REC LINES ONLY.
  7918. * CASE 3(CA,CO,BCF,MREC,W,CTYP,NCIR,NEN,COLLECT,EOF):
  7919. * FLAG ERROR -- INVALID PARAMETER.
  7920. *
  7921. #
  7922. *ENDIF
  7923. #
  7924. **** PROC ASYTERM XREF LIST BEGINS.
  7925. #
  7926. XREF
  7927. BEGIN
  7928. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  7929. END
  7930. #
  7931. ****
  7932. #
  7933. DEF TS2400 # 7 #; # TERMINAL SPEED 2400 #
  7934. DEF TS600 # 5 #; # TERMINAL SPEED 600 #
  7935. ITEM I; # SCRATCH ITEM #
  7936. ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
  7937. SWITCH ASYTJUMP NEXT$PARAM, # STIP #
  7938. NEXT$PARAM, # TC #
  7939. GEN$PARAM , # RIC #
  7940. GEN$PARAM , # CSET #
  7941. ASY$PARAM , # TSPEED #
  7942. OTHERS , # CA #
  7943. OTHERS , # CO #
  7944. OTHERS , # BCF #
  7945. OTHERS , # MREC #
  7946. OTHERS , # W #
  7947. OTHERS , # CTYP #
  7948. OTHERS , # NCIR #
  7949. OTHERS , # NEN #
  7950. OTHERS , # COLLECT #
  7951. OTHERS , # XAUTO #
  7952. OTHERS , # DT #
  7953. OTHERS , # SDT #
  7954. OTHERS , # TA #
  7955. OTHERS , # ABL #
  7956. OTHERS , # DBZ #
  7957. OTHERS , # UBZ #
  7958. OTHERS , # DBL #
  7959. OTHERS , # UBL #
  7960. OTHERS , # XBZ #
  7961. OTHERS , # DO #
  7962. OTHERS , # STREAM #
  7963. OTHERS , # HN #
  7964. OTHERS , # AUTOLOG #
  7965. OTHERS , # AUTOCON #
  7966. OTHERS , # PRI #
  7967. OTHERS , # P80 #
  7968. OTHERS , # P81 #
  7969. OTHERS , # P82 #
  7970. OTHERS , # P83 #
  7971. OTHERS , # P84 #
  7972. OTHERS , # P85 #
  7973. OTHERS , # P86 #
  7974. OTHERS , # P87 #
  7975. OTHERS , # P88 #
  7976. OTHERS , # P89 #
  7977. OTHERS , # AB #
  7978. OTHERS , # BR #
  7979. OTHERS , # BS #
  7980. OTHERS , # B1 #
  7981. OTHERS , # B2 #
  7982. OTHERS , # CI #
  7983. OTHERS , # CN #
  7984. OTHERS , # CT #
  7985. OTHERS , # DLC #
  7986. OTHERS , # DLTO #
  7987. OTHERS , # DLX #
  7988. OTHERS , # EP #
  7989. OTHERS , # IN #
  7990. OTHERS , # LI #
  7991. OTHERS , # OP #
  7992. OTHERS , # PA #
  7993. OTHERS , # PG #
  7994. OTHERS , # PL #
  7995. OTHERS , # PW #
  7996. OTHERS , # SE #
  7997. OTHERS , # FA #
  7998. OTHERS , # XLC #
  7999. OTHERS , # XLX #
  8000. OTHERS , # XLTO #
  8001. OTHERS , # ELO #
  8002. OTHERS , # ELX #
  8003. OTHERS , # ELR #
  8004. OTHERS , # EBO #
  8005. OTHERS , # EBR #
  8006. OTHERS , # CP #
  8007. OTHERS , # IC #
  8008. OTHERS , # OC #
  8009. OTHERS , # LK #
  8010. OTHERS , # EBX #
  8011. OTHERS , # HD #
  8012. OTHERS , # MC #
  8013. OTHERS , # XLY #
  8014. OTHERS , # EOF #
  8015. OTHERS ; # PAD #
  8016. # #
  8017. # ASYTERM CODE BEGINS HERE #
  8018. # #
  8019. FOR I=2 STEP 1 UNTIL STWC[0]
  8020. DO # FOR EACH VALUE-DECLARATION #
  8021. BEGIN
  8022. SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
  8023. GOTO ASYTJUMP[SWITCH$ID]; # GO TO APPROPRIATE PARAGRAPH #
  8024. GEN$PARAM:
  8025. GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]); # GENERAL PARAMETERS #
  8026. GOTO NEXT$PARAM;
  8027. ASY$PARAM:
  8028. IF AUTO$REC # IF TERMINAL IS ON A AUTO-REC LINE #
  8029. THEN
  8030. BEGIN # CHECK ASYNC PARAMETER #
  8031. ATRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]);
  8032. IF NOT XAUTO$REC # IF NOT XAUTO FLAG SET #
  8033. THEN
  8034. BEGIN
  8035. IF CRNT$TSPD GR TS2400 # IF TSPEED GR 2400 #
  8036. THEN
  8037. BEGIN
  8038. NDLEM2(ERR162,STLNUM[0],"AUTO");
  8039. END
  8040. END
  8041. ELSE
  8042. BEGIN
  8043. IF XAUTO$REC # IF XAUTO FLAG IS SET #
  8044. THEN
  8045. BEGIN
  8046. IF CRNT$TSPD LS TS600 # IF TSPEED LESS THAN 600 #
  8047. THEN
  8048. BEGIN
  8049. NDLEM2(ERR162,STLNUM[0],"XAUTO");
  8050. END
  8051. END
  8052. END
  8053. END
  8054. ELSE # NON-AUTO-REC LINE #
  8055. BEGIN # FLAG ERROR -- VALID FOR AUTO-REC ONLY #
  8056. NDLEM2(ERR107,STLNUM[0],KWDNAME[SWITCH$ID]);
  8057. END
  8058. GOTO NEXT$PARAM;
  8059. OTHERS: # ALL OTHER PARAMETERS FLAG AS INVALID #
  8060. NDLEM2(ERR106,STLNUM[0],KWDNAME[SWITCH$ID]); # FOR ASYNC LINES #
  8061. GOTO NEXT$PARAM;
  8062. IF STKWID[I] EQ KID"PAD"
  8063. THEN
  8064. BEGIN # STATEMENT TABLE #
  8065. I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
  8066. END
  8067. NEXT$PARAM: # GO TO NEXT PARAMETER #
  8068. END
  8069. RETURN; # **** RETURN **** #
  8070. END # ASYTERM #
  8071. CONTROL EJECT;
  8072. PROC ATRMPRM(ASY$ID,ASY$WORD,ASY$LINE);
  8073. BEGIN
  8074. *IF,DEF,IMS
  8075. #
  8076. ** ATRMPRM -- CHECK ASYNC TERMINAL PARAMETER.
  8077. *
  8078. * D.K. ENDO 81/12/01
  8079. *
  8080. * THIS PROCEDURE CHECKS PARAMETERS THAT CAN ONLY BE SPECIFIED FOR
  8081. * AN ASYNC TERMINAL.
  8082. *
  8083. * PROC ATRMPRM(ASY$ID,ASY$WORD,ASY$LINE)
  8084. *
  8085. * ENTRY ASY$ID = NUMBER IDENTIFYING KEYWORD.
  8086. * ASY$WORD = VALUE DECLARATION ENTRY.
  8087. * ASY$LINE = CURRENT SOURCE LINE NUMBER.
  8088. *
  8089. * EXIT NONE.
  8090. *
  8091. * METHOD
  8092. *
  8093. * IF VALUE IS NOT -AUTOREC-
  8094. * THEN,
  8095. * IF VALUE IS O.K.
  8096. * MAP NUMERIC VALUE FOR TSPEED.
  8097. * PUT TSPEED VALUE IN CURRENT TERMINAL ENTRY.
  8098. * IF TIPTYPE IS NOT USER AND STIP IS NOT UNKNOWN,
  8099. * IF STIP IS NOT COMPATIBLE WITH TSPEED,
  8100. * FLAG ERROR
  8101. * OTHERWISE,
  8102. * IF LINE IS NOT AUTO-REC,
  8103. * FLAG ERROR -- AUTOREC VALUE NOT VALID.
  8104. *
  8105. #
  8106. *ENDIF
  8107. ITEM ASY$ID; # KEYWORD I.D. FOR SWITCH #
  8108. ITEM ASY$LINE; # STATEMENT LINE NUMBER #
  8109. ARRAY ASY$WORD [0:0] S(1); # VALUE DECLARATION ENTRY #
  8110. BEGIN
  8111. ITEM ASY$VLERR B(0,17,1); # VALUE ERROR FLAG #
  8112. ITEM ASY$VALNAM C(0,18,7); # CHARACTER VALUE #
  8113. ITEM ASY$VALNUM (0,18,42); # INTEGER VALUE #
  8114. END
  8115. #
  8116. **** PROC ATRMPRM - XREF LIST BEGINS
  8117. #
  8118. XREF
  8119. BEGIN
  8120. PROC NDLEM2; # MAKES ENTRIES IN PASS 2 ERROR FILE #
  8121. END
  8122. #
  8123. ****
  8124. #
  8125. ITEM I; # SCRATCH ITEM #
  8126. DEF MXTSPD # 11 #; # MAXIMUM NUMBER OF TSPEED VALUES #
  8127. ARRAY TSPEED$TABLE [1:MXTSPD] S(1);
  8128. BEGIN
  8129. ITEM TSPD$VAL C(0,0,7) = ["110", # TSPEED VALUE #
  8130. "134",
  8131. "150",
  8132. "300",
  8133. "600",
  8134. "1200",
  8135. "2400",
  8136. "4800",
  8137. "9600",
  8138. "19200",
  8139. "38400"
  8140. ];
  8141. ITEM TSPD$ST$ALLW U(00,42,09) = [O"020", # STIP ALLOWED MAP #
  8142. O"040",
  8143. O"020",
  8144. O"060",
  8145. O"020",
  8146. O"020",
  8147. O"020",
  8148. O"020",
  8149. O"20",
  8150. O"20",
  8151. O"20"
  8152. ];
  8153. ITEM TSPD$NUMV U(0,51,09) = [ 1, # TSPEED INTEGER VALUE#
  8154. 2,
  8155. 3,
  8156. 4,
  8157. 5,
  8158. 6,
  8159. 7,
  8160. 8,
  8161. 9,
  8162. 10,
  8163. 11
  8164. ];
  8165. END
  8166. # #
  8167. # ATRMPRM CODE BEGINS HERE #
  8168. # #
  8169. IF ASY$VALNAM[0] NQ "AUTOREC" # IF VALUE IS NOT AUTOREC #
  8170. THEN
  8171. BEGIN
  8172. IF NOT ASY$VLERR[0] # IF VALUE IS O.K. #
  8173. THEN
  8174. BEGIN
  8175. FOR I=0 STEP 1 UNTIL MXTSPD # SEARCH TABLE FOR TSPEED #
  8176. DO
  8177. BEGIN # IF VALUE IS FOUND #
  8178. IF ASY$VALNAM[0] EQ TSPD$VAL[I]
  8179. THEN
  8180. BEGIN # PUT INTEGER VAL IN TERM ENTRY #
  8181. TETS[CRNT$TERM + 1] = TSPD$NUMV[I];
  8182. CRNT$TSPD = TSPD$NUMV[I];
  8183. IF CRNT$TIP NQ TIP"USER" AND
  8184. CRNT$STIP NQ STIP"UNKNOWN"
  8185. THEN # CURRENT TIP IS NOT USER AND STIP NOT UNK#
  8186. BEGIN
  8187. IF B<CRNT$STIP,1>TSPD$ST$ALLW[I] NQ 1
  8188. THEN # IF TSPEED NOT ALLOWED WITH STIP #
  8189. BEGIN # FLAG ERROR -- VALUE NOT VALID WITH STIP #
  8190. NDLEM2(ERR111,ASY$LINE,ASY$VALNAM[0]);
  8191. END
  8192. END
  8193. END
  8194. END
  8195. END
  8196. END
  8197. ELSE # VALUE IS NOT AUTOREC #
  8198. BEGIN
  8199. IF NOT AUTO$REC # IF FIXED CONFIGURED LINE #
  8200. THEN
  8201. BEGIN # FLAG ERROR -- AUTOREC NOT VALID #
  8202. NDLEM2(ERR113,ASY$LINE," ");
  8203. END
  8204. END
  8205. RETURN; # **** RETURN **** #
  8206. END # ATRMPRM #
  8207. CONTROL EJECT;
  8208. PROC BSCTERM;
  8209. BEGIN
  8210. *IF,DEF,IMS
  8211. #
  8212. ** BSCTERM -- CHECK TERMINAL PARAMETERS LEGAL FOR BSC TIP.
  8213. *
  8214. * D.K. ENDO 81/12/01
  8215. *
  8216. * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
  8217. * ON THE STATEMENT.
  8218. *
  8219. * PROC BSCTERM
  8220. *
  8221. * ENTRY NONE.
  8222. *
  8223. * EXIT NONE.
  8224. *
  8225. * METHOD
  8226. *
  8227. * FOR EACH VALUE DECLARATION ENTRY,
  8228. * SELECT THE CASE THAT APPLIES,
  8229. * CASE 1(RIC,CSET):
  8230. * CHECK GENERAL PARAMETER.
  8231. * CASE 2(CO):
  8232. * IF LINE IS AUTO-REC,
  8233. * THEN,
  8234. * CHECK HASP/BSC PARAMETERS.
  8235. * OTHERWISE,
  8236. * FLAG ERROR -- VALID FOR AUTO-REC LINES ONLY.
  8237. * CASE 3(BCF,MREC):
  8238. * IF STIP IS 3780,
  8239. * THEN,
  8240. * FLAG ERROR -- PARAMETER VALID FOR 2780 TERMINALS ONLY.
  8241. * OTHERWISE,
  8242. * CHECK BISYNC PARAMETER.
  8243. *
  8244. * CASE 4(TSPEED,CA,W,CTYP,NCIR,NEN,COLLECT,EOF):
  8245. * FLAG ERROR -- PARAMETER NOT ALLOWED.
  8246. * IF RIC WAS NOT SPECIFIED,
  8247. * SET RIC FLAG TO TRUE.
  8248. *
  8249. #
  8250. *ENDIF
  8251. #
  8252. **** PROC BSCTERM - XREF LIST BEGINS.
  8253. #
  8254. XREF
  8255. BEGIN
  8256. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  8257. END
  8258. #
  8259. ****
  8260. #
  8261. ITEM I; # SCRATCH ITEM -- POINTS TO CURRNT VAL-DEC#
  8262. ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
  8263. SWITCH BSCTJUMP NEXT$PARAM, # STIP #
  8264. NEXT$PARAM, # TC #
  8265. GEN$PARAM , # RIC #
  8266. GEN$PARAM , # CSET #
  8267. OTHERS , # TSPEED #
  8268. OTHERS , # CA #
  8269. HB$PARAM , # CO #
  8270. BSC$PARAM , # BCF #
  8271. BSC$PARAM , # MREC #
  8272. OTHERS , # W #
  8273. OTHERS , # CTYP #
  8274. OTHERS , # NCIR #
  8275. OTHERS , # NEN #
  8276. OTHERS , # COLLECT #
  8277. OTHERS , # XAUTO #
  8278. OTHERS , # DT #
  8279. OTHERS , # SDT #
  8280. OTHERS , # TA #
  8281. OTHERS , # ABL #
  8282. OTHERS , # DBZ #
  8283. OTHERS , # UBZ #
  8284. OTHERS , # DBL #
  8285. OTHERS , # UBL #
  8286. OTHERS , # XBZ #
  8287. OTHERS , # DO #
  8288. OTHERS , # STREAM #
  8289. OTHERS , # HN #
  8290. OTHERS , # AUTOLOG #
  8291. OTHERS , # AUTOCON #
  8292. OTHERS , # PRI #
  8293. OTHERS , # P80 #
  8294. OTHERS , # P81 #
  8295. OTHERS , # P82 #
  8296. OTHERS , # P83 #
  8297. OTHERS , # P84 #
  8298. OTHERS , # P85 #
  8299. OTHERS , # P86 #
  8300. OTHERS , # P87 #
  8301. OTHERS , # P88 #
  8302. OTHERS , # P89 #
  8303. OTHERS , # AB #
  8304. OTHERS , # BR #
  8305. OTHERS , # BS #
  8306. OTHERS , # B1 #
  8307. OTHERS , # B2 #
  8308. OTHERS , # CI #
  8309. OTHERS , # CN #
  8310. OTHERS , # CT #
  8311. OTHERS , # DLC #
  8312. OTHERS , # DLTO #
  8313. OTHERS , # DLX #
  8314. OTHERS , # EP #
  8315. OTHERS , # IN #
  8316. OTHERS , # LI #
  8317. OTHERS , # OP #
  8318. OTHERS , # PA #
  8319. OTHERS , # PG #
  8320. OTHERS , # PL #
  8321. OTHERS , # PW #
  8322. OTHERS , # SE #
  8323. OTHERS , # FA #
  8324. OTHERS , # XLC #
  8325. OTHERS , # XLX #
  8326. OTHERS , # XLTO #
  8327. OTHERS , # ELO #
  8328. OTHERS , # ELX #
  8329. OTHERS , # ELR #
  8330. OTHERS , # EBO #
  8331. OTHERS , # EBR #
  8332. OTHERS , # CP #
  8333. OTHERS , # IC #
  8334. OTHERS , # OC #
  8335. OTHERS , # LK #
  8336. OTHERS , # EBX #
  8337. OTHERS , # HD #
  8338. OTHERS , # MC #
  8339. OTHERS , # XLY #
  8340. OTHERS , # EOF #
  8341. OTHERS ; # PAD #
  8342. # #
  8343. # BSCTERM CODE BEGINS HERE #
  8344. # #
  8345. FOR I=2 STEP 1 UNTIL STWC[0]
  8346. DO # FOR EACH VALUE DECLARATION ENTRY #
  8347. BEGIN
  8348. SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
  8349. GOTO BSCTJUMP[SWITCH$ID]; # GO TO APPROPRIATE PARAGRAPH #
  8350. GEN$PARAM:
  8351. GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]); # GENERAL PARAMETERS #
  8352. GOTO NEXT$PARAM;
  8353. HB$PARAM:
  8354. IF AUTO$REC # IF TERMINAL IS ON A AUTO-REC LINE #
  8355. THEN
  8356. BEGIN
  8357. HBTRMPR(SWITCH$ID,STWORD[I],STLNUM[0]);# HASP/BSC PARAMETERS #
  8358. END
  8359. ELSE # NON-AUTO-REC LINE #
  8360. BEGIN # FLAG ERROR -- VALID FOR AUTO-REC ONLY #
  8361. NDLEM2(ERR107,STLNUM[0],KWDNAME[SWITCH$ID]);
  8362. END
  8363. GOTO NEXT$PARAM;
  8364. BSC$PARAM:
  8365. IF CRNT$STIP NQ STIP"$2780" AND
  8366. CRNT$STIP NQ STIP"UNKNOWN"
  8367. THEN # IF STIP IS NOT 2780 OR UNKNOWN #
  8368. BEGIN # FLAG ERROR -- VALID ON 2780 TERMS ONLY #
  8369. NDLEM2(ERR108,STLNUM[0],KWDNAME[SWITCH$ID]);
  8370. END
  8371. ELSE # MUST BE 2780 OR UNKNOWN #
  8372. BEGIN
  8373. BTRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]);# CHECK BSC PARAMETER #
  8374. END
  8375. GOTO NEXT$PARAM;
  8376. OTHERS: # ALL OTHER PARAMETERS FLAG AS INVALID #
  8377. IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
  8378. THEN
  8379. BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
  8380. NDLEM2(ERR135,STLNUM[0],KWDNAME[SWITCH$ID]);
  8381. END
  8382. ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
  8383. BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
  8384. NDLEM2(ERR106,STLNUM[0],KWDNAME[SWITCH$ID]);
  8385. END
  8386. IF STKWID[I] EQ KID"PAD"
  8387. THEN
  8388. BEGIN # STATEMENT TABLE #
  8389. I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
  8390. END
  8391. NEXT$PARAM: # GO TO NEXT PARAMETER #
  8392. END
  8393. IF NOT RIC$USED # IF RIC NOT SPECIFIED #
  8394. THEN
  8395. BEGIN
  8396. RIC$FLAG = TRUE; # DEFAULT RIC VALUE #
  8397. END
  8398. RETURN; # **** RETURN **** #
  8399. END # BSCTERM #
  8400. CONTROL EJECT;
  8401. PROC BTRMPRM(BTRM$ID,BTRM$WORD,BTRM$LINE);
  8402. BEGIN
  8403. *IF,DEF,IMS
  8404. #
  8405. ** BTRMPRM -- CHECKS BSC TERMINAL PARAMETERS.
  8406. *
  8407. * D.K. ENDO 81/12/01
  8408. *
  8409. * THIS PROCEDURE PARAMETERS THAT CAN ONLY BE SPECIFIED FOR BISYNC
  8410. * TERMINALS.
  8411. *
  8412. * PROC BTRMPRM(BTRM$ID,BTRM$WORD,BTRM$LINE)
  8413. *
  8414. * ENTRY BTRM$ID = NUMBER IDENTIFYING KEYWORD.
  8415. * BTRM$WORD = VALUE DECLARATION ENTRY.
  8416. * BTRM$LINE = CURRENT SOURCE LINE NUMBER.
  8417. *
  8418. * EXIT NONE.
  8419. *
  8420. * METHOD
  8421. *
  8422. * SELECT CASE THAT APPLIES,
  8423. * CASE 1(BCF):
  8424. * IF VALUE IS O.K.
  8425. * IF VALUE IS -YES-
  8426. * SET BCF FLAG.
  8427. * CASE 2(MREC):
  8428. * IF VALUE IS O.K.,
  8429. * CHECK IF VALUE IS IN RANGE.
  8430. * IF IN RANGE,
  8431. * SAVE CURRENT MREC VALUE
  8432. *
  8433. #
  8434. *ENDIF
  8435. ITEM BTRM$ID; # KEYWORD I.D. FOR SWITCH #
  8436. ITEM BTRM$LINE; # STATEMENT LINE NUMBER #
  8437. ARRAY BTRM$WORD [0:0] S(1); # VALUE DECLARATION ENTRY #
  8438. BEGIN
  8439. ITEM BTRM$KWID (0,0,9); # KEYWORD I.D. FROM PASS 1 #
  8440. ITEM BTRM$VLERR B(0,17,1); # VALUE ERROR FLAG #
  8441. ITEM BTRM$VALNAM C(0,18,7); # CHARACTER VALUE #
  8442. ITEM BTRM$VALNUM (0,18,42); # INTEGER VALUE #
  8443. END
  8444. #
  8445. **** PROC BTRMPRM - XREF LIST BEGINS.
  8446. #
  8447. XREF
  8448. BEGIN
  8449. PROC NDLCKRG; # CHECK IF VALUE IS WITHIN RANGE #
  8450. END
  8451. #
  8452. ****
  8453. #
  8454. ITEM BTRM$STAT B; # RETURNED STATUS FROM RANGE CHECK PROC #
  8455. SWITCH BTRMJUMP , # STIP #
  8456. , # TC #
  8457. , # RIC #
  8458. , # CSET #
  8459. , # TSPEED #
  8460. , # CA #
  8461. , # CO #
  8462. BCF, # BCF #
  8463. MREC; # MREC #
  8464. # #
  8465. # BTRMPRM CODE BEGINS HERE #
  8466. # #
  8467. GOTO BTRMJUMP[BTRM$ID]; # CHECK GIVEN VALUE DECLARATION #
  8468. BCF:
  8469. IF NOT BTRM$VLERR[0] # IF VALUE IS O.K. #
  8470. THEN
  8471. BEGIN
  8472. IF BTRM$VALNAM[0] EQ "YES" # IF VALUE IS -YES- #
  8473. THEN
  8474. BEGIN
  8475. BCF$FLAG = TRUE; # SET BCF FLAG #
  8476. END
  8477. END
  8478. GOTO NEXT$PARAM;
  8479. MREC:
  8480. IF NOT BTRM$VLERR[0] # IF VALUE IS O.K. #
  8481. THEN
  8482. BEGIN # CHECK IF VALUE IS WITHIN RANGE#
  8483. IF CRNT$TIP EQ TIP"USER" # IF USER TIP IS USER DEFINED #
  8484. THEN
  8485. BEGIN
  8486. USR$RANGE(BTRM$VALNUM[0],USR$WID1,NUM"DEC",BTRM$STAT);
  8487. # RANGE #
  8488. END
  8489. ELSE
  8490. BEGIN
  8491. NDLCKRG(BTRM$KWID[0],BTRM$VALNUM[0],BTRM$STAT);
  8492. END
  8493. IF BTRM$STAT # IF WITHIN RANGE #
  8494. THEN
  8495. BEGIN
  8496. CRNT$MREC = BTRM$VALNUM[0]; # SAVE MREC VALUE #
  8497. END
  8498. END
  8499. GOTO NEXT$PARAM;
  8500. NEXT$PARAM:
  8501. RETURN; # **** RETURN **** #
  8502. END # BTRMPRM #
  8503. CONTROL EJECT;
  8504. PROC GENTERM(GTRM$ID,GTRM$WORD,GTRM$LINE);
  8505. BEGIN
  8506. *IF,DEF,IMS
  8507. #
  8508. ** GENTERM -- CHECK GENERAL TERMINAL PARAMETERS.
  8509. *
  8510. * D.K. ENDO 81/12/01
  8511. *
  8512. * THIS PROCEDURE CHECKS TERMINAL PARAMETERS THAT ARE LEGAL FOR ALL
  8513. * TIPTYPES.
  8514. *
  8515. * PROC GENTERM(GTRM$ID,GTRM$WORD,GTRM$LINE)
  8516. *
  8517. * ENTRY GTRM$ID = NUMBER IDENTIFYING KEYWORD.
  8518. * GTRM$WORD = VALUE DECLARATION ENTRY.
  8519. * GTRM$LINE = CURRENT SOURCE LINE NUMBER.
  8520. *
  8521. * EXIT NONE.
  8522. *
  8523. * METHOD
  8524. *
  8525. * SELECT CASE THAT APPLIES,
  8526. * CASE 1(CSET):
  8527. * IF VALUE IS O.K.,
  8528. * IF VALUE IS NOT -AUTOREC-,
  8529. * THEN,
  8530. * MAP CSET NUMERIC VALUE.
  8531. * IF TIPTYPE AND CSET IS NOT -USER-
  8532. * IF TC IS NOT USER OR UNKNOWN,
  8533. * THEN,
  8534. * IF TC AND CSET ARE NOT COMPATIBLE,
  8535. * FLAG ERROR.
  8536. * OTHERWISE,
  8537. * IF STIP IS NOT UNKNOWN,
  8538. * THEN,
  8539. * IF STIP AND CSET ARE NOT COMPATIBLE,
  8540. * FLAG ERROR.
  8541. * OTHERWISE,
  8542. * IF TIPTYPE IS NOT UNKNOWN,
  8543. * IF TIPTYPE AND CSET ARE NOT COMPATIBLE,
  8544. * FLAG ERROR.
  8545. * PUT CSET VALUE IN CURRENT TERMINAL ENTRY.
  8546. * OTHERWISE,
  8547. * IF LINE IS NOT AUTO-REC
  8548. * FLAG ERROR -- AUTOREC VALUE INVALID.
  8549. * CASE 2(RIC):
  8550. * IF VALUE IS O.K.,
  8551. * IF VALUE IS -YES-,
  8552. * SET RIC FLAG.
  8553. *
  8554. #
  8555. *ENDIF
  8556. ITEM GTRM$ID; # KEYWORD I.D. FOR SWITCH #
  8557. ITEM GTRM$LINE; # STATEMENT LINE NUMBER #
  8558. ARRAY GTRM$WORD [0:0] S(1); # VALUE DECLARATION ENTRY #
  8559. BEGIN
  8560. ITEM GTRM$VLERR B(0,17,1); # VALUE ERROR FLAG #
  8561. ITEM GTRM$VALNAM C(0,18,7); # CHARACTER VALUE #
  8562. ITEM GTRM$VALNUM (0,18,42); # INTEGER VALUE #
  8563. END
  8564. #
  8565. **** PROC GENTERM - XREF LIST BEGINS.
  8566. #
  8567. XREF
  8568. BEGIN
  8569. PROC NDLEM2; # MAKES ENTRY IN ERROR FILE #
  8570. END
  8571. #
  8572. ****
  8573. #
  8574. ITEM I; # SCRATCH ITEM #
  8575. DEF MXCSET # 10 #; # MAXIMUM NUMBER OF CODE SETS #
  8576. ARRAY CSET$TABLE [1:MXCSET] S(1);
  8577. BEGIN
  8578. ITEM CSET$VAL C(0,0,7) = ["BCD", # CHARACTER VALUE #
  8579. "ASCII",
  8580. "APLTP",
  8581. "APLBP",
  8582. "EBCD",
  8583. "EBCDAPL",
  8584. "CORRES",
  8585. "CORAPL",
  8586. "EBCDIC",
  8587. "CSET15"
  8588. ];
  8589. ITEM CSET$NUMV (0,42,18) = [1, # BCD -- INTEGER VALUE #
  8590. 2, # ASCII #
  8591. 3, # APLTP #
  8592. 4, # APLBP #
  8593. 5, # EBCD #
  8594. 6, # EBCDAPL #
  8595. 7, # CORRES #
  8596. 8, # CORAPL #
  8597. 9, # EBCDIC #
  8598. 15 # CSET15 #
  8599. ];
  8600. END
  8601. ARRAY CSET$ALLOWED [1:15] S(1); # CODE SET ALLOWED MAP -- BIT #
  8602. BEGIN # SET IF PARAM VALUE IS COMPAT#
  8603. ITEM TC$AMAP U(0,0,30) = [O"0002040000", # BCD -- AND TC VALUE #
  8604. O"3573646000", # ASCII #
  8605. O"3570000000", # APLTP #
  8606. O"3570000000", # APLBP #
  8607. O"0200000000", # EBCD #
  8608. O"0200000000", # EBCDAPL #
  8609. O"0200000000", # CORRES #
  8610. O"0200000000", # CORAPL #
  8611. O"0004131000", # EBCDIC #
  8612. ,,,,,
  8613. O"3377770000" # CSET15 #
  8614. ];
  8615. ITEM STIP$AMAP U(0,30,15) = [O"20000", # BCD -- AND STIP VAL #
  8616. O"32340", # ASCII #
  8617. O"02000", # APLTP #
  8618. O"02000", # APLBP #
  8619. O"04000", # EBCD #
  8620. O"04000", # EBCDAPL #
  8621. O"04000", # CORRES #
  8622. O"04000", # CORAPL #
  8623. O"01430", # EBCDIC #
  8624. ,,,,,
  8625. O"37770" # CSET15 #
  8626. ];
  8627. ITEM TTYP$AMAP U(0,45,15) =[O"10200", # BCD -- AND TIPTYPE #
  8628. O"32200", # ASCII #
  8629. O"20200", # APLTP #
  8630. O"20200", # APLBP #
  8631. O"20200", # EBCD #
  8632. O"20200", # EBCDAPL #
  8633. O"20200", # CORRES #
  8634. O"20200", # CORAPL #
  8635. O"05600", # EBCDIC #
  8636. ,,,,,
  8637. O"37600" # CSET15 #
  8638. ];
  8639. END
  8640. SWITCH GTRMJUMP , # STIP #
  8641. , # TC #
  8642. RIC , # RIC #
  8643. CSET$; # CSET #
  8644. CONTROL EJECT;
  8645. # #
  8646. # GTRMPRM CODE BEGINS HERE #
  8647. # #
  8648. GOTO GTRMJUMP[GTRM$ID]; # PROCESS GIVEN PARAMETER #
  8649. CSET$:
  8650. CSET$USED = TRUE; # SET CSET SPECIFIED FLAG #
  8651. IF NOT GTRM$VLERR[0] # IF VALUE IS O.K. #
  8652. THEN
  8653. BEGIN
  8654. IF GTRM$VALNAM[0] NQ "AUTOREC" # IF VALUE IS NOT AUTO#
  8655. THEN
  8656. BEGIN
  8657. FOR I=1 STEP 1 UNTIL MXCSET # SEARCH FOR CSET IN #
  8658. DO # TABLE #
  8659. BEGIN
  8660. IF GTRM$VALNAM[0] EQ CSET$VAL[I] # IF CSET FOUND #
  8661. THEN
  8662. BEGIN
  8663. CRNT$CSET = CSET$NUMV[I]; # SAVE CSET I.D. #
  8664. END
  8665. END
  8666. IF CRNT$TIP NQ TIP"USER" AND # IF TIPTYPE IS NOT #
  8667. CRNT$CSET NQ CSET"USER" # USER AND CSET IS #
  8668. THEN # NOT USER #
  8669. BEGIN
  8670. IF CRNT$TC NQ TC"USER" AND # IF TC IS NOT USER OR#
  8671. CRNT$TC NQ TC"UNKNOWN" # UNKNOWN, #
  8672. THEN # COMPARE TC AGAINST #
  8673. BEGIN # CSET #
  8674. IF B<CRNT$TC,1>TC$AMAP[CRNT$CSET] NQ 1
  8675. THEN # IF NOT COMPATIBLE #
  8676. BEGIN # FLAG ERROR -- NOT COMPATIBLE#
  8677. NDLEM2(ERR110,GTRM$LINE,GTRM$VALNAM[0]);
  8678. END
  8679. END
  8680. ELSE # TC IS USER OR UNKNOWN #
  8681. BEGIN # CHECK CSET AGAINST STIP #
  8682. IF CRNT$STIP NQ STIP"UNKNOWN"
  8683. THEN # IF STIP IS NOT UNKNOWN #
  8684. BEGIN
  8685. IF B<CRNT$STIP,1>STIP$AMAP[CRNT$CSET] NQ 1
  8686. THEN # IF NOT COMPATIBLE #
  8687. BEGIN # FLAG ERROR -- NOT COMPATIBLE#
  8688. NDLEM2(ERR111,GTRM$LINE,GTRM$VALNAM[0]);
  8689. END
  8690. END
  8691. ELSE # STIP IS UNKNOWN #
  8692. BEGIN # CHECK CSET AGAINST TIPTYPE #
  8693. IF CRNT$TIP NQ TIP"UNKNOWN"
  8694. THEN # IF TIPTYPE IS NOT UNKNOWN #
  8695. BEGIN # CHECK CSET AGAINST TIPTYPE #
  8696. IF B<CRNT$TIP,1>TTYP$AMAP[CRNT$CSET] NQ 1
  8697. THEN # IF NOT COMPATIBLE #
  8698. BEGIN # FLAG ERROR -- NOT COMPATIBLE#
  8699. NDLEM2(ERR112,GTRM$LINE,GTRM$VALNAM);
  8700. END
  8701. END
  8702. END
  8703. END
  8704. END
  8705. TECD[CRNT$TERM+1] = CRNT$CSET; # SAVE CSET VALUE #
  8706. END
  8707. ELSE # CSET VALUE IS AUTO-REC #
  8708. BEGIN
  8709. IF NOT AUTO$REC # IF FIXED CONFIGURED LINE #
  8710. THEN
  8711. BEGIN # FLAG ERROR -- AUTOREC NOT VALID #
  8712. NDLEM2(ERR113,GTRM$LINE," ");
  8713. END
  8714. END
  8715. END
  8716. GOTO NEXT$PARAM;
  8717. RIC:
  8718. RIC$USED = TRUE; # SET RIC SPECIFIED FLAG #
  8719. IF NOT GTRM$VLERR[0] # IF VALUE IS O.K. #
  8720. THEN
  8721. BEGIN
  8722. IF GTRM$VALNAM[0] EQ "YES"
  8723. THEN # IF VALUE IS -YES- #
  8724. BEGIN
  8725. RIC$FLAG = TRUE; # SET RIC FLAG #
  8726. END
  8727. END
  8728. GOTO NEXT$PARAM;
  8729. NEXT$PARAM:
  8730. RETURN; # **** RETURN **** #
  8731. END # GTRMPRM #
  8732. CONTROL EJECT;
  8733. PROC HBTRMPR(HBTRM$ID,HBTRM$WORD,HBTRM$LINE);
  8734. BEGIN
  8735. *IF,DEF,IMS
  8736. #
  8737. ** HBTRMPR -- CHECK HASP/BSC TERMINAL PARAMETERS
  8738. *
  8739. * D.K. ENDO 81/12/01
  8740. *
  8741. * THIS PROCEDURE CHECKS PARAMETERS THAT ARE ONLY LEGAL FOR HASP
  8742. * AND BSC TERMINALS.
  8743. *
  8744. * PROC HBTRMPR(HBTRM$ID,HBTRM$WORD,HBTRM$LINE)
  8745. *
  8746. * ENTRY HBTRM$ID = NUMBER IDENTIFYING KEYWORD.
  8747. * HBTRM$WORD = VALUE DECLARATION ENTRY.
  8748. * HBTRM$LINE = CURRENT SOURCE LINE NUMBER.
  8749. *
  8750. * EXIT NONE.
  8751. *
  8752. * METHOD
  8753. *
  8754. * IF VALUE IS O.K.,
  8755. * IF VALUE IS NOT -AUTOREC-,
  8756. * THEN,
  8757. * CHECK IF VALUE IS WITHIN RANGE.
  8758. * IF IN RANGE,
  8759. * PUT CO VALUE IN CURRENT TERMINAL ENTRY.
  8760. * OTHERWISE,
  8761. * IF LINE IS NOT AUTO-REC
  8762. * FLAG ERROR -- AUTOREC VALUE IS INVALID.
  8763. *
  8764. #
  8765. *ENDIF
  8766. ITEM HBTRM$ID; # KEYWORD I.D. FOR SWITCH #
  8767. ITEM HBTRM$LINE; # STATEMENT LINE NUMBER #
  8768. ARRAY HBTRM$WORD [0:0] S(1); # VALUE DECLARATION ENTRY #
  8769. BEGIN
  8770. ITEM HBTRM$KWID (0,0,9); # KEYWORD I.D. FROM PASS 1 #
  8771. ITEM HBTRM$VLERR B(0,17,1); # VALUE ERROR FLAG #
  8772. ITEM HBTRM$VALNAM (0,18,7); # CHARACTER VALUE #
  8773. ITEM HBTRM$VALNUM (0,18,42); # INTEGER VALUE #
  8774. END
  8775. #
  8776. **** PROC HBTRMPR - XREF LIST BEGINS.
  8777. #
  8778. XREF
  8779. BEGIN
  8780. PROC NDLCKRG; # CHECKS IF VALUE IS WITHIN RANGE #
  8781. PROC NDLEM2; # MAKES ENTRIES IN PASS 2 ERROR FILE #
  8782. END
  8783. #
  8784. ****
  8785. #
  8786. ITEM HBTRM$STAT B; # RETURNED STATUS FROM RANGE CHECK PROC #
  8787. # #
  8788. # HBTRMPR CODE BEGINS HERE #
  8789. # #
  8790. IF NOT HBTRM$VLERR[0] # IF VALUE IS O.K. #
  8791. THEN
  8792. BEGIN # IF VALUE IS NOT AUTOREC #
  8793. IF HBTRM$VALNAM[0] NQ "AUTOREC"
  8794. THEN
  8795. BEGIN # CHECK IF VALUE IS WITHIN RANGE#
  8796. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  8797. THEN
  8798. BEGIN
  8799. USR$RANGE(HBTRM$VALNUM[0],USR$WID1,NUM"HEX",HBTRM$STAT);
  8800. # USER #
  8801. # RANGE #
  8802. END
  8803. ELSE
  8804. BEGIN
  8805. NDLCKRG(HBTRM$KWID,HBTRM$VALNUM[0],HBTRM$STAT);
  8806. END
  8807. IF HBTRM$STAT # IF WITHIN RANGE #
  8808. THEN
  8809. BEGIN # PUT CO VALUE IN TERM ENTRY #
  8810. TEA1[CRNT$TERM + 1] = HBTRM$VALNUM[0];
  8811. END
  8812. END
  8813. ELSE
  8814. BEGIN # VALUE IS AUTOREC #
  8815. IF NOT AUTO$REC # IF NOT A FIXED CONFIGURED LINE #
  8816. THEN
  8817. BEGIN # FLAG ERROR -- AUTOREC NOT VALID #
  8818. NDLEM2(ERR113,HBTRM$LINE," ");
  8819. END
  8820. END
  8821. END
  8822. RETURN; # **** RETURN **** #
  8823. END # HBTRMPR #
  8824. CONTROL EJECT;
  8825. PROC HSPTERM;
  8826. BEGIN
  8827. *IF,DEF,IMS
  8828. #
  8829. ** HSPTERM -- CHECK TERMINAL PARAMETERS LEGAL FOR HASP TIP.
  8830. *
  8831. * D.K. ENDO 81/12/01
  8832. *
  8833. * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
  8834. * ON THE STATEMENT.
  8835. *
  8836. * PROC HSPTERM
  8837. *
  8838. * ENTRY NONE.
  8839. *
  8840. * EXIT NONE.
  8841. *
  8842. * METHOD
  8843. *
  8844. * FOR EACH VALUE DECLARATION,
  8845. * SELECT CASE THAT APPLIES,
  8846. * CASE 1(RIC,CSET):
  8847. * CHECK GENERAL PARAMETER.
  8848. * CASE 2(CO):
  8849. * IF AUTO-REC LINE,
  8850. * THEN,
  8851. * CHECK HASP/BSC PARAMETER.
  8852. * OTHERWISE,
  8853. * FLAG ERROR -- ALLOWED ON AUTO-REC LINE ONLY.
  8854. * CASE 3(TSPEED,CA,BCF,MREC,W,CTYP,NCIR,NEN,COLLECT,EOF):
  8855. * FLAG ERROR -- INVALID PARAMETER.
  8856. *
  8857. #
  8858. *ENDIF
  8859. #
  8860. **** PROC HSPTERM - XREF LIST BEGINS.
  8861. #
  8862. XREF
  8863. BEGIN
  8864. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  8865. END
  8866. #
  8867. ****
  8868. #
  8869. ITEM I; # SCRATCH ITEM #
  8870. ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
  8871. SWITCH HSPTJUMP NEXT$PARAM, # STIP #
  8872. NEXT$PARAM, # TC #
  8873. GEN$PARAM , # RIC #
  8874. GEN$PARAM , # CSET #
  8875. OTHERS , # TSPEED #
  8876. OTHERS , # CA #
  8877. HB$PARAM , # CO #
  8878. OTHERS , # BCF #
  8879. OTHERS , # MREC #
  8880. OTHERS , # W #
  8881. OTHERS , # CTYP #
  8882. OTHERS , # NCIR #
  8883. OTHERS , # NEN #
  8884. OTHERS , # COLLECT #
  8885. OTHERS , # XAUTO #
  8886. OTHERS , # DT #
  8887. OTHERS , # SDT #
  8888. OTHERS , # TA #
  8889. OTHERS , # ABL #
  8890. OTHERS , # DBZ #
  8891. OTHERS , # UBZ #
  8892. OTHERS , # DBL #
  8893. OTHERS , # UBL #
  8894. OTHERS , # XBZ #
  8895. OTHERS , # DO #
  8896. OTHERS , # STREAM #
  8897. OTHERS , # HN #
  8898. OTHERS , # AUTOLOG #
  8899. OTHERS , # AUTOCON #
  8900. OTHERS , # PRI #
  8901. OTHERS , # P80 #
  8902. OTHERS , # P81 #
  8903. OTHERS , # P82 #
  8904. OTHERS , # P83 #
  8905. OTHERS , # P84 #
  8906. OTHERS , # P85 #
  8907. OTHERS , # P86 #
  8908. OTHERS , # P87 #
  8909. OTHERS , # P88 #
  8910. OTHERS , # P89 #
  8911. OTHERS , # AB #
  8912. OTHERS , # BR #
  8913. OTHERS , # BS #
  8914. OTHERS , # B1 #
  8915. OTHERS , # B2 #
  8916. OTHERS , # CI #
  8917. OTHERS , # CN #
  8918. OTHERS , # CT #
  8919. OTHERS , # DLC #
  8920. OTHERS , # DLTO #
  8921. OTHERS , # DLX #
  8922. OTHERS , # EP #
  8923. OTHERS , # IN #
  8924. OTHERS , # LI #
  8925. OTHERS , # OP #
  8926. OTHERS , # PA #
  8927. OTHERS , # PG #
  8928. OTHERS , # PL #
  8929. OTHERS , # PW #
  8930. OTHERS , # SE #
  8931. OTHERS , # FA #
  8932. OTHERS , # XLC #
  8933. OTHERS , # XLX #
  8934. OTHERS , # XLTO #
  8935. OTHERS , # ELO #
  8936. OTHERS , # ELX #
  8937. OTHERS , # ELR #
  8938. OTHERS , # EBO #
  8939. OTHERS , # EBR #
  8940. OTHERS , # CP #
  8941. OTHERS , # IC #
  8942. OTHERS , # OC #
  8943. OTHERS , # LK #
  8944. OTHERS , # EBX #
  8945. OTHERS , # HD #
  8946. OTHERS , # MC #
  8947. OTHERS , # XLY #
  8948. OTHERS , # EOF #
  8949. OTHERS ; # PAD #
  8950. # #
  8951. # HSPTERM CODE BEGINS HERE #
  8952. # #
  8953. FOR I=2 STEP 1 UNTIL STWC[0]
  8954. DO # FOR EACH VALUE-DECLARATION ENTRY #
  8955. BEGIN
  8956. SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
  8957. GOTO HSPTJUMP[SWITCH$ID]; # GO TO APPROPRIATE PARAGRAPH #
  8958. GEN$PARAM:
  8959. GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]); # GENERAL PARAMETERS #
  8960. GOTO NEXT$PARAM;
  8961. HB$PARAM:
  8962. IF AUTO$REC # IF ON AUTO-REC LINE #
  8963. THEN
  8964. BEGIN # CHECK HASP/BISYNC PARAMETER #
  8965. HBTRMPR(SWITCH$ID,STWORD[I],STLNUM[0]);
  8966. END
  8967. ELSE # MUST BE ON NON-AUTO-REC LINE #
  8968. BEGIN # FLAG ERROR -- VALID FOR AUTO-REC ONLY #
  8969. NDLEM2(ERR107,STLNUM[0],KWDNAME[SWITCH$ID]);
  8970. END
  8971. GOTO NEXT$PARAM;
  8972. OTHERS: # ALL OTHER PARAMETERS FLAG AS INVALID #
  8973. IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
  8974. THEN
  8975. BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
  8976. NDLEM2(ERR135,STLNUM[0],KWDNAME[SWITCH$ID]);
  8977. END
  8978. ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
  8979. BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
  8980. NDLEM2(ERR106,STLNUM[0],KWDNAME[SWITCH$ID]);
  8981. END
  8982. IF STKWID[I] EQ KID"PAD"
  8983. THEN
  8984. BEGIN # STATEMENT TABLE #
  8985. I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
  8986. END
  8987. NEXT$PARAM: # GO TO NEXT PARAMETER #
  8988. END
  8989. IF NOT RIC$USED # IF RIC NOT SPECIFIED #
  8990. THEN
  8991. BEGIN
  8992. RIC$FLAG = TRUE; # DEFAULT RIC VALUE TO YES #
  8993. END
  8994. RETURN; # **** RETURN **** #
  8995. END # HSPTERM #
  8996. CONTROL EJECT;
  8997. PROC MD4TERM;
  8998. BEGIN
  8999. *IF,DEF,IMS
  9000. #
  9001. ** MD4TERM -- CHECK TERMINAL PARAMETERS LEGAL FOR MODE4 TIP.
  9002. *
  9003. * D.K. ENDO 81/12/01
  9004. *
  9005. * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
  9006. * ON THE STATEMENT.
  9007. *
  9008. * PROC MD4TERM
  9009. *
  9010. * ENTRY NONE.
  9011. *
  9012. * EXIT NONE.
  9013. *
  9014. * METHOD
  9015. *
  9016. * FOR EACH VALUE DECLARATION,
  9017. * SELECT CASE THAT APPLIES,
  9018. * CASE 1(RIC,CSET):
  9019. * CHECK GENERAL PARAMETER.
  9020. * CASE 2(CA)
  9021. * CHECK MODE4 PARAMETER.
  9022. * CASE 3(TSPEED,CO,BCF,MREC,W,CTYP,NCIR,NEN,COLLECT):
  9023. * FLAG ERROR -- INVALID PARAMETER.
  9024. * CASE 4(EOF):
  9025. * SET EOF FLAG TO BE TRUE IF VALUE IS "YES".
  9026. * IF CA WAS NOT SPECIFIED AND NOT AN AUTO-REC LINE.
  9027. * FLAG ERROR -- REQUIRE PARAMETER MISSING.
  9028. *
  9029. #
  9030. *ENDIF
  9031. #
  9032. **** PROC MD4TERM - XREF LIST BEGINS.
  9033. #
  9034. XREF
  9035. BEGIN
  9036. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  9037. END
  9038. #
  9039. ****
  9040. #
  9041. ITEM I; # SCRATCH ITEM #
  9042. ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
  9043. SWITCH MD4TJUMP NEXT$PARAM, # STIP #
  9044. NEXT$PARAM, # TC #
  9045. GEN$PARAM , # RIC #
  9046. GEN$PARAM , # CSET #
  9047. OTHERS , # TSPEED #
  9048. MD4$PARAM , # CA #
  9049. OTHERS , # CO #
  9050. OTHERS , # BCF #
  9051. OTHERS , # MREC #
  9052. OTHERS , # W #
  9053. OTHERS , # CTYP #
  9054. OTHERS , # NCIR #
  9055. OTHERS , # NEN #
  9056. OTHERS , # COLLECT #
  9057. OTHERS , # XAUTO #
  9058. OTHERS , # DT #
  9059. OTHERS , # SDT #
  9060. OTHERS , # TA #
  9061. OTHERS , # ABL #
  9062. OTHERS , # DBZ #
  9063. OTHERS , # UBZ #
  9064. OTHERS , # DBL #
  9065. OTHERS , # UBL #
  9066. OTHERS , # XBZ #
  9067. OTHERS , # DO #
  9068. OTHERS , # STREAM #
  9069. OTHERS , # HN #
  9070. OTHERS , # AUTOLOG #
  9071. OTHERS , # AUTOCON #
  9072. OTHERS , # PRI #
  9073. OTHERS , # P80 #
  9074. OTHERS , # P81 #
  9075. OTHERS , # P82 #
  9076. OTHERS , # P83 #
  9077. OTHERS , # P84 #
  9078. OTHERS , # P85 #
  9079. OTHERS , # P86 #
  9080. OTHERS , # P87 #
  9081. OTHERS , # P88 #
  9082. OTHERS , # P89 #
  9083. OTHERS , # AB #
  9084. OTHERS , # BR #
  9085. OTHERS , # BS #
  9086. OTHERS , # B1 #
  9087. OTHERS , # B2 #
  9088. OTHERS , # CI #
  9089. OTHERS , # CN #
  9090. OTHERS , # CT #
  9091. OTHERS , # DLC #
  9092. OTHERS , # DLTO #
  9093. OTHERS , # DLX #
  9094. OTHERS , # EP #
  9095. OTHERS , # IN #
  9096. OTHERS , # LI #
  9097. OTHERS , # OP #
  9098. OTHERS , # PA #
  9099. OTHERS , # PG #
  9100. OTHERS , # PL #
  9101. OTHERS , # PW #
  9102. OTHERS , # SE #
  9103. OTHERS , # FA #
  9104. OTHERS , # XLC #
  9105. OTHERS , # XLX #
  9106. OTHERS , # XLTO #
  9107. OTHERS , # ELO #
  9108. OTHERS , # ELX #
  9109. OTHERS , # ELR #
  9110. OTHERS , # EBO #
  9111. OTHERS , # EBR #
  9112. OTHERS , # CP #
  9113. OTHERS , # IC #
  9114. OTHERS , # OC #
  9115. OTHERS , # LK #
  9116. OTHERS , # EBX #
  9117. OTHERS , # HD #
  9118. OTHERS , # MC #
  9119. OTHERS , # XLY #
  9120. EOF$ , # EOF #
  9121. OTHERS ; # PAD #
  9122. # #
  9123. # MD4TERM CODE BEGINS HERE #
  9124. # #
  9125. FOR I=2 STEP 1 UNTIL STWC[0]
  9126. DO # FOR EACH VALUE-DECLARATION ENTRY #
  9127. BEGIN
  9128. SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
  9129. GOTO MD4TJUMP[SWITCH$ID]; # GO TO APPROPRIATE PARAGRAPH #
  9130. GEN$PARAM:
  9131. GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]); # GENERAL PARAMETERS #
  9132. GOTO NEXT$PARAM;
  9133. MD4$PARAM:
  9134. MTRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]); # MODE4 PARAMETERS #
  9135. GOTO NEXT$PARAM;
  9136. EOF$: EOF$USED = TRUE; # SET EOF SPECIFIED TO TRUE #
  9137. CRNT$EOF = ( STVALNAM[I] EQ "YES" ); # IF YES THEN TRUE ELSE #
  9138. # FALSE #
  9139. GOTO NEXT$PARAM;
  9140.  
  9141. OTHERS: # ALL OTHER PARAMETERS FLAG AS INVALID #
  9142. IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
  9143. THEN
  9144. BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
  9145. NDLEM2(ERR135,STLNUM[0],KWDNAME[SWITCH$ID]);
  9146. END
  9147. ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
  9148. BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
  9149. NDLEM2(ERR106,STLNUM[0],KWDNAME[SWITCH$ID]);
  9150. END
  9151. IF STKWID[I] EQ KID"PAD"
  9152. THEN
  9153. BEGIN # STATEMENT TABLE #
  9154. I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
  9155. END
  9156. NEXT$PARAM: # GO TO NEXT PARAMETER #
  9157. END
  9158. IF NOT CA$USED AND # IF CA NOT SPECIFIED AND NOT #
  9159. NOT AUTO$REC # AN AUTO-REC LINE #
  9160. THEN
  9161. BEGIN # FLAG ERROR -- CA PARAMETER MISSING #
  9162. NDLEM2(ERR103,STLNUM[0],"CA");
  9163. END
  9164. RETURN; # **** RETURN **** #
  9165. END # MD4TERM #
  9166. CONTROL EJECT;
  9167. PROC MTRMPRM(MTRM$ID,MTRM$WORD,MTRM$LINE);
  9168. BEGIN
  9169. *IF,DEF,IMS
  9170. #
  9171. ** MTRMPRM -- CHECK MODE4 TERMINAL PARAMETERS.
  9172. *
  9173. * D.K. ENDO 81/12/01
  9174. *
  9175. * THIS PROCEDURE CHECKS PARAMETERS THAT ARE ONLY LEGAL FOR MODE4
  9176. * TERMINALS.
  9177. *
  9178. * PROC MTRMPRM(MTRM$ID,MTRM$WORD,MTRM$LINE)
  9179. *
  9180. * ENTRY MTRM$ID = NUMBER IDENTIFYING KEYWORD.
  9181. * MTRM$WORD = VALUE DECLARATION ENTRY.
  9182. * MTRM$LINE = CURRENT SOURCE LINE NUMBER.
  9183. *
  9184. * EXIT NONE.
  9185. *
  9186. * METHOD
  9187. *
  9188. * IF VALUE IS O.K.,
  9189. * IF VALUE IS NOT -AUTO-REC-,
  9190. * THEN,
  9191. * CHECK IF VALUE IS IN RANGE,
  9192. * IF IN RANGE,
  9193. * IF VALUE IS NOT UNIQUE,
  9194. * FLAG ERROR -- CA VALUE IS NOT UNIQUE.
  9195. * PUT CA VALUE IN CURRENT TERMINAL ENTRY.
  9196. * OTHERWISE,
  9197. * IF CURRENT LINE IS AUTO-REC,
  9198. * FLAG ERROR -- AUTOREC VALUE NOT VALID.
  9199. *
  9200. #
  9201. *ENDIF
  9202. ITEM MTRM$ID; # KEYWORD I.D. FOR SWITCH #
  9203. ITEM MTRM$LINE; # STATEMENT LINE NUMBER #
  9204. ARRAY MTRM$WORD [0:0] S(1); # VALUE DECLARATION ENTRY #
  9205. BEGIN
  9206. ITEM MTRM$KWID (0,0,9); # KEYWORD I.D. FROM PASS 1 #
  9207. ITEM MTRM$VLERR B(0,17,1); # VALUE ERROR FLAG #
  9208. ITEM MTRM$VALNAM C(0,18,7); # CHARACTER VALUE #
  9209. ITEM MTRM$VALNUM (0,18,42); # INTEGER VALUE #
  9210. END
  9211. #
  9212. **** PROC MTRMPRM - XREF LIST BEGINS.
  9213. #
  9214. XREF
  9215. BEGIN
  9216. PROC NDLCKRG; # CHECK IF VALUE IS IN RANGE #
  9217. PROC NDLEM2; # MAKE ENTRY IN PASS 2 ERROR FILE #
  9218. FUNC XCHD; # CONVERTS HEX VALUE TO HEX DISPLAY CODE #
  9219. END
  9220. #
  9221. ****
  9222. #
  9223. ITEM ITEMP; # INTEGER TEMPORARY #
  9224. DEF ZERO # 0 #; # ZERO = 0 #
  9225. DEF MAX$USR # 255 #; # MAXIMUM VALUE OF CA FOR USER #
  9226. ITEM MTRM$STAT B; # RETURNED STATUS FROM RANGE CHECK PROC #
  9227. CONTROL EJECT;
  9228. # #
  9229. # MTRMPRM CODE BEGINS HERE #
  9230. # #
  9231. CA$USED = TRUE; # SET CA SPECIFIED FLAG #
  9232. IF NOT MTRM$VLERR[0] # VALUE IS O.K. #
  9233. THEN
  9234. BEGIN
  9235. IF MTRM$VALNAM NQ "AUTOREC" # IF VALUE IS NOT AUTOREC #
  9236. THEN
  9237. BEGIN # CHECK IF CA IS WITHIN RANGE #
  9238. IF CRNT$TIP EQ TIP"USER"
  9239. THEN
  9240. BEGIN
  9241. MTRM$STAT = TRUE; # SET STATUS TO TRUE #
  9242. IF MTRM$VALNUM[0] LS ZERO OR
  9243. MTRM$VALNUM[0] GR MAX$USR
  9244. THEN
  9245. BEGIN
  9246. NDLEM2(ERR100,STLNUM[0],XCHD(MTRM$VALNUM[0]));
  9247. # GENERATE ERR100 #
  9248. MTRM$STAT = FALSE;
  9249. END
  9250. END
  9251. ELSE IF CRNT$TIP EQ TIP"$3270"
  9252. THEN
  9253. BEGIN # IF TIPTYPE IS 3270 #
  9254. MTRM$STAT = TRUE; # SET STATUS TO O.K. #
  9255. IF MTRM$VALNUM[0] LS 0 OR
  9256. MTRM$VALNUM[0] GR 31
  9257. THEN # VALUE IS OUT OF RANGE #
  9258. BEGIN # FLAG ERROR ---> #
  9259. NDLEM2(ERR100,STLNUM[0],XCHD(MTRM$VALNUM[0]));
  9260. MTRM$STAT = FALSE; # SET ERROR STATUS #
  9261. END
  9262. END
  9263. ELSE
  9264. BEGIN # ALL OTHER TIPTYPES #
  9265. NDLCKRG(MTRM$KWID[0],MTRM$VALNUM[0],MTRM$STAT);
  9266. # CALL THE CHECK RANGE PROC #
  9267. END
  9268. IF MTRM$STAT # IF IT IS WITHIN RANGE #
  9269. THEN
  9270. BEGIN # IF TIPTYPE IS NOT USER OR #
  9271. IF CRNT$TIP NQ TIP"USER" AND # UNKNOWN, AND NOT AN #
  9272. CRNT$TIP NQ TIP"UNKNOWN" AND # AUTO-REC LINE #
  9273. NOT AUTO$REC
  9274. THEN # CHECK FOR DUPLICATE CA VALUE #
  9275. BEGIN
  9276. IF CRNT$TIP NQ TIP"$3270"
  9277. THEN
  9278. ITEMP = MTRM$VALNUM[0] - X"70";
  9279. ELSE
  9280. ITEMP = MTRM$VALNUM[0];# FOR 3270 #
  9281. IF B<ITEMP,1>CA$MAP EQ 1
  9282. THEN # IF CA VALUE IS ALREADY USED #
  9283. BEGIN # FLAG ERROR -- DUPLICATE CA #
  9284. NDLEM2(ERR109,MTRM$LINE," ");
  9285. END
  9286. ELSE # CA VALUE HAS NOT BEEN USED #
  9287. BEGIN # SET FLAG FOR VALUE #
  9288. B<ITEMP,1>CA$MAP = 1;
  9289. END
  9290. END
  9291. TEA1[CRNT$TERM+1] = MTRM$VALNUM[0];
  9292. END
  9293. END
  9294. ELSE # VALUE IS AUTOREC #
  9295. BEGIN
  9296. IF NOT AUTO$REC # IF NOT AN AUTO-REC LINE #
  9297. THEN
  9298. BEGIN # FLAG ERROR -- AUTOREC NOT VALID #
  9299. NDLEM2(ERR113,MTRM$LINE," ");
  9300. END
  9301. END
  9302. END
  9303. RETURN; # **** RETURN **** #
  9304. END # MTRMPRM #
  9305. CONTROL EJECT;
  9306. PROC USRTERM;
  9307. BEGIN
  9308. *IF,DEF,IMS
  9309. #
  9310. ** USRTERM -- CHECK TERMINALS PARAMETERS LEGAL FOR USER TIP.
  9311. *
  9312. * D.K. ENDO 81/12/01
  9313. *
  9314. * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
  9315. * ON THE STATEMENT.
  9316. *
  9317. * PROC USRTERM
  9318. *
  9319. * ENTRY NONE.
  9320. *
  9321. * EXIT NONE.
  9322. *
  9323. * METHOD
  9324. *
  9325. * FOR EACH VALUE DECLARATION,
  9326. * SELECT CASE THAT APPLIES,
  9327. * CASE 1(RIC,CSET):
  9328. * CHECK GENERAL PARAMETER.
  9329. * CASE 2(TSPEED):
  9330. * CHECK ASYNC PARAMETER.
  9331. * CASE 3(CA):
  9332. * CHECK MODE4 PARAMETER.
  9333. * CASE 4(CO):
  9334. * CHECK HASP/BSC PARAMETER.
  9335. * CASE 5(EOF):
  9336. * SET EOF FLAG TO TRUE IF VALUE IS "YES".
  9337. * CASE 6(W,CTYP,NCIR,NEN,COLLECT):
  9338. * CHECK X.25 PARAMETER.
  9339. * CASE 7(BCF,MREC):
  9340. * CHECK BSC PARAMETER.
  9341. * IF NEN IS NOT USED,
  9342. * SET VALUE OF NEN TO BE CURRENT VALEU OF NCIR.
  9343. *
  9344. #
  9345. *ENDIF
  9346. ITEM I; # SCRATCH ITEM -- POINTS TO CURRNT VAL-DEC#
  9347. ITEM CTEMP C(10); # CHARACTER TEMPORARY #
  9348. ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
  9349. SWITCH USRTJUMP NEXT$PARAM, # STIP #
  9350. NEXT$PARAM, # TC #
  9351. GEN$PARAM , # RIC #
  9352. GEN$PARAM , # CSET #
  9353. ASY$PARAM , # TSPEED #
  9354. MD4$PARAM , # CA #
  9355. HB$PARAM , # CO #
  9356. BSC$PARAM , # BCF #
  9357. BSC$PARAM , # MREC #
  9358. X25$PARAM , # W #
  9359. X25$PARAM , # CTYP #
  9360. X25$PARAM , # NCIR #
  9361. X25$PARAM , # NEN #
  9362. X25$PARAM , # COLLECT #
  9363. NEXT$PARAM, # XAUTO #
  9364. NEXT$PARAM, # DT #
  9365. NEXT$PARAM, # SDT #
  9366. NEXT$PARAM, # TA #
  9367. NEXT$PARAM, # ABL #
  9368. NEXT$PARAM, # DBZ #
  9369. NEXT$PARAM, # UBZ #
  9370. NEXT$PARAM, # DBL #
  9371. NEXT$PARAM, # UBL #
  9372. NEXT$PARAM, # XBZ #
  9373. NEXT$PARAM, # DO #
  9374. NEXT$PARAM, # STREAM #
  9375. NEXT$PARAM, # HN #
  9376. NEXT$PARAM, # AUTOLOG #
  9377. NEXT$PARAM, # AUTOCON #
  9378. NEXT$PARAM, # PRI #
  9379. NEXT$PARAM, # P80 #
  9380. NEXT$PARAM, # P81 #
  9381. NEXT$PARAM, # P82 #
  9382. NEXT$PARAM, # P83 #
  9383. NEXT$PARAM, # P84 #
  9384. NEXT$PARAM, # P85 #
  9385. NEXT$PARAM, # P86 #
  9386. NEXT$PARAM, # P87 #
  9387. NEXT$PARAM, # P88 #
  9388. NEXT$PARAM, # P89 #
  9389. NEXT$PARAM, # AB #
  9390. NEXT$PARAM, # BR #
  9391. NEXT$PARAM, # BS #
  9392. NEXT$PARAM, # B1 #
  9393. NEXT$PARAM, # B2 #
  9394. NEXT$PARAM, # CI #
  9395. NEXT$PARAM, # CN #
  9396. NEXT$PARAM, # CT #
  9397. NEXT$PARAM, # DLC #
  9398. NEXT$PARAM, # DLTO #
  9399. NEXT$PARAM, # DLX #
  9400. NEXT$PARAM, # EP #
  9401. NEXT$PARAM, # IN #
  9402. NEXT$PARAM, # LI #
  9403. NEXT$PARAM, # OP #
  9404. NEXT$PARAM, # PA #
  9405. NEXT$PARAM, # PG #
  9406. NEXT$PARAM, # PL #
  9407. NEXT$PARAM, # PW #
  9408. NEXT$PARAM, # SE #
  9409. NEXT$PARAM, # FA #
  9410. NEXT$PARAM, # XLC #
  9411. NEXT$PARAM, # XLX #
  9412. NEXT$PARAM, # XLTO #
  9413. NEXT$PARAM, # ELO #
  9414. NEXT$PARAM, # ELX #
  9415. NEXT$PARAM, # ELR #
  9416. NEXT$PARAM, # EBO #
  9417. NEXT$PARAM, # EBR #
  9418. NEXT$PARAM, # CP #
  9419. NEXT$PARAM, # IC #
  9420. NEXT$PARAM, # OC #
  9421. NEXT$PARAM, # LK #
  9422. NEXT$PARAM, # EBX #
  9423. NEXT$PARAM, # HD #
  9424. NEXT$PARAM, # MC #
  9425. NEXT$PARAM, # XLY #
  9426. EOF$ , # EOF #
  9427. X25$PARAM ; # PAD #
  9428. # #
  9429. # USRTERM CODE BEGINS HERE #
  9430. # #
  9431. FOR I=2 STEP 1 UNTIL STWC[0]
  9432. DO # FOR EACH VALUE DECLARATION ENTRY #
  9433. BEGIN
  9434. SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
  9435. GOTO USRTJUMP[SWITCH$ID]; # GO TO APPROPRIATE PARAGRAPH #
  9436. GEN$PARAM: # CHECK GENERAL PARAMETERS #
  9437. GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]);
  9438. GOTO NEXT$PARAM;
  9439. ASY$PARAM: # CHECK ASYNC PARAMETERS #
  9440. ATRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]);
  9441. GOTO NEXT$PARAM;
  9442. MD4$PARAM: # CHECK MODE4 PARAMETERS #
  9443. MTRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]);
  9444. GOTO NEXT$PARAM;
  9445. EOF$: EOF$USED = TRUE; # SET EOF USED TO TRUE #
  9446. CRNT$EOF = (STVALNAM[I] EQ "YES");
  9447. GOTO NEXT$PARAM;
  9448.  
  9449. HB$PARAM: # CHECK HASP/BSC PARAMETERS #
  9450. HBTRMPR(SWITCH$ID,STWORD[I],STLNUM[0]);
  9451. GOTO NEXT$PARAM;
  9452. X25$PARAM: # CHECK X25 PARAMETERS #
  9453. XTRMPRM(SWITCH$ID,STMT$TABLE[I],STLNUM[0]);
  9454. IF STKWID[I] EQ KID"PAD"
  9455. THEN
  9456. BEGIN # STATEMENT TABLE #
  9457. I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
  9458. END
  9459. GOTO NEXT$PARAM;
  9460. BSC$PARAM: # CHECK BSC PARAMETERS #
  9461. BTRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]);
  9462. GOTO NEXT$PARAM;
  9463. NEXT$PARAM: # GO TO NEXT PARAMETER #
  9464. END
  9465. CTEMP = "STIP";
  9466. C$USR$PRM2(CRNT$STIP,CTEMP); # CHECK IF STIP IS USED #
  9467. CTEMP = "TC";
  9468. C$USR$PRM2(CRNT$TC,CTEMP); # CHECK IF TC IS SPECIFIED #
  9469. IF NOT NEN$USED
  9470. THEN # IF NEN IS NOT USED, CHECK THE #
  9471. BEGIN # CURRENT NEN VALUE AGAIN #
  9472. CRNT$NEN = CRNT$NCIR; # ASSUME LATEST VALUE OF NCIR #
  9473. END
  9474. RETURN; # **** RETURN **** #
  9475. END # USRTERM #
  9476. CONTROL EJECT;
  9477. PROC XTRMPRM(XTRM$ID,XTRM$WORD,XTRM$LINE);
  9478. BEGIN
  9479. *IF,DEF,IMS
  9480. #
  9481. ** XTRMPRM -- CHECK X.25 TERMINAL PARAMETER.
  9482. *
  9483. * D.K. ENDO 81/12/01
  9484. *
  9485. * THIS PROCEDURE CHECK PARAMETERS THAT ARE ONLY LEGAL FOR X.25
  9486. * TERMINALS.
  9487. *
  9488. * PROC XTRMPRM(XTRM$ID,XTRM$WORD,XTRM$LINE)
  9489. *
  9490. * ENTRY XTRM$ID = NUMBER IDENTIFYING KEYWORD.
  9491. * XTRM$WORD = VALUE DECLARATION ENTRY.
  9492. * XTRM$LINE = CURRENT SOURCE LINE NUMBER.
  9493. *
  9494. * EXIT NONE.
  9495. *
  9496. * METHOD
  9497. *
  9498. * SELECT CASE THAT APPLIES,
  9499. * CASE 1(W):
  9500. * IF VALUE IS O.K.
  9501. * CHECK IF VALUE IS IN RANGE.
  9502. * IF IN RANGE,
  9503. * SAVE CURRENT W VALUE.
  9504. * CASE 2(CTYP):
  9505. * IF VALUE IS O.K.,
  9506. * IF VALUE IS PVC,
  9507. * THEN
  9508. * SET CURRENT CTYP TO PVC.
  9509. * INCREMENT PVC COUNT.
  9510. * IF SUBTIPTYPE IS NOT XAA,
  9511. * FLAG ERROR - SUBTIP MUST BE XAA FOR PVC.
  9512. * IF SVC WAS PREVIOUSLY SPECIFIED,
  9513. * FLAG ERROR -- ALL PVC-S MUST BE SPECIFIED BEFORE ANY SVC
  9514. * OTHERWISE,
  9515. * SET CURRENT CTYP TO SVC.
  9516. * CASE 3(NCIR):
  9517. * IF VALUE IS O.K.
  9518. * CHECK IF VALUE IS IN RANGE.
  9519. * IF IN RANGE,
  9520. * SAVE CURRENT NCIR VALUE.
  9521. * CASE 4(NEN):
  9522. * IF VALUE IS O.K.,
  9523. * CHECK IF VALUE IS IN RANGE.
  9524. * IF IN RANGE,
  9525. * SAVE CURRENT NEN VALUE.
  9526. * CASE 5(COLLECT):
  9527. * SET COLLECT SPECIFIED FLAG.
  9528. * IF STIP IS NOT *PAD*
  9529. * FLAG ERROR -- PARAM INVALID WITH SSTIP SPECIFIED.
  9530. * IF VALUE IS *YES*
  9531. * SET THE COLLECT FLAG.
  9532. *
  9533. #
  9534. *ENDIF
  9535. ITEM XTRM$ID; # KEYWORD I.D. FOR SWITCH #
  9536. ITEM XTRM$LINE; # STATEMENT LINE NUMBER #
  9537. ARRAY XTRM$WORD [0:0] S(1); # VALUE DECLARATION ENTRY #
  9538. BEGIN
  9539. ITEM XTRM$KWID (0,0,9); # KEYWORD I.D. FROM PASS 1 #
  9540. ITEM XTRM$VLERR B(0,17,1); # VALUE ERROR FLAG #
  9541. ITEM XTRM$VALNAM C(0,18,7); # CHARACTER VALUE #
  9542. ITEM XTRM$VALNUM (0,18,42); # INTEGER VALUE #
  9543. ITEM XTRM$PAD (0,0,60); # PAD ENTRY VALUES #
  9544. END
  9545. #
  9546. **** PROC XTRMPRM - XREF LIST BEGINS.
  9547. #
  9548. XREF
  9549. BEGIN
  9550. PROC NDLCKRG; # CHECK IF VALUE IS WITHIN RANGE #
  9551. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  9552. END
  9553. #
  9554. ****
  9555. #
  9556. ITEM XTRM$STAT B; # STATUS RETURNED BY RANGE CHECK PROC #
  9557. ITEM I; # SCRATCH VARIABLE #
  9558. SWITCH XTRMJUMP , # STIP #
  9559. , # TC #
  9560. , # RIC #
  9561. , # CSET #
  9562. , # TSPEED #
  9563. , # CA #
  9564. , # CO #
  9565. , # BCF #
  9566. , # MREC #
  9567. W, # W #
  9568. CTYP$, # CTYP #
  9569. NCIR, # NCIR #
  9570. NEN, # NEN #
  9571. COLLECT, # COLLECT #
  9572. , # XAUTO #
  9573. , # DT #
  9574. , # SDT #
  9575. , # TA #
  9576. , # ABL #
  9577. , # DBZ #
  9578. , # UBZ #
  9579. , # DBL #
  9580. , # UBL #
  9581. , # XBZ #
  9582. , # DO #
  9583. , # STREAM #
  9584. , # HN #
  9585. , # AUTOLOG #
  9586. , # AUTOCON #
  9587. , # PRI #
  9588. , # P80 #
  9589. , # P81 #
  9590. , # P82 #
  9591. , # P83 #
  9592. , # P84 #
  9593. , # P85 #
  9594. , # P86 #
  9595. , # P87 #
  9596. , # P88 #
  9597. , # P89 #
  9598. , # AB #
  9599. , # BR #
  9600. , # BS #
  9601. , # B1 #
  9602. , # B2 #
  9603. , # CI #
  9604. , # CN #
  9605. , # CT #
  9606. , # DLC #
  9607. , # DLTO #
  9608. , # DLX #
  9609. , # EP #
  9610. , # IN #
  9611. , # LI #
  9612. , # OP #
  9613. , # PA #
  9614. , # PG #
  9615. , # PL #
  9616. , # PW #
  9617. , # SE #
  9618. , # FA #
  9619. , # XLC #
  9620. , # XLX #
  9621. , # XLTO #
  9622. , # ELO #
  9623. , # ELX #
  9624. , # ELR #
  9625. , # EBO #
  9626. , # EBR #
  9627. , # CP #
  9628. , # IC #
  9629. , # OC #
  9630. , # LK #
  9631. , # EBX #
  9632. , # HD #
  9633. , # MC #
  9634. , # XLY #
  9635. , # EOF #
  9636. PAD$ ; # PAD #
  9637. CONTROL EJECT;
  9638. # #
  9639. # XTRMPRM CODE BEGINS HERE #
  9640. # #
  9641. GOTO XTRMJUMP[XTRM$ID]; # CHECK GIVEN VALUE DECLARATION #
  9642. W:
  9643. W$USED = TRUE; # SET W SPECIFIED FLAG #
  9644. IF NOT XTRM$VLERR # IF VALUE IS O.K. #
  9645. THEN
  9646. BEGIN # CHECK IF W IS WITHIN RANGE #
  9647. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  9648. THEN
  9649. BEGIN
  9650. USR$RANGE(XTRM$VALNUM[0],USR$WID1,NUM"DEC",XTRM$STAT);
  9651. END
  9652. ELSE
  9653. BEGIN
  9654. NDLCKRG(XTRM$KWID[0],XTRM$VALNUM[0],XTRM$STAT);
  9655. END
  9656. IF XTRM$STAT # IF IT IS WITHIN RANGE #
  9657. THEN
  9658. BEGIN
  9659. CRNT$W = XTRM$VALNUM[0]; # SAVE W VALUE #
  9660. END
  9661. END
  9662. GOTO NEXT$PARAM;
  9663. CTYP$:
  9664. CTYP$USED = TRUE; # SET CTYP SPECIFIED FLAG #
  9665. IF NOT XTRM$VLERR[0] # IF VALUE IS O.K. #
  9666. THEN
  9667. BEGIN
  9668. IF XTRM$VALNAM[0] EQ "PVC" # IF VALUE IS -PVC- #
  9669. THEN
  9670. BEGIN
  9671. CRNT$CTYP = CTYP"PVC"; # SET CURRENT CTYP TO BE PVC #
  9672. PVC$CNT = PVC$CNT + 1; # INCREMENT PVC COUNT #
  9673. IF CRNT$STIP NQ STIP"XAA" # IF STIP IS NOT XAA #
  9674. THEN
  9675. BEGIN
  9676. NDLEM2(ERR111,XTRM$LINE,"PVC");
  9677. END
  9678. IF SVC$SPEC # IF SVC HAS BEEN PREVIOUSLY SPECIFIED #
  9679. THEN
  9680. BEGIN # FLAG ERROR -- SPECIFY PVC BEFORE ALL SVC#
  9681. NDLEM2(ERR114,XTRM$LINE," ");
  9682. END
  9683. END
  9684. ELSE # VALUE MUST BE -SVC- #
  9685. BEGIN
  9686. CRNT$CTYP = CTYP"SVC"; # SET CRNT CTYP TO SVC #
  9687. END
  9688. END
  9689. GOTO NEXT$PARAM;
  9690. NCIR:
  9691. NCIR$USED = TRUE; # SET NCIR SPECIFIED FLAG #
  9692. IF NOT XTRM$VLERR # IF VALUE IS O.K. #
  9693. THEN
  9694. BEGIN # CHECK IF NCIR IS WITHIN RANGE #
  9695. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  9696. THEN
  9697. BEGIN
  9698. USR$RANGE(XTRM$VALNUM[0],USR$WID1,NUM"DEC",XTRM$STAT);
  9699. # CHECK USER RANGE #
  9700. END
  9701. ELSE
  9702. BEGIN
  9703. NDLCKRG(XTRM$KWID[0],XTRM$VALNUM[0],XTRM$STAT);
  9704. # CHECK NORMAL RANGE #
  9705. END
  9706. CRNT$NCIR = XTRM$VALNUM[0]; # SAVE NCIR VALUE #
  9707. END
  9708. GOTO NEXT$PARAM;
  9709. NEN:
  9710. NEN$USED = TRUE; # SET NEN SPECIFIED FLAG #
  9711. IF NOT XTRM$VLERR[0] # IF VALUE IS O.K. #
  9712. THEN
  9713. BEGIN # CHECK IF NEN IS WITHIN RANGE #
  9714. IF CRNT$TIP EQ TIP"USER" # IF TIPTYPE IS USER DEFINED #
  9715. THEN
  9716. BEGIN
  9717. USR$RANGE(XTRM$VALNUM[0],USR$WID1,NUM"DEC",XTRM$STAT);
  9718. # CHECK USER RANGE #
  9719. END
  9720. ELSE
  9721. BEGIN
  9722. NDLCKRG(XTRM$KWID[0],XTRM$VALNUM[0],XTRM$STAT);
  9723. # CHECK NORMAL RANGE #
  9724. END
  9725. IF XTRM$STAT # IF IT IS IN RANGE #
  9726. THEN
  9727. BEGIN
  9728. CRNT$NEN = XTRM$VALNUM[0]; # SAVE NEN VALUE #
  9729. END
  9730. END
  9731. GOTO NEXT$PARAM;
  9732. COLLECT:
  9733. COLLECT$USED = TRUE; # SET COLLECT SPECIFIED FLAG #
  9734. IF NOT XTRM$VLERR[0] # IF VALUE IS O.K. #
  9735. THEN
  9736. BEGIN
  9737. IF CRNT$TIP NQ TIP"USER" AND
  9738. CRNT$STIP NQ STIP"PAD" AND
  9739. CRNT$STIP NQ STIP"USER"
  9740. THEN
  9741. BEGIN # FLAG ERROR -- PARAM INVALID WITH STIP #
  9742. NDLEM2(ERR135,XTRM$LINE,"COLLECT");
  9743. END
  9744. IF XTRM$VALNAM[0] EQ "YES"
  9745. THEN
  9746. BEGIN
  9747. COLLECT$FLAG = TRUE;
  9748. END
  9749. END
  9750. GOTO NEXT$PARAM;
  9751. PAD$:
  9752. IF NOT XTRM$VLERR[0] # IF VALUE IS O.K. #
  9753. THEN
  9754. BEGIN
  9755. IF CRNT$TIP NQ TIP"USER" AND
  9756. CRNT$STIP NQ STIP"XAA" AND
  9757. CRNT$STIP NQ STIP"PAD"
  9758. THEN
  9759. BEGIN # FLAG ERROR -- PARAM INVALID WITH STIP #
  9760. NDLEM2(ERR135,XTRM$LINE,"PAD");
  9761. END
  9762. ELSE
  9763. BEGIN # SAVE NUMBER OF 8-BIT PAD ENTRIES #
  9764. CRNT$DEPAD = XTRM$VALNUM[0];
  9765. CRNT$DEPADW = (CRNT$DEPAD*8 +59) / 60; # NO. WORDS FOR PAD #
  9766. FOR I = 1 STEP 1 UNTIL CRNT$DEPADW
  9767. DO
  9768. BEGIN # SAVE CURRENT PAD VALUE #
  9769. CRNT$PAD[I] = XTRM$PAD[I];
  9770. END
  9771. END
  9772. END
  9773. GOTO NEXT$PARAM;
  9774. NEXT$PARAM:
  9775. RETURN; # **** RETURN **** #
  9776. END # XTRMPRM #
  9777. CONTROL EJECT;
  9778. PROC X25TERM;
  9779. BEGIN
  9780. *IF,DEF,IMS
  9781. #
  9782. ** X25TERM -- CHECKS TERMINALS PARAMETERS LEGAL FOR X.25 TIP.
  9783. *
  9784. * D.K. ENDO 81/12/01
  9785. *
  9786. * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
  9787. * ON THE STATEMENT.
  9788. *
  9789. * PROC X25TERM
  9790. *
  9791. * ENTRY NONE.
  9792. *
  9793. * EXIT NONE.
  9794. *
  9795. * METHOD
  9796. *
  9797. * FOR EACH VALUE DECLARATION,
  9798. * SELECT CASE THAT APPLIES.
  9799. * CASE 1(RIC,CSET):
  9800. * CHECK GENERAL PARAMETER.
  9801. * CASE 2(W,CTYP,NCIR,NEN,COLLECT):
  9802. * CHECK X.25 PARAMETER.
  9803. * CASE 3(TSPEED,CA,CO,BCF,MREC,EOF):
  9804. * FLAG ERROR -- ILLEGAL WITH TIPTYPE SPECIFIED.
  9805. * IF W WAS NOT SPECIFIED,
  9806. * FLAG ERROR -- REQUIRED PARAMETER MISSING.
  9807. * IF CTYP WAS NOT SPECIFIED
  9808. * DEFAULT CTYP TO SVC.
  9809. * IF CTYP IS SVC,
  9810. * THEN,
  9811. * IF NCIR IS GREATER THAN NSVC VALUE,
  9812. * FLAG ERROR -- NCIR VALUE TOO LARGE.
  9813. * IF NEN WAS NOT SPECIFIED,
  9814. * THEN,
  9815. * DEFAULT NEN TO NCIR VALUE.
  9816. * OTHERWISE,
  9817. * IF NEN IS GREATER THAN NCIR VALUE,
  9818. * FLAG ERROR -- NEN VALUE TO LARGE.
  9819. * OTHERWISE,(CTYP IS PVC)
  9820. * IF NCIR WAS SPECIFIED,
  9821. * FLAG ERROR -- NCIR ONLY VALID WITH SVC.
  9822. * IF NEN WAS SPECIFIED,
  9823. * FLAG ERROR -- NEN ONLY VALID WITH SVC.
  9824. *
  9825. #
  9826. *ENDIF
  9827. #
  9828. **** PROC X25TERM - XREF LIST BEGINS.
  9829. #
  9830. XREF
  9831. BEGIN
  9832. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  9833. END
  9834. #
  9835. ****
  9836. #
  9837. ITEM I; # SCRATCH ITEM #
  9838. ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
  9839. SWITCH X25TJUMP NEXT$PARAM, # STIP #
  9840. NEXT$PARAM, # TC #
  9841. GEN$PARAM , # RIC #
  9842. GEN$PARAM , # CSET #
  9843. OTHERS , # TSPEED #
  9844. OTHERS , # CA #
  9845. OTHERS , # CO #
  9846. OTHERS , # BCF #
  9847. OTHERS , # MREC #
  9848. X25$PARAM , # W #
  9849. X25$PARAM , # CTYP #
  9850. X25$PARAM , # NCIR #
  9851. X25$PARAM , # NEN #
  9852. X25$PARAM , # COLLECT #
  9853. OTHERS , # XAUTO #
  9854. OTHERS , # DT #
  9855. OTHERS , # SDT #
  9856. OTHERS , # TA #
  9857. OTHERS , # ABL #
  9858. OTHERS , # DBZ #
  9859. OTHERS , # UBZ #
  9860. OTHERS , # DBL #
  9861. OTHERS , # UBL #
  9862. OTHERS , # XBZ #
  9863. OTHERS , # DO #
  9864. OTHERS , # STREAM #
  9865. OTHERS , # HN #
  9866. OTHERS , # AUTOLOG #
  9867. OTHERS , # AUTOCON #
  9868. OTHERS , # PRI #
  9869. OTHERS , # P80 #
  9870. OTHERS , # P81 #
  9871. OTHERS , # P82 #
  9872. OTHERS , # P83 #
  9873. OTHERS , # P84 #
  9874. OTHERS , # P85 #
  9875. OTHERS , # P86 #
  9876. OTHERS , # P87 #
  9877. OTHERS , # P88 #
  9878. OTHERS , # P89 #
  9879. OTHERS , # AB #
  9880. OTHERS , # BR #
  9881. OTHERS , # BS #
  9882. OTHERS , # B1 #
  9883. OTHERS , # B2 #
  9884. OTHERS , # CI #
  9885. OTHERS , # CN #
  9886. OTHERS , # CT #
  9887. OTHERS , # DLC #
  9888. OTHERS , # DLTO #
  9889. OTHERS , # DLX #
  9890. OTHERS , # EP #
  9891. OTHERS , # IN #
  9892. OTHERS , # LI #
  9893. OTHERS , # OP #
  9894. OTHERS , # PA #
  9895. OTHERS , # PG #
  9896. OTHERS , # PL #
  9897. OTHERS , # PW #
  9898. OTHERS , # SE #
  9899. OTHERS , # FA #
  9900. OTHERS , # XLC #
  9901. OTHERS , # XLX #
  9902. OTHERS , # XLTO #
  9903. OTHERS , # ELO #
  9904. OTHERS , # ELX #
  9905. OTHERS , # ELR #
  9906. OTHERS , # EBO #
  9907. OTHERS , # EBR #
  9908. OTHERS , # CP #
  9909. OTHERS , # IC #
  9910. OTHERS , # OC #
  9911. OTHERS , # LK #
  9912. OTHERS , # EBX #
  9913. OTHERS , # HD #
  9914. OTHERS , # MC #
  9915. OTHERS , # XLY #
  9916. OTHERS , # EOF #
  9917. X25$PARAM ; # PAD #
  9918. # #
  9919. # X25TERM CODE BEGINS HERE #
  9920. # #
  9921. FOR I=2 STEP 1 UNTIL STWC[0]
  9922. DO # FOR EACH VALUE DECLARATION ENTRY #
  9923. BEGIN
  9924. SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
  9925. GOTO X25TJUMP[SWITCH$ID]; # GOTO APPROPRIATE PARAGRAPH #
  9926. GEN$PARAM:
  9927. GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]); # GENERAL PARAMETERS #
  9928. GOTO NEXT$PARAM;
  9929. X25$PARAM:
  9930. XTRMPRM(SWITCH$ID,STMT$TABLE[I],STLNUM[0]); # X25 PARAMETERS #
  9931. IF STKWID[I] EQ KID"PAD"
  9932. THEN
  9933. BEGIN # STATEMENT TABLE #
  9934. I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
  9935. END
  9936. GOTO NEXT$PARAM;
  9937. OTHERS: # ALL OTHER PARAMETERS FLAG AS INVALID #
  9938. NDLEM2(ERR106,STLNUM[0],KWDNAME[SWITCH$ID]); # FOR X25 LINES #
  9939. NEXT$PARAM: # GO TO NEXT PARAMETER #
  9940. END
  9941. IF NOT W$USED # IF W NOT SPECIFIED #
  9942. THEN
  9943. BEGIN # ASSIGN DEFAULT VALUE #
  9944. CRNT$W = W$DEF;
  9945. END
  9946. IF NOT CTYP$USED # IF CTYP NOT SPECIFIED #
  9947. THEN
  9948. BEGIN
  9949. CRNT$CTYP = CTYP"SVC"; # DEFAULT CTYP #
  9950. END
  9951. IF SVC$CNT GR 0 # LINE SUPPORTS SVC #
  9952. THEN
  9953. BEGIN
  9954. IF CRNT$CTYP EQ CTYP"SVC"
  9955. THEN
  9956. BEGIN
  9957. IF B<CRNT$STIP,1>XTERMASK EQ 0 # NO TERMINAL DEFINED YET #
  9958. THEN
  9959. BEGIN
  9960. B<CRNT$STIP,1>XTERMASK = 1; # SET FLAG #
  9961. END
  9962. ELSE
  9963. BEGIN
  9964. NDLEM2(ERR167,STLNUM[0],STIP$VAL[CRNT$STIP]);
  9965. END
  9966. END
  9967. END
  9968. IF CRNT$CTYP EQ CTYP"SVC" # IF CTYP IS SVC #
  9969. THEN
  9970. BEGIN
  9971. IF CRNT$NCIR GR SVC$CNT
  9972. THEN # NCIR VALUE LARGER THAN SVC COUNT ALLOTED#
  9973. BEGIN
  9974. NDLEM2(ERR150,STLNUM[0]," "); # FLAG ERROR -- NCIR TOO BIG #
  9975. END
  9976. SVC$SPEC = TRUE; # SET SVC SPECIFIED FLAG #
  9977. IF NOT NEN$USED # IF NEN NOT SPECIFIED #
  9978. THEN
  9979. BEGIN
  9980. CRNT$NEN = CRNT$NCIR; # DEFAULT NEN IS NCIR VALUE #
  9981. END
  9982. ELSE # NEN SPECIFIED #
  9983. BEGIN
  9984. IF CRNT$NEN GR CRNT$NCIR # IF NEN VALUE GREATER THAN NCIR#
  9985. THEN
  9986. BEGIN # FLAG ERROR -- NEN MUST NOT BE GREATER #
  9987. NDLEM2(ERR118,STLNUM[0]," "); # THAN NCIR VALUE #
  9988. END
  9989. END
  9990. END
  9991. ELSE # CTYP IS PVC OR UNKNOWN #
  9992. BEGIN
  9993. IF NCIR$USED # IF NCIR WAS SPECIFIED #
  9994. THEN
  9995. BEGIN # FLAG ERROR -- NCIR ONLY VALID WITH SVC #
  9996. NDLEM2(ERR101,STLNUM[0],"NCIR");
  9997. END
  9998. IF NEN$USED # IF NEN WAS SPECIFIED #
  9999. THEN
  10000. BEGIN # FLAG ERROR -- NEN VALID WITH SVC ONLY #
  10001. NDLEM2(ERR101,STLNUM[0],"NEN");
  10002. END
  10003. END
  10004. RETURN; # **** RETURN **** #
  10005. END # X25TERM #
  10006. CONTROL EJECT;
  10007. PROC $3270TRM;
  10008. BEGIN
  10009. *IF,DEF,IMS
  10010. #
  10011. ** $3270TRM -- CHECK TERMINAL PARAMETERS LEGAL FOR MODE4 TIP.
  10012. *
  10013. * D.K. ENDO 81/12/01
  10014. *
  10015. * THIS PROCEDURE CALLS THE APPROPRIATE PROC TO CHECK EACH PARAMETER
  10016. * ON THE STATEMENT.
  10017. *
  10018. * PROC $3270TRM
  10019. *
  10020. * ENTRY NONE.
  10021. *
  10022. * EXIT NONE.
  10023. *
  10024. * METHOD
  10025. *
  10026. * FOR EACH VALUE DECLARATION,
  10027. * SELECT CASE THAT APPLIES,
  10028. * CASE 1(RIC,CSET):
  10029. * CHECK GENERAL PARAMETER.
  10030. * CASE 2(CA)
  10031. * CHECK MODE4 PARAMETER.
  10032. * CASE 3(TSPEED,CO,BCF,MREC,W,CTYP,NCIR,NEN,COLLECT,EOF):
  10033. * FLAG ERROR -- INVALID PARAMETER.
  10034. * IF CA WAS NOT SPECIFIED AND NOT AN AUTO-REC LINE.
  10035. * FLAG ERROR -- REQUIRE PARAMETER MISSING.
  10036. *
  10037. #
  10038. *ENDIF
  10039. #
  10040. **** PROC $3270TRM - XREF LIST BEGINS.
  10041. #
  10042. XREF
  10043. BEGIN
  10044. PROC NDLEM2; # MAKES ENTRY IN PASS 2 ERROR FILE #
  10045. END
  10046. #
  10047. ****
  10048. #
  10049. ITEM I; # SCRATCH ITEM #
  10050. ITEM SWITCH$ID; # USED AS I.D. FOR KEYWORD #
  10051. SWITCH $3270JMP NEXT$PARAM, # STIP #
  10052. NEXT$PARAM, # TC #
  10053. GEN$PARAM , # RIC #
  10054. GEN$PARAM , # CSET #
  10055. OTHERS , # TSPEED #
  10056. MD4$PARAM , # CA #
  10057. OTHERS , # CO #
  10058. OTHERS , # BCF #
  10059. OTHERS , # MREC #
  10060. OTHERS , # W #
  10061. OTHERS , # CTYP #
  10062. OTHERS , # NCIR #
  10063. OTHERS , # NEN #
  10064. OTHERS , # COLLECT #
  10065. OTHERS , # XAUTO #
  10066. OTHERS , # DT #
  10067. OTHERS , # SDT #
  10068. OTHERS , # TA #
  10069. OTHERS , # ABL #
  10070. OTHERS , # DBZ #
  10071. OTHERS , # UBZ #
  10072. OTHERS , # DBL #
  10073. OTHERS , # UBL #
  10074. OTHERS , # XBZ #
  10075. OTHERS , # DO #
  10076. OTHERS , # STREAM #
  10077. OTHERS , # HN #
  10078. OTHERS , # AUTOLOG #
  10079. OTHERS , # AUTOCON #
  10080. OTHERS , # PRI #
  10081. OTHERS , # P80 #
  10082. OTHERS , # P81 #
  10083. OTHERS , # P82 #
  10084. OTHERS , # P83 #
  10085. OTHERS , # P84 #
  10086. OTHERS , # P85 #
  10087. OTHERS , # P86 #
  10088. OTHERS , # P87 #
  10089. OTHERS , # P88 #
  10090. OTHERS , # P89 #
  10091. OTHERS , # AB #
  10092. OTHERS , # BR #
  10093. OTHERS , # BS #
  10094. OTHERS , # B1 #
  10095. OTHERS , # B2 #
  10096. OTHERS , # CI #
  10097. OTHERS , # CN #
  10098. OTHERS , # CT #
  10099. OTHERS , # DLC #
  10100. OTHERS , # DLTO #
  10101. OTHERS , # DLX #
  10102. OTHERS , # EP #
  10103. OTHERS , # IN #
  10104. OTHERS , # LI #
  10105. OTHERS , # OP #
  10106. OTHERS , # PA #
  10107. OTHERS , # PG #
  10108. OTHERS , # PL #
  10109. OTHERS , # PW #
  10110. OTHERS , # SE #
  10111. OTHERS , # FA #
  10112. OTHERS , # XLC #
  10113. OTHERS , # XLX #
  10114. OTHERS , # XLTO #
  10115. OTHERS , # ELO #
  10116. OTHERS , # ELX #
  10117. OTHERS , # ELR #
  10118. OTHERS , # EBO #
  10119. OTHERS , # EBR #
  10120. OTHERS , # CP #
  10121. OTHERS , # IC #
  10122. OTHERS , # OC #
  10123. OTHERS , # LK #
  10124. OTHERS , # EBX #
  10125. OTHERS , # HD #
  10126. OTHERS , # MC #
  10127. OTHERS , # XLY #
  10128. OTHERS , # EOF #
  10129. OTHERS ; # PAD #
  10130. # #
  10131. # $3270TRM CODE BEGINS HERE #
  10132. # #
  10133. FOR I=2 STEP 1 UNTIL STWC[0]
  10134. DO # FOR EACH VALUE-DECLARATION ENTRY #
  10135. BEGIN
  10136. SWITCH$ID = STKWID[I] - KID"STIP"; # CALCULATE SWITCH ID #
  10137. GOTO $3270JMP[SWITCH$ID]; # GO TO APPROPRIATE PARAGRAPH #
  10138. GEN$PARAM:
  10139. GENTERM(SWITCH$ID,STWORD[I],STLNUM[0]); # GENERAL PARAMETERS #
  10140. GOTO NEXT$PARAM;
  10141. MD4$PARAM:
  10142. MTRMPRM(SWITCH$ID,STWORD[I],STLNUM[0]); # MODE4 PARAMETERS #
  10143. GOTO NEXT$PARAM;
  10144.  
  10145. OTHERS: # ALL OTHER PARAMETERS FLAG AS INVALID #
  10146. IF NOT TT$USED # IF THIS LINE IS AUTO-SYNC #
  10147. THEN
  10148. BEGIN # FLAG ERROR -- INVALID WITH STIP/TC SPEC #
  10149. NDLEM2(ERR135,STLNUM[0],KWDNAME[SWITCH$ID]);
  10150. END
  10151. ELSE # TIPTYPE MUST HAVE BEEN SPECIFIED #
  10152. BEGIN # FLAG ERROR -- INVALID WITH TIPTYPE SPEC #
  10153. NDLEM2(ERR106,STLNUM[0],KWDNAME[SWITCH$ID]);
  10154. END
  10155. IF STKWID[I] EQ KID"PAD"
  10156. THEN
  10157. BEGIN # STATEMENT TABLE #
  10158. I = I + MAXPADW; # PAD ENTRIES ARE 1+MAXPADW LONG#
  10159. END
  10160. NEXT$PARAM: # GO TO NEXT PARAMETER #
  10161. END
  10162. RETURN; # **** RETURN **** #
  10163. END # $3270TRM #
  10164. CONTROL EJECT;
  10165. # #
  10166. # TERMPR CODE BEGINS HERE #
  10167. # #
  10168. COLLECT$FLAG = FALSE;
  10169. COLLECT$USED = FALSE;
  10170. CRNT$STIP = STIP"UNKNOWN";
  10171. CRNT$TC = TC"UNKNOWN";
  10172. BCF$FLAG = FALSE;
  10173. CA$USED = FALSE;
  10174. CRNT$CSET = CSET"UNKNOWN";
  10175. CRNT$CTYP = CTYP"UNKNOWN";
  10176. CRNT$MREC = 0;
  10177. CRNT$NCIR = NCIR$DEF;
  10178. CRNT$NEN = NCIR$DEF;
  10179. CRNT$EOF = FALSE;
  10180. EOF$USED = FALSE;
  10181. CRNT$TSPD = LSPD"UNKNOWN";
  10182. CRNT$W = 0;
  10183. CRNT$DEPAD = 0; # INITIALIZE PAD ENTRY COUNT #
  10184. CRNT$DEPADW = 0; # INITIALIZE PAD ENTRY "(WORDS)#
  10185. CSET$USED = FALSE;
  10186. CTYP$USED = FALSE;
  10187. NCIR$USED = FALSE;
  10188. NEN$USED = FALSE;
  10189. RIC$FLAG = FALSE;
  10190. RIC$USED = FALSE;
  10191. STIP$USED = FALSE;
  10192. TC$USED = FALSE;
  10193. W$USED = FALSE;
  10194. # #
  10195. IF LRWC[1]+MXTRENT GQ LR$LENG
  10196. THEN # IF NEED MORE TABLE SPACE FOR ENTRY #
  10197. BEGIN
  10198. SSTATS(P<LINE$RECORD>,MXTRENT); # ALLOCATE MORE TABLE SPACE #
  10199. END
  10200. CRNT$TERM = LRWC[1] + 1; # SET POINTER TO CURRENT TERM #
  10201. LRWORD[CRNT$TERM] = 0; # CLEAR 1ST WORD IN ENTRY #
  10202. TE$IDENT[CRNT$TERM] = "TRM"; # ENTER TERMINAL IDENTIFIER #
  10203. TEWC[CRNT$TERM] = 2; # ENTER ENTRY WORD COUNT #
  10204. LRWC[1] = LRWC[1] + 2; # INCREMENT LINE REC WORD COUNT #
  10205. LRWORD[LRWC[1]] = 0; # CLEAR 2ND WORD IN ENTRY #
  10206. IF NOT AUTO$REC # IF NOT AN AUTO REC LINE #
  10207. THEN
  10208. BEGIN
  10209. DEVCNT = 0; # CLEAR DEVICE COUNT #
  10210. TERMCNT = TERMCNT + 1; # CLEAR TERMINAL COUNT #
  10211. IF TERMCNT GR MAXTERM # IF COUNT EXCEEDS MAX FOR TERMS#
  10212. THEN
  10213. BEGIN # FLAG ERROR -- MAX TERMS EXCEEDED #
  10214. NDLEM2(ERR115,STLNUM[0]," ");
  10215. END
  10216. END # PUT CURRENT TIP IN TERM ENTRY #
  10217. TETP[CRNT$TERM + 1] = LCTTYP$IP[2];
  10218. IF LCTTYP$IP[2] EQ SYNAUTO
  10219. THEN # IF TIPTYPE IS SYNC AUTO-REC #
  10220. BEGIN
  10221. CRNT$TIP = TIP"UNKNOWN"; # CLEAR CURRENT TIPTYPE VALUE #
  10222. END
  10223. IF STORD1[1] NQ 0 # IF STIP HAS BEEN SPECIFIED #
  10224. THEN
  10225. BEGIN
  10226. STIP$USED = TRUE; # SET STIP SPECIFIED FLAG #
  10227. IF NOT STVLERR[STORD1[1]] # IF VALUE IS O.K. #
  10228. THEN
  10229. BEGIN # IF VALUE IS AUTOREC #
  10230. IF STVALNAM[STORD1[1]] EQ "AUTOREC"
  10231. THEN
  10232. BEGIN
  10233. IF NOT AUTO$REC # IF NOT AN AUTO-REC LINE #
  10234. THEN
  10235. BEGIN # FLAG ERROR -- AUTOREC NOT VALID #
  10236. NDLEM2(ERR113,STLNUM[0]," ");
  10237. END
  10238. ELSE # NOT AN AUTO-REC LINE #
  10239. BEGIN
  10240. STIP$USED = FALSE; # CLEAR STIP SPECIFIED FLAG #
  10241. END
  10242. END
  10243. ELSE # VALUE IS NOT AUTOREC #
  10244. BEGIN # SEARCH STIP TABLE FOR VALUE #
  10245. FOR I=1 STEP 1 UNTIL MXSTIP
  10246. DO
  10247. BEGIN # IF VALUE IS FOUND #
  10248. IF STVALNAM[STORD1[1]] EQ STIP$VAL[I]
  10249. THEN
  10250. BEGIN
  10251. CRNT$STIP = STIP$STATUS[I]; # SET CURRENT STIP #
  10252. TESTIP[CRNT$TERM + 1] = STIP$NUMV[I]; #SET FIELD IN ENT#
  10253. END
  10254. END
  10255. IF CRNT$TIP NQ TIP"USER" AND # IF TIPTYPE IS NOT #
  10256. CRNT$TIP NQ TIP"UNKNOWN" # USER OR UNKNOWN #
  10257. THEN
  10258. BEGIN # STIP AND NOT COMPATIBLE #
  10259. IF B<CRNT$TIP,1>STIP$TIP$MAP[CRNT$STIP] NQ 1
  10260. THEN
  10261. BEGIN # FLAG ERROR -- INVALID WITH TIP#
  10262. NDLEM2(ERR112,STLNUM[0],STIP$VAL[CRNT$STIP]);
  10263. CRNT$STIP = STIP"UNKNOWN"; # CLEAR CURRENT STIP #
  10264. END
  10265. END
  10266. END
  10267. END
  10268. END
  10269. IF STORD2[1] NQ 0 # IF TC WAS SPECIFIED #
  10270. THEN
  10271. BEGIN
  10272. TC$USED = TRUE; # SET TC SPECIFIED FLAG #
  10273. IF NOT STVLERR[STORD2[1]] # IF VALUE IS O.K. #
  10274. THEN
  10275. BEGIN # IF VALUE IS CCP #
  10276. IF STVALNAM[STORD2[1]] EQ "CCP"
  10277. THEN
  10278. BEGIN
  10279. TC$USED = FALSE; # CLEAR TC SPECIFIED FLAG #
  10280. END
  10281. ELSE # VALUE IS NOT CCP #
  10282. BEGIN # SEARCH TABLE FOR VALUE #
  10283. FOR I=1 STEP 1 UNTIL MXTC
  10284. DO
  10285. BEGIN # IF VALUE IS FOUND #
  10286. IF STVALNAM[STORD2[1]] EQ TC$VAL[I]
  10287. THEN
  10288. BEGIN
  10289. CRNT$TC = TC$STATUS[I]; # SET CURRENT TC #
  10290. TETC[CRNT$TERM + 1] = TC$NUMV[I]; # PUT VALUE IN ENTRY#
  10291. END
  10292. END
  10293. IF CRNT$TIP NQ TIP"USER" AND # IF TIPTYPE TC NOT #
  10294. CRNT$TC NQ TC"USER" # USER AND TC IS NOT#
  10295. THEN # USER #
  10296. BEGIN
  10297. IF CRNT$STIP NQ STIP"UNKNOWN" # IF STIP IS NOT #
  10298. THEN # UNKNOWN #
  10299. BEGIN # IF STIP AND TC NOT COMPATIBLE #
  10300. IF B<CRNT$STIP,1>STIP$AMAP[CRNT$TC] NQ 1
  10301. THEN
  10302. BEGIN # FLAG ERROR -- STIP AND TC NOT COMPATIBLE#
  10303. NDLEM2(ERR111,STLNUM[0],STVALNAM[STORD2[1]]);
  10304. CRNT$TC = TC"UNKNOWN"; # CLEAR CURRENT TC #
  10305. END
  10306. END
  10307. ELSE # CURRENT STIP IS UNKNOWN #
  10308. BEGIN # IF CURRENT TIPTYPE NOT UNKNOWN#
  10309. IF CRNT$TIP NQ TIP"UNKNOWN"
  10310. THEN
  10311. BEGIN # IF TIPTYPE AND TC NOT COMPATBL#
  10312. IF B<CRNT$TIP,1>TC$TIP$AMAP[CRNT$TC] NQ 1
  10313. THEN
  10314. BEGIN # FLAG ERROR -- TIPTYPE AND TC NOT COMPAT #
  10315. NDLEM2(ERR112,STLNUM[0],STVALNAM[STORD2[1]]);
  10316. CRNT$TC = TC"UNKNOWN"; # CLEAR CURRENT TC #
  10317. END
  10318. END
  10319. END
  10320. END
  10321. END
  10322. END
  10323. END
  10324. IF CRNT$TIP NQ TIP"USER" # IF TIPTYPE IS NOT USER #
  10325. THEN
  10326. BEGIN
  10327. IF NOT STIP$USED # IF STIP NOT SPECIFIED #
  10328. THEN
  10329. BEGIN
  10330. IF TC$USED # IF TC NOT SPECIFIED #
  10331. THEN
  10332. BEGIN
  10333. IF (CRNT$TIP EQ TIP"ASYNC" OR CRNT$TIP EQ TIP"MODE4"
  10334. OR CRNT$TIP EQ TIP"HASP") AND (CRNT$TC EQ TC"USER")
  10335. THEN
  10336. BEGIN
  10337. NDLEM2(ERR160,STLNUM[0]," ");
  10338. END
  10339. ELSE
  10340. BEGIN
  10341. CRNT$STIP = DEF$STIP[CRNT$TC]; # SAVE DEFAULT STIP #
  10342. IF CRNT$TIP EQ TIP"X25" # IF TIPTYPE IS X25 #
  10343. THEN
  10344. BEGIN
  10345. CRNT$STIP = STIP"PAD"; # DEFAULT STIP TO PAD #
  10346. END # STORE STIP VALUE IN TERM ENTRY#
  10347. TESTIP[CRNT$TERM + 1] = STIP$NUMV[CRNT$STIP];
  10348. END
  10349. END
  10350. ELSE # TC NOT SPECIFIED #
  10351. BEGIN # FLAG ERROR -- TC OR STIP REQUIRED #
  10352. NDLEM2(ERR117,STLNUM[0]," ");
  10353. END
  10354. END
  10355. END
  10356. IF NOT TT$USED # IF TIPTYPE WAS NOT SPECIFIED #
  10357. THEN
  10358. BEGIN
  10359. IF LTYPE EQ "SYNC" AND # IF LTYPE IS SYNCHRONOUS #
  10360. AUTO$REC # AND AUTO-REC #
  10361. THEN
  10362. BEGIN # DEFAULT TIPTYPE BASED ON STIP #
  10363. TETP[CRNT$TERM+1] = STIP$TIP[CRNT$STIP];
  10364. CRNT$TIP = STIP$TIP[CRNT$STIP];
  10365. END
  10366. END
  10367. GOTO TRMJUMP[CRNT$TIP]; # CHECK REST OF PARAMETERS #
  10368. ASYNC:
  10369. ASYTERM; # CHECK ASYNC TERMINAL PARAMS #
  10370. GOTO GEN$CHECK;
  10371. MODE4:
  10372. MD4TERM; # CHECK MODE4 TERMINAL PARAMS #
  10373. GOTO GEN$CHECK;
  10374. HASP:
  10375. HSPTERM; # CHECK HASP TERMINAL PARAMETERS#
  10376. GOTO GEN$CHECK;
  10377. X25:
  10378. X25TERM; # CHECK X25 TERMINAL PARAMETERS #
  10379. GOTO GEN$CHECK;
  10380. BSC:
  10381. BSCTERM; # CHECK BSC TERMINAL PARAMETERS #
  10382. GOTO GEN$CHECK;
  10383. $3270:
  10384. $3270TRM;
  10385. GOTO GEN$CHECK;
  10386. USER:
  10387. USRTERM; # CHECK USER TERMINAL PARAMETERS#
  10388. GOTO NEXT;
  10389. GEN$CHECK: # FINAL GENERAL CHECKS #
  10390. IF NOT CSET$USED AND # IF CSET NOT SPECIFIED AND NOT #
  10391. NOT AUTO$REC # AN AUTO-REC LINE #
  10392. THEN
  10393. BEGIN # DEFAULT CSET #
  10394. IF CRNT$TIP EQ TIP"$3270"
  10395. THEN # IF TIP IS 3270 #
  10396. BEGIN
  10397. CRNT$CSET = CSET"EBCDIC";
  10398. TECD[CRNT$TERM+1] = CRNT$CSET;
  10399. END
  10400. ELSE # DEFAULT BY STIP #
  10401. BEGIN
  10402. CRNT$CSET = CSET$DEF[CRNT$STIP];
  10403. TECD[CRNT$TERM+1] = CRNT$CSET;
  10404. END
  10405. END
  10406. NEXT:
  10407. FOR I=1 STEP 1 UNTIL MXDT
  10408. DO
  10409. BEGIN
  10410. DT$CNT[I] = 0; # CLEAR DEVICE TYPE COUNT #
  10411. DO$MAP[I] = 0; # CLEAR -DO- AND STREAM MAP #
  10412. STRM$MAP[I] = 0;
  10413. FIRST$DT[I] = TRUE; # SET FIRST DEVICE TYPE MAP #
  10414. END
  10415. CP$PL$MAP = 0; # CLEAR CP/PL BIT MAP #
  10416. TA$MAP = 0; # CLEAR -TA- MAP #
  10417. IF NOT AUTO$REC # IF NOT AN AUTO-REC LINE #
  10418. THEN # SET MAXIMUM NUMBER OF DEVICE TYPES #
  10419. BEGIN
  10420. MAXDEV = DEV$MAX[CRNT$TIP]; # SET MAX NUMBER OF DEVICE STMTS#
  10421. IF CRNT$STIP EQ STIP"M4A" # IF CURRENT STIP IS M4A #
  10422. THEN
  10423. BEGIN
  10424. MAXDEV = DEV$MX$M4A;
  10425. DT$MAX[DT"CON"] = CON$MX$M4A;
  10426. DT$MAX[DT"CR"] = CR$MAX$M4A;
  10427. DT$MAX[DT"LP"] = LP$MAX$M4A;
  10428. DT$MAX[DT"USER"] = DT7$MX$M4A;
  10429. END
  10430. ELSE # ALL OTHER STIP-S #
  10431. BEGIN
  10432. DT$MAX[DT"CON"] = CON$MAX[CRNT$TIP];
  10433. DT$MAX[DT"CR"] = CR$MAX[CRNT$TIP];
  10434. DT$MAX[DT"LP"] = LP$MAX[CRNT$TIP];
  10435. DT$MAX[DT"USER"] = DT7$MAX[CRNT$TIP];
  10436. END
  10437. DT$MAX[DT"CP"] = CP$MAX[CRNT$TIP];
  10438. DT$MAX[DT"PL"] = PL$MAX[CRNT$TIP];
  10439. DT$MAX[DT"AP"] = AP$MAX[CRNT$TIP];
  10440. END
  10441. ELSE # LINE IS AUTO-REC #
  10442. BEGIN
  10443. MAXDEV = 255;
  10444. END
  10445. RETURN; # **** RETURN **** #
  10446. END # TERMPR #
  10447. CONTROL EJECT;
  10448. PROC USR$RANGE(UVALNUM,U$RANGE,UMODE,USTAT);
  10449. BEGIN
  10450. *IF,DEF,IMS
  10451. #
  10452. **
  10453. * THIS PROCEDURE CHECKS THE RANGE OF DEVICE, LINE OR TERMINAL
  10454. * PARAMETERS FOR USER DEFINED TIPTYPES.
  10455. *
  10456. * Y. C. YIP 11/24/1982
  10457. *
  10458. * PROC USR$RANGE(UVALNUM,U$RANGE,UMODE,USTAT)
  10459. *
  10460. * ENTRY UVALNUM = VALUE WHOSE RANGE TO BE CHECKED.
  10461. *
  10462. * USTAT = STATUS SET TO FALSE IF OUT OF RANGE
  10463. *
  10464. * ELSE TO TRUE.
  10465. *
  10466. * U$RANGE = UPPER RANGE APPLICABLE FOR THIS PARAMETER.
  10467. *
  10468. * UMODE = 1 FOR DECIMAL AND 2 FOR HEX.
  10469. * EXIT NONE.
  10470. *
  10471. * METHOD THIS PROCEDURE PICKS UP THE UVALNUM OF THE PARAMETER
  10472. *
  10473. * CHECKS IF IT IS GREATER THAN OR EQUAL TO 0 AND
  10474. *
  10475. * IF IT IS LESS THAN OR EQUAL TO U$RANGE. IF SO,
  10476. *
  10477. * USTAT IS LEFT SET AT TRUE ELSE IT IS SET TO FALSE.
  10478. *
  10479. * ALSO, ERR100 IS GENERATED IF VALUE IS OUT OF RANGE.
  10480. *
  10481. #
  10482. *ENDIF
  10483. XREF
  10484. BEGIN
  10485. FUNC XCDD C(10); # CONVERTS DECIMAL TO DISPLAY CODE #
  10486. FUNC XCHD C(10); # CONVERTS HEXIDECIMAL TO DISPLAY #
  10487. END
  10488. DEF ZERO # 0 #; # VALUE 0 #
  10489. ITEM UVALNUM ; # USER VALUE #
  10490. ITEM U$RANGE ; # UPPER LIMIT OF THIS USER PARAMETER#
  10491. ITEM CTEMP C(10); # CHARACTER TEMPORARY #
  10492. ITEM UMODE; # 1 FOR DECIMAL AND 2 FOR HEX #
  10493. ITEM USTAT B ; # USER STATUS #
  10494. USTAT = TRUE; # PRSETTING USTAT IS TRUE #
  10495. IF NOT (UVALNUM GQ ZERO AND
  10496. UVALNUM LQ U$RANGE) # IF NOT WITHIN RANGE #
  10497. THEN
  10498. BEGIN
  10499. USTAT = FALSE; # SET ERROR STATUS FLAG #
  10500. IF UMODE EQ NUM"DEC" # IF DECIMAL #
  10501. THEN
  10502. BEGIN
  10503. CTEMP = XCDD(UVALNUM); # CONVERT TO DECIMAL #
  10504. END
  10505. ELSE
  10506. BEGIN
  10507. CTEMP = XCHD(UVALNUM); # CONVERTS TO DISPLAY CODE #
  10508. END
  10509. NDLEM2(ERR100,STLNUM[0],C<4,6>CTEMP); # ERROR MESSAGE #
  10510. END
  10511. RETURN;
  10512. END # END OF PROC USR$RANGE #
  10513.  
  10514. CONTROL EJECT;
  10515. # #
  10516. # NDLNFCM CODE BEGINS HERE #
  10517. # #
  10518. COM$ELMT = TRUE; # SET COMMUNICATION ELEMENT FLAG #
  10519. LCR$EXIST = FALSE; # CLEAR LINE CONFIG REC EXISTS FLAG #
  10520. LR$EXIST = FALSE; # CLEAR LINE RECORD EXISTS FLAG #
  10521. FOR I=1 WHILE COM$ELMT
  10522. DO # WHILE THE ENTRIES DESCRIBE COMMUNICATION#
  10523. BEGIN # ELEMENTS #
  10524. GOTO COMJUMP[STSTID[0]]; # JUMP TO APPROPRIATE PARAGRAPH #
  10525. # #
  10526. LINE:
  10527. IF LR$EXIST # IF A LINE RECORD EXISTS #
  10528. THEN # WRITE IT OUT TO NCF #
  10529. BEGIN
  10530. LRWORD[LRWC[1]+1] = 0; # CLEAR NEXT WORD #
  10531. NWDS16 = ((LRWC[1]+2)*60)/16; # CALCULATE NPU WORD COUNT #
  10532. # CALCULATE CHECK SUM #
  10533. LFGCKSM(LOC(LINE$RECORD),59,NWDS16,CKSUM);
  10534. # ADD CHECK SUM TO TOTAL #
  10535. NPCKSM[NPWC[0]] = NPCKSM[NPWC[0]] + CKSUM;
  10536. LENGTH = LRWC[1] + 1; # SAVE LENGTH OF RECORD #
  10537. NDLWNCF(TABLE"LR",P<LINE$RECORD>,LENGTH); # WRITE RECORD TO NCF#
  10538. LR$EXIST = FALSE; # CLEAR LINE RECORD EXISTS FLAG #
  10539. END
  10540. IF LCR$EXIST # IF LINE CONFIGURATION RECORD EXISTS #
  10541. THEN # WRITE RECORD TO FILE #
  10542. BEGIN
  10543. IF CRNT$TIP EQ TIP"X25" OR # IF X25 LINE #
  10544. (CRNT$TIP EQ TIP"USER" AND LTYPE EQ "X25")
  10545. THEN
  10546. BEGIN # STORE PVC COUNT #
  10547. LINFNFV(FN"PVC",PVC$CNT);
  10548. END
  10549. NDLWLCR(CRNT$NPU,FALSE);
  10550. LCR$EXIST = FALSE; # CLEAR LINE CON REC EXISTS FLAG#
  10551. END
  10552. READW(STFET,STMT$TABLE[1],STWC[0],STMT$STAT); # READ STMT ENTRY #
  10553. LINGRPR; # CALL PROC TO PROCESS ENTRY #
  10554. GOTO NEXT;
  10555. TERMINAL$:
  10556. READW(STFET,STMT$TABLE[1],STWC[0],STMT$STAT); # READ STMT ENTRY #
  10557. TERMPR; # CALL PROC TO PROCESS ENTRY #
  10558. GOTO NEXT;
  10559. DEVICE:
  10560. READW(STFET,STMT$TABLE[1],STWC[0],STMT$STAT); # READ STMT ENTRY #
  10561. DEVPR; # CALL PROC TO PROCESS ENTRY #
  10562. GOTO NEXT;
  10563. TRUNK:
  10564. READW(STFET,STMT$TABLE[1],STWC[0],STMT$STAT); # READ STMT ENTRY #
  10565. NDLTRNK; # CALL PROC TO PROCESS ENTRY #
  10566. GOTO NEXT;
  10567. NET$ELMT:
  10568. COM$ELMT = FALSE; # CLEAR COMMUNICATION ELEMENT FLAG #
  10569. IF LR$EXIST # IF A LINE RECORD EXISTS #
  10570. THEN # WRITE IT TO THE NCF #
  10571. BEGIN
  10572. LRWORD[LRWC[1]+1] = 0; # CLEAR NEXT WORD #
  10573. NWDS16 = ((LRWC[1]+2)*60)/16; # CALCULATE NPU WORD COUNT #
  10574. # CALCULATE CHECK SUM #
  10575. LFGCKSM(LOC(LINE$RECORD),59,NWDS16,CKSUM);
  10576. # ADD CHECK SUM TO TOTAL #
  10577. NPCKSM[NPWC[0]] = NPCKSM[NPWC[0]] + CKSUM;
  10578. LENGTH = LRWC[1] + 1; # SAVE LENGTH OF RECORD #
  10579. NDLWNCF(TABLE"LR",P<LINE$RECORD>,LENGTH); # WRITE RECORD TO NCF#
  10580. END
  10581. IF LCR$EXIST # IF LINE CONFIGURATION RECORD EXISTS #
  10582. THEN # WRITE RECORD TO FILE #
  10583. BEGIN
  10584. IF CRNT$TIP EQ TIP"X25" OR # IF X25 LINE #
  10585. (CRNT$TIP EQ TIP"USER" AND LTYPE EQ "X25")
  10586. THEN
  10587. BEGIN # STORE PVC COUNT #
  10588. LINFNFV(FN"PVC",PVC$CNT);
  10589. END
  10590. NDLWLCR(CRNT$NPU,FALSE);
  10591. END
  10592. NDLWLCR(CRNT$NPU,TRUE); # CLEAR LINE CONFIG RECORD BUFFER #
  10593. TEST I; # EXIT LOOP #
  10594. NEXT:
  10595. READW(STFET,STMT$TABLE,1,STMT$STAT); # READ HEADER OF NEXT ENT #
  10596. IF STMT$STAT NQ TRNS$OK # IF NOTHING WAS READ #
  10597. THEN # DO END PROCESSING #
  10598. BEGIN
  10599. GOTO NET$ELMT;
  10600. END
  10601. END # FOR LOOP #
  10602. RETURN; # **** RETURN **** #
  10603. END # NDLNFCM #
  10604. TERM
cdc/nos2.source/nam5871/ndlnfcm.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator