home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / snobol / macros.360 < prev    next >
Text File  |  1988-10-19  |  57KB  |  2,037 lines

  1. ./  ADD  NAME=AAAA,LEVEL=01,SOURCE=0
  2.          e33.26 macros (February 4, 1971)
  3. ./  ADD  NAME=ACOMP,LEVEL=01,SOURCE=0
  4.          MACRO
  5. &LOC     ACOMP     &CL1,&CL2,&LOC1,&LOC2,&LOC3
  6. &LOC     L         1,&CL1
  7.          C         1,&CL2
  8.          AIF       ('&LOC1' NE '&LOC2').NOT12
  9.          AIF       ('&LOC1' NE '').K1
  10.          BL        &LOC3
  11.          MEXIT
  12. .K1      BNL       &LOC1
  13.          AIF       ('&LOC3' EQ '').DONE
  14.          BL        &LOC3
  15.          MEXIT
  16. .NOT12   AIF       ('&LOC2' NE '&LOC3').NOT23
  17.          AIF       ('&LOC2' NE '').K2
  18.          BH        &LOC1
  19.          MEXIT
  20. .K2      BNH       &LOC2
  21.          AIF       ('&LOC1' EQ '').DONE
  22.          BH        &LOC1
  23.          MEXIT
  24. .NOT23   AIF       ('&LOC1' NE '&LOC3').NOT13
  25.          AIF       ('&LOC3' NE '').K3
  26.          BE        &LOC2
  27.          MEXIT
  28. .K3      BNE       &LOC1
  29.          AIF       ('&LOC2' EQ '').DONE
  30.          BE        &LOC2
  31.          MEXIT
  32. .NOT13   AIF       ('&LOC1' EQ '').N1
  33.          BH        &LOC1
  34. .N1      AIF       ('&LOC2' EQ '').N2
  35.          BE        &LOC2
  36. .N2      AIF       ('&LOC3' EQ '').DONE
  37.          BL        &LOC3
  38. .DONE    MEND      ACOMP
  39. ./  ADD  NAME=ACOMPC,LEVEL=01,SOURCE=0
  40.          MACRO
  41. &LOC     ACOMPC    &CL,&N,&LOC1,&LOC2,&LOC3
  42.          AIF       ('&N' NE '0').A
  43. &LOC     C         0,&CL
  44.          AGO       .B
  45. .A       ANOP
  46. &LOC     LA        1,&N
  47.          C         1,&CL
  48. .B       ANOP
  49.          AIF       ('&LOC1' NE '&LOC2').NOT12
  50.          AIF       ('&LOC1' NE '').K1
  51.          BH        &LOC3
  52.          MEXIT
  53. .K1      BNH       &LOC1
  54.          AIF       ('&LOC3' EQ '').DONE
  55.          BH        &LOC3
  56.          MEXIT
  57. .NOT12   AIF       ('&LOC2' NE '&LOC3').NOT23
  58.          AIF       ('&LOC2' NE '').K2
  59.          BL        &LOC1
  60.          MEXIT
  61. .K2      BNL       &LOC2
  62.          AIF       ('&LOC1' EQ '').DONE
  63.          BL        &LOC1
  64.          MEXIT
  65. .NOT23   AIF       ('&LOC1' NE '&LOC3').NOT13
  66.          AIF       ('&LOC3' NE '').K3
  67.          BE        &LOC2
  68.          MEXIT
  69. .K3      BNE       &LOC1
  70.          AIF       ('&LOC2' EQ '').DONE
  71.          BE        &LOC2
  72.          MEXIT
  73. .NOT13   AIF       ('&LOC1' EQ '').N1
  74.          BL        &LOC1
  75. .N1      AIF       ('&LOC2' EQ '').N2
  76.          BE        &LOC2
  77. .N2      AIF       ('&LOC3' EQ '').DONE
  78.          BH        &LOC3
  79. .DONE    MEND      ACOMPC
  80. ./  ADD  NAME=ADDI,LEVEL=01,SOURCE=0
  81.          MACRO
  82. &LOC     ADDI       &CL1,&CL2,&CL3,&FLOC,&SLOC
  83.          AIF       ('&CL1' EQ '&CL2').K
  84. &LOC     LM        1,2,&CL2
  85.          A         1,&CL3
  86.          STM       1,2,&CL1
  87.          AGO       .L
  88. .K       ANOP
  89. &LOC     L         1,&CL2
  90.          A         1,&CL3
  91.          ST        1,&CL1
  92. .L       ANOP
  93.          AIF       (T'&FLOC EQ 'O').A
  94.          BO        &FLOC
  95. .A       AIF       (T'&SLOC EQ 'O').B
  96.          BNO       &SLOC
  97. .B       MEND      ADDI
  98. ./  ADD  NAME=ADDLG,LEVEL=01,SOURCE=0
  99.          MACRO
  100. &LOC     ADDLG     &SP,&CL
  101. &LOC     L         1,&SP
  102.          A         1,&CL
  103.          ST        1,&SP
  104.          MEND      ADDLG
  105. ./  ADD  NAME=ADDR,LEVEL=01,SOURCE=0
  106.          MACRO
  107. &LOC     ADDR      &CL1,&CL2,&CL3,&FLOC,&SLOC
  108. &LOC     LD        2,&CL2
  109.          AE        2,&CL3
  110.          STD       2,&CL1
  111.          AIF       (T'&SLOC EQ 'O').M
  112.          B         &SLOC
  113. .M       MEND      ADDR
  114. ./  ADD  NAME=ADDSIB,LEVEL=01,SOURCE=0
  115.          MACRO
  116. &LOC     ADDSIB    &ND1,&ND2
  117. &LOC     L         1,&ND1
  118.          LM        2,3,&ND2
  119.          L         5,FATHER(1)
  120.          L         4,CODE+4(5)
  121.          LA        4,1(4)
  122.          STH       4,CODE+6(5)
  123.          LM        5,6,FATHER(1)
  124.          STM       5,6,FATHER(2)
  125.          LM        5,6,RSIB(1)
  126.          STM       5,6,RSIB(2)
  127.          STM       2,3,RSIB(1)
  128.          MEND      ADDSIB
  129. ./  ADD  NAME=ADDSON,LEVEL=01,SOURCE=0
  130.          MACRO
  131. &LOC     ADDSON    &ND1,&ND2
  132. &LOC     LM        1,2,&ND1
  133.          L         4,CODE+4(1)
  134.          LA        4,1(4)
  135.          STH       4,CODE+6(1)
  136.          LM        4,5,&ND2
  137.          STM       1,2,FATHER(4)
  138.          LM        2,3,LSON(1)
  139.          STM       2,3,RSIB(4)
  140.          STM       4,5,LSON(1)
  141.          MEND      ADDSON
  142. ./  ADD  NAME=ADJUST,LEVEL=01,SOURCE=0
  143.          MACRO
  144. &LOC     ADJUST    &PTR,&CL,&OFFSET
  145. &LOC     L         1,&CL
  146.          L         1,0(1)
  147.          A         1,&OFFSET
  148.          ST        1,&PTR
  149.          MEND      ADJUST
  150. ./  ADD  NAME=AEQL,LEVEL=01,SOURCE=0
  151.          MACRO
  152. &LOC     AEQL      &CL1,&CL2,&LOC1,&LOC2
  153. &LOC     L         1,&CL1
  154.          C         1,&CL2
  155.          AIF       (T'&LOC1 EQ 'O').A
  156.          BNE       &LOC1
  157. .A       AIF       (T'&LOC2 EQ 'O').B
  158.          BE        &LOC2
  159. .B       MEND      AEQL
  160. ./  ADD  NAME=AEQLC,LEVEL=01,SOURCE=0
  161.          MACRO
  162. &LOC     AEQLC     &CL1,&N,&LOC1,&LOC2
  163.          AIF       ('&N' EQ '0').C
  164. &LOC     LA        6,&N
  165.          C         6,&CL1
  166.          AGO       .D
  167. .C       ANOP
  168. &LOC     C         0,&CL1
  169. .D       AIF       (T'&LOC1 EQ 'O').A
  170.          BNE       &LOC1
  171. .A       AIF       (T'&LOC2 EQ 'O').B
  172.          BE        &LOC2
  173. .B       MEND      AEQLC
  174. ./  ADD  NAME=AEQLIC,LEVEL=01,SOURCE=0
  175.          MACRO
  176. &LOC     AEQLIC    &CL1,&CL2,&N,&FLOC,&SLOC
  177. &LOC     L         1,&CL1
  178.          AIF       ('&N' EQ '0').A
  179.          LA        6,&N
  180.          C         6,&CL2.(1)
  181.          AGO       .B
  182. .A       C         0,&CL2.(1)
  183. .B       AIF       (T'&FLOC EQ 'O').C
  184.          BNE       &FLOC
  185. .C       AIF       (T'&SLOC EQ 'O').M
  186.          BE        &SLOC
  187. .M       MEND      AEQLIC
  188. ./  ADD  NAME=AFIELD,LEVEL=01,SOURCE=0
  189.          MACRO
  190. &LOC     AFIELD    &A
  191. &LOC     DESCR     &A,0,0
  192.          MEND      AFIELD
  193. ./  ADD  NAME=APDSP,LEVEL=01,SOURCE=0
  194.          MACRO
  195. &LOC     APDSP     &SP1,&SP2
  196. &LOC     L         15,=A(APDSP)
  197.          LA        2,&SP1
  198.          LM        3,5,&SP2
  199.          BALR      14,15
  200.          MEND      APDSP
  201. ./  ADD  NAME=ARRAY,LEVEL=01,SOURCE=0
  202.          MACRO
  203. &LOC     ARRAY     &N
  204.          DS        0D
  205. &LOC     DC        (2*&N)F'0'
  206.          MEND      ARRAY
  207. ./  ADD  NAME=BKSIZE,LEVEL=01,SOURCE=0
  208.          MACRO
  209. &LOC     BKSIZE    &CL,&PTR
  210. &LOC     L         1,&PTR
  211.          L         15,4(1)
  212.          LA        15,0(15)
  213.          TM        4(1),STTL
  214.          BNO       A&SYSNDX
  215.          LA        15,7+BCDFLD-8(15)
  216.          SRL       15,3
  217.          SLA       15,3
  218. A&SYSNDX AR        15,8
  219.          STM       15,0,&CL
  220. .M       MEND      BKSIZE
  221. ./  ADD  NAME=BKSPCE,LEVEL=01,SOURCE=0
  222.          MACRO
  223. &LOC     BKSPCE    &UNIT
  224. &LOC     L         15,=A(IBCOM#)
  225.          CNOP      0,4
  226.          BAL       14,40(15)
  227.          DC        X'01',AL3(&UNIT)
  228.          MEND      BKSPCE
  229. ./  ADD  NAME=BRANCH,LEVEL=01,SOURCE=0
  230.          MACRO
  231. &LOC1    BRANCH    &LOC2,&LOC3
  232.          AIF       (T'&LOC3 NE 'O').A
  233. &LOC1    B         &LOC2
  234.          MEXIT
  235. .A       ANOP
  236. &LOC1    L         11,=A(&LOC2)
  237.          BR        11
  238.          MEND      BRANCH
  239. ./  ADD  NAME=BRANIC,LEVEL=01,SOURCE=0
  240.          MACRO
  241. &LOC     BRANIC    &CL,&N
  242. &LOC     L         15,&CL
  243.          L         11,&N.(15)
  244.          BR        11
  245.          MEND      BRANIC
  246. ./  ADD  NAME=BUFFER,LEVEL=01,SOURCE=0
  247.          MACRO
  248. &LOC     BUFFER    &N
  249. &LOC     DC        (&N)C' '
  250.          MEND      BUFFER
  251. ./  ADD  NAME=CHECK,LEVEL=01,SOURCE=0
  252.          MACRO
  253. &LOC     CHECK     &FLOC,&SLOC
  254. &LOC     C         12,=A(STACK-12*8+STSIZE*8)
  255.          BH        &FLOC
  256.          MEND      CHECK
  257. ./  ADD  NAME=CHKVAL,LEVEL=01,SOURCE=0
  258.          MACRO
  259. &LOC     CHKVAL    &CL1,&CL2,&SP,&LOC1,&LOC2,&LOC3
  260. &LOC     L         6,&SP
  261.          A         6,&CL2
  262.          C         6,&CL1
  263.          AIF       (T'&LOC1 EQ 'O').A
  264.          BH        &LOC1
  265. .A       AIF       (T'&LOC2 EQ 'O').B
  266.          BE        &LOC2
  267. .B       AIF       (T'&LOC3 EQ 'O').C
  268.          BL        &LOC3
  269. .C       MEND      CHKVAL
  270. ./  ADD  NAME=CLERTB,LEVEL=01,SOURCE=0
  271.          MACRO
  272. &LOC     CLERTB    &TB,&CHAR
  273.          AIF       ('&CHAR' EQ 'CONTIN').A
  274.          AIF       ('&CHAR' EQ 'STOP').B
  275.          AIF       ('&CHAR' EQ 'STOPSH').C
  276. &LOC     L         1,HEX0C4
  277.          AGO       .D
  278. .A       ANOP
  279. &LOC     LR        1,0
  280.          AGO       .D
  281. .B       ANOP
  282. &LOC     L         1,HEX044
  283.          AGO       .D
  284. .C       ANOP
  285. &LOC     L         1,HEX084
  286. .D       L         3,=A(&TB)
  287.          LR        5,0
  288.          LA        6,4
  289.          LA        7,252
  290. A&SYSNDX ST        1,0(3,5)
  291.          BXLE      5,6,A&SYSNDX
  292.          MEND      CLERTB
  293. ./  ADD  NAME=CPYPAT,LEVEL=01,SOURCE=0
  294.          MACRO
  295. &LOC     CPYPAT    &CL1,&CL2,&CL3,&CL4,&CL5,&CL6
  296. &LOC     L         15,=A(COPL)
  297.          LA        2,&CL1
  298.          L         3,&CL2
  299.          L         4,&CL3
  300.          L         5,&CL4
  301.          L         6,&CL5
  302.          L         7,&CL6
  303.          BALR      14,15
  304.          MEND      CPYPAT
  305. ./  ADD  NAME=DATE,LEVEL=01,SOURCE=0
  306.          MACRO
  307. &LOC     DATE      &SP
  308. &LOC     STM       13,1,AISAVE
  309.          LA        13,SAVESAVE
  310.          TIME      TU
  311.          ST        1,PACKEDDT+4
  312.          LM        13,1,AISAVE
  313.          CVB       7,PACKEDDT
  314.          ST        7,INTEDAT
  315.          SR        6,6
  316.          D         6,ONETHOU
  317.          ST        7,YEAR
  318.          MVC       LYD(1),YEAR+3
  319.          NI        LYD,X'03'
  320.          LA        3,SYTABLE
  321.          BC        7,DETMONTH
  322.          LA        3,LYTABLE
  323. DETMONTH M         6,ONETHOU
  324.          S         7,INTEDAT
  325.          LPR       7,7
  326.          LR        2,7
  327.          D         6,THIRTY
  328.          LR        4,7
  329.          M         6,TWO
  330.          S         3,TWO
  331.          CH        2,0(7,3)
  332.          BC        2,INCRMONT
  333.          S         3,TWO
  334.          B         COMPDAY
  335. INCRMONT A         4,ONE
  336. COMPDAY  SH        2,0(7,3)
  337.          CVD       4,PRESULT
  338.          UNPK      ZRESULT(2),PRESULT(8)
  339.          OI        ZRESULT+1,C'0'
  340.          MVC       DBUF(2),ZRESULT
  341.          CVD       2,PRESULT
  342.          UNPK      ZRESULT(2),PRESULT(8)
  343.          OI        ZRESULT+1,C'0'
  344.          MVC       DBUF+3(2),ZRESULT
  345.          L         5,YEAR
  346.          CVD       5,PRESULT
  347.          UNPK      ZRESULT(2),PRESULT(8)
  348.          OI        ZRESULT+1,C'0'
  349.          MVC       DBUF+6(2),ZRESULT
  350.          LA        2,8
  351.          LA        3,0
  352.          LA        4,DBUF
  353.          LA        5,0
  354.          STM       2,5,&SP
  355.          MEND      DATE
  356. ./  ADD  NAME=DECRC,LEVEL=01,SOURCE=0
  357.          MACRO
  358. &LOC     DECRC     &CL,&N
  359. &LOC     L         1,&CL
  360.          AIF       ('&N' EQ '1').A
  361.          AIF       ('&N' EQ 'DWDTH').C
  362.          AIF       ('&N' EQ '2*DWDTH').D
  363.          AIF       ('&N' EQ 'SWDTH').D
  364.          S         1,=A(&N)
  365.          AGO       .B
  366. .A       BCTR      1,0
  367.          AGO       .B
  368. .C       SR        1,8
  369.          AGO       .B
  370. .D       SR        1,8
  371.          SR        1,8
  372. .B       ANOP
  373.          ST        1,&CL
  374.          MEND      DECRC
  375. ./  ADD  NAME=DEQL,LEVEL=01,SOURCE=0
  376.          MACRO
  377. &LOC     DEQL      &CL1,&CL2,&LOC1,&LOC2
  378. &LOC     CLC       &CL1.(8),&CL2
  379.          AIF       (T'&LOC1 EQ 'O').A
  380.          BNE       &LOC1
  381. .A       AIF       (T'&LOC2 EQ 'O').B
  382.          BE        &LOC2
  383. .B       MEND      DEQL
  384. ./  ADD  NAME=DESCR,LEVEL=01,SOURCE=0
  385.          MACRO
  386. &LOC     DESCR     &A,&F,&V
  387.          CNOP      0,8
  388. &LOC     DC        A(&A)
  389.          DC        AL1(&F)
  390.          DC        AL1(0)
  391.          DC        AL2(&V)
  392.          MEND      DESCR
  393. ./  ADD  NAME=DIVC,LEVEL=01,SOURCE=0
  394.          MACRO
  395. &LOC     DIVC      &CL1,&CL2,&N
  396.          AIF       ('&N' EQ '2*DWDTH').A
  397.          L         14,&CL2
  398.          SRDA      14,32
  399.          LA        1,&N
  400.          DR        14,1
  401.          STM       15,0,&CL1
  402.          MEXIT
  403. .A       L         15,&CL2
  404.          SLA       15,3
  405.          STM       15,0,&CL1
  406.          MEND      DIVC
  407. ./  ADD  NAME=DIVI,LEVEL=01,SOURCE=0
  408.          MACRO
  409. &LOC     DIVI      &CL1,&CL2,&CL3,&FLOC,&SLOC
  410. &LOC     LM        3,4,&CL3
  411.          CR        3,0
  412.          AIF       (T'&FLOC NE 'O').A
  413.          BE        A&SYSNDX
  414.          AGO       .B
  415. .A       BE        &FLOC
  416. .B       L         2,&CL2
  417.          SRDA      2,32
  418.          D         2,&CL3
  419.          STM       3,4,&CL1
  420.          AIF       (T'&SLOC EQ 'O').M
  421.          B         &SLOC
  422. .M       ANOP
  423. A&SYSNDX EQU       *
  424.          MEND      DIVI
  425. ./  ADD  NAME=DIVR,LEVEL=01,SOURCE=0
  426.          MACRO
  427. &LOC     DIVR      &CL1,&CL2,&CL3,&FLOC,&SLOC
  428. &LOC     LE        4,&CL3
  429.          CE        4,ZEROCL
  430.          AIF       (T'&FLOC NE 'O').A
  431.          BE        A&SYSNDX
  432.          AGO       .B
  433. .A       BE        &FLOC
  434. .B       LD        2,&CL2
  435.          DER       2,4
  436.          STD       2,&CL1
  437.          AIF       (T'&SLOC NE 'O').C
  438.          AGO       .D
  439. .C       B         &SLOC
  440. .D       AIF       (T'&FLOC NE 'O').M
  441. A&SYSNDX EQU       *
  442. .M       MEND      DIVR
  443. ./  ADD  NAME=ENDEX,LEVEL=01,SOURCE=0
  444.          MACRO
  445. &LOC     ENDEX     &CL
  446. &LOC     L         1,=A(SPIECUTF)
  447.          C         0,0(1)
  448.          BE        U&SYSNDX
  449.          LA        1,16
  450.          ST        1,RETCOD
  451. U&SYSNDX C         0,&CL
  452.          BE        V&SYSNDX
  453.          NC        &CL.(4),=F'4095'
  454.          MVC       A&SYSNDX+1(2),&CL+2
  455.          CNOP      0,4
  456.          B         *+8
  457.          DC        AL1(128)
  458. A&SYSNDX DC        AL3(0)
  459.          L         1,*-4
  460.          SVC       13
  461. V&SYSNDX L         15,=A(FINIS)
  462.          BR        15
  463.          MEND      ENDEX
  464. ./  ADD  NAME=ENFILE,LEVEL=01,SOURCE=0
  465.          MACRO
  466. &LOC     ENFILE    &UNIT
  467. &LOC     L         15,=A(IBCOM#)
  468.          CNOP      0,4
  469.          BAL       14,48(15)
  470.          DC        X'01',AL3(&UNIT)
  471.          MEND      ENFILE
  472. ./  ADD  NAME=EXPI,LEVEL=01,SOURCE=0
  473.          MACRO
  474. &LOC     EXPI      &CL1,&CL2,&CL3,&FLOC,&SLOC
  475. &LOC     C         0,&CL2
  476.          BNE       A&SYSNDX
  477.          C         0,&CL3
  478.          AIF       (T'&FLOC NE 'O').A
  479.          BNL       F&SYSNDX
  480.          AGO       .B
  481. .A       BNL       &FLOC
  482. .B       ANOP
  483. Z&SYSNDX LR        3,0
  484.          B         R&SYSNDX
  485. A&SYSNDX C         0,&CL3
  486.          BNE       B&SYSNDX
  487.          LA        3,1
  488.          B         R&SYSNDX
  489. B&SYSNDX BL        C&SYSNDX
  490.          L         3,&CL2
  491.          LPR       3,3
  492.          C         3,=F'1'
  493.          BNE       Z&SYSNDX
  494.          L         3,&CL2
  495.          B         D&SYSNDX
  496. C&SYSNDX LA        3,1
  497. D&SYSNDX L         4,&CL3
  498.          LPR       4,4
  499. E&SYSNDX LR        2,3
  500.          M         2,&CL2
  501.          SLDA      2,32
  502.          AIF       (T'&FLOC EQ 'O').C
  503.          BO        &FLOC
  504.          AGO       .D
  505. .C       BO        F&SYSNDX
  506. .D       SRDA      2,32
  507.          BCT       4,E&SYSNDX
  508. R&SYSNDX L         4,&CL2+4
  509.          STM       3,4,&CL1
  510.          AIF       (T'&SLOC EQ 'O').M
  511.          B         &SLOC
  512. F&SYSNDX EQU       *
  513. .M       MEND      EXPI
  514. ./   ADD NAME=EXPR,LEVEL=01,SOURCE=0
  515.          MACRO
  516. &LOC     EXPR      &CL1,&CL2,&CL3,&FLOC,&SLOC
  517. &LOC     LE        0,&CL2
  518.          LE        2,&CL3
  519.          L         15,=A(EXREAL)
  520.          BALR      14,15
  521.          AIF       (T'&FLOC EQ 'O').A
  522.          B         &FLOC
  523.          AGO       .B
  524. .A       B         A&SYSNDX
  525. .B       STE       0,&CL1
  526.          L         2,&CL2+4
  527.          ST        2,&CL1+4
  528.          AIF       (T'&SLOC EQ 'O').C
  529.          B         &SLOC
  530. .C       ANOP
  531. A&SYSNDX EQU       *
  532.          MEND      EXPR
  533. ./  ADD  NAME=FSHRTN,LEVEL=01,SOURCE=0
  534.          MACRO
  535. &LOC     FSHRTN    &SP,&N
  536. &LOC     LM        1,2,&SP
  537.          AIF       ('&N' EQ '1').A
  538.          S         1,=F'&N'
  539.          AGO       .B
  540. .A       BCTR      1,0
  541. .B       ANOP
  542.          LA        2,&N.(2)
  543.          STM       1,2,&SP
  544.          MEND      FSHRTN
  545. ./  ADD  NAME=GETA,LEVEL=01,SOURCE=0
  546.          MACRO
  547. &LOC     GETA      &CL1,&CL2,&CL3
  548. &LOC     L         1,&CL3
  549.          L         2,&CL2
  550.          L         1,0(1,2)
  551.          ST        1,&CL1
  552.          MEND      GETA
  553. ./  ADD  NAME=GETAC,LEVEL=01,SOURCE=0
  554.          MACRO
  555. &LOC     GETAC     &CL1,&CL2,&N
  556. &LOC     L         1,&CL2
  557.          AIF       ('&N' EQ '-2*DWDTH').A
  558.          L         1,&N.(1)
  559.          ST        1,&CL1
  560.          MEXIT
  561. .A       SR        1,8
  562.          SR        1,8
  563.          L         1,0(1)
  564.          ST        1,&CL1
  565.          MEND      GETAC
  566. ./  ADD  NAME=GETBAL,LEVEL=01,SOURCE=0
  567.          MACRO
  568. &LOC     GETBAL    &TXSP,&LEN,&FLOC,&SLOC
  569. &LOC     LA        1,&TXSP
  570.          L         3,&LEN
  571.          L         4,0(1)
  572.          LR        5,4
  573.          A         5,4(1)
  574.          A         5,8(1)
  575.          LA        4,1(4)
  576.          CLI       0(5),C')'
  577.          BE        &FLOC
  578.          CLI       0(5),C'('
  579.          BNE       GBALS
  580.          LA        6,1
  581. GBAL1    BCT       3,GBAL2
  582.          B         &FLOC
  583. GBAL2    LA        4,1(4)
  584.          LA        5,1(5)
  585.          CLI       0(5),C')'
  586.          BE        GBAL3
  587.          CLI       0(5),C'('
  588.          BNE       GBAL1
  589.          LA        6,1(6)
  590.          B         GBAL1
  591. GBAL3    BCT       6,GBAL1
  592. GBALS    ST        4,0(1)
  593. .B       AIF       (T'&SLOC EQ 'O').C
  594.          B         &SLOC
  595. .C       MEND      GETBAL
  596. ./  ADD  NAME=GETD,LEVEL=01,SOURCE=0
  597.          MACRO
  598. &LOC     GETD      &CL1,&CL2,&OFFSET
  599. &LOC     L         1,&OFFSET
  600.          L         2,&CL2
  601.          LD        0,0(1,2)
  602.          STD       0,&CL1
  603.          MEND      GETD
  604. ./  ADD  NAME=GETDC,LEVEL=01,SOURCE=0
  605.          MACRO
  606. &LOC     GETDC     &CL1,&CL2,&N
  607. &LOC     L         1,&CL2
  608.          LD        0,&N.(1)
  609.          STD       0,&CL1
  610.          MEND      GETDC
  611. ./  ADD  NAME=GETLG,LEVEL=01,SOURCE=0
  612.          MACRO
  613. &LOC     GETLG     &CL,&SP
  614. &LOC     L         15,&SP
  615.          STM       15,0,&CL
  616.          MEND      GETLG
  617. ./  ADD  NAME=GETLTH,LEVEL=01,SOURCE=0
  618.          MACRO
  619. &LOC     GETLTH    &CL,&CL2
  620. &LOC     L         15,&CL2
  621.          LA        15,7+BCDFLD-8(15)
  622.          SRL       15,3
  623.          SLA       15,3
  624.          STM       15,0,&CL
  625.          MEND      GETLTH
  626. ./  ADD  NAME=GETSIZ,LEVEL=01,SOURCE=0
  627.          MACRO
  628. &LOC     GETSIZ    &CL,&PTR
  629. &LOC     L         15,&PTR
  630.          L         15,4(15)
  631.          LA        15,0(15)
  632.          STM       15,0,&CL
  633.          MEND      GETSIZ
  634. ./  ADD  NAME=GETSPC,LEVEL=01,SOURCE=0
  635.          MACRO
  636. &LOC     GETSPC    &SP,&CL,&N
  637. &LOC     L         1,&CL
  638.          LM        1,4,&N.(1)
  639.          STM       1,4,&SP
  640.          MEND      GETSPC
  641. ./  ADD  NAME=INCRC,LEVEL=01,SOURCE=0
  642.          MACRO
  643. &LOC     INCRC     &CL,&N
  644. &LOC     L         1,&CL
  645.          AIF       ('&N' EQ 'DWDTH').A
  646.          LA        1,&N.(1)
  647.          AGO       .C
  648. .A       AR        1,8
  649.          AGO       .C
  650. .C       ANOP
  651.          ST        1,&CL
  652.          MEND      INCRC
  653. ./  ADD  NAME=INCRL,LEVEL=01,SOURCE=0
  654.          MACRO
  655. &LOC     INCRL     &SP,&L
  656. &LOC     INCRC     &SP,&L
  657.          MEND      INCRL
  658. ./  ADD  NAME=INCRV,LEVEL=01,SOURCE=0
  659.          MACRO
  660. &LOC     INCRV     &PTR,&N
  661. &LOC     L         6,&PTR+4
  662.          LA        6,&N.(6)
  663.          STH       6,&PTR+6
  664.          MEND      INCRV
  665. ./  ADD  NAME=INIT,LEVEL=01,SOURCE=0
  666.          MACRO
  667. &LOC     INIT
  668.          USING     *,15
  669.          SAVE      (14,12),,SNOBOL4
  670.          BALR      11,0
  671.          USING     *,11
  672. &LOC     B         W&SYSNDX+8
  673. W&SYSNDX DC        A(COMMON,COMMON+4096)
  674.          LM        9,10,W&SYSNDX
  675.          USING     COMMON,9,10
  676.          ST        13,SAVE13
  677.          LA        4,SAVESAVE
  678.          ST        13,4(4)
  679.          ST        4,8(13)
  680.          L         15,=A(IBCOM#)
  681.          BAL       14,64(15)
  682.          LR        2,1
  683.          L         2,0(2)
  684.          LH        3,0(2)
  685.          LA        2,2(2)
  686.          SR        0,0
  687.          CR        0,3
  688.          BE        GET
  689.          AR        3,2
  690. KEY      CLI       0(2),C'L'
  691.          BE        LOW
  692.          CLI       0(2),C'H'
  693.          BE        HIGH
  694.          CLI       0(2),C'R'
  695.          BNE       GET
  696.          BAL       8,CONVERT
  697.          ST        5,RESERVE
  698.          B         DTEST
  699. LOW      BAL       8,CONVERT
  700.          ST        5,MEMREQ
  701.          B         DTEST
  702. HIGH     BAL       8,CONVERT
  703.          ST        5,MEMTOP
  704. DTEST    CLI       DONE,C'D'
  705.          BNE       KEY
  706. GET      L         2,RESERVE
  707.          L         3,MEMREQ
  708.          AR        3,2
  709.          ST        3,MEMREQ
  710.          L         3,MEMTOP
  711.          AR        3,2
  712.          ST        3,MEMTOP
  713.          LA        13,SAVESAVE
  714.          GETMAIN   VU,LA=MEMREQ,A=MEMGIV
  715.          LM        1,2,MEMGIV
  716.          L         3,RESERVE
  717.          SR        2,3
  718.          STM       1,2,MEMREQ
  719.          AR        2,1
  720.          STM       2,3,MEMGIV
  721.          FREEMAIN  V,A=MEMGIV
  722.          L         2,MEMREQ
  723.          ST        2,HDSGPT
  724.          ST        2,FRSGPT
  725.          A         2,MEMTOP
  726.          ST        2,TLSGPT
  727.          B         A&SYSNDX
  728. CONVERT  CLI       1(2),C'='
  729.          BNE       GET
  730.          LA        2,2(2)
  731.          CR        2,3
  732.          BNL       GET
  733.          SR        5,5
  734. CLOOP    CLI       0(2),C'0'
  735.          BL        GET
  736.          CLI       0(2),C'9'
  737.          BH        GET
  738.          MVC       CHOR(1),0(2)
  739.          NI        CHOR,X'0F'
  740.          M         4,=F'10'
  741.          A         5,DOGIT
  742.          LA        2,1(2)
  743.          CR        2,3
  744.          BL        MORE
  745.          MVI       DONE,C'D'
  746.          BR        8
  747. MORE     CLI       0(2),C','
  748.          BNE       CLOOP
  749.          LA        2,1(2)
  750.          BR        8
  751. A&SYSNDX EQU       *
  752.          LA        13,SAVESAVE
  753.          SPIE      SPIECUT,((1,15))
  754.          L         3,SIGRESET
  755.          SPM       3
  756.          STIMER    TASK,TUINTVL=MAXTIM
  757.          LA        0,0
  758.          LA        8,8
  759.          MEND      INIT
  760. ./  ADD  NAME=INSERT,LEVEL=01,SOURCE=0
  761.          MACRO
  762. &LOC     INSERT    &ND1,&ND2
  763. &LOC     LM        1,2,&ND1
  764.          LM        3,4,FATHER(1)
  765.          LM        3,4,LSON(3)
  766.          LM        5,6,&ND2
  767.          L         7,CODE+4(5)
  768.          LA        7,1(7)
  769.          STH       7,CODE+6(5)
  770.          STM       5,6,RSIB(3)
  771.          LM        3,4,FATHER(1)
  772.          STM       3,4,FATHER(5)
  773.          STM       5,6,FATHER(1)
  774.          STM       1,2,LSON(5)
  775.          MEND      INSERT
  776. ./  ADD  NAME=INTRL,LEVEL=01,SOURCE=0
  777.          MACRO
  778. &LOC     INTRL     &CL1,&CL2
  779. &LOC     L         2,&CL2
  780.          AL        2,BIG2+4
  781.          ST        2,REALBB+4
  782.          LD        2,REALBB
  783.          SD        2,BIG2
  784.          STE       2,&CL1
  785.          LA        2,R
  786.          ST        2,&CL1+4
  787.          MEND      INTRL
  788. ./  ADD  NAME=INTSPC,LEVEL=01,SOURCE=0
  789.          MACRO
  790. &LOC     INTSPC    &SP,&CL
  791. &LOC     L         15,=A(BDSPEC)
  792.          LA        1,&SP
  793.          LA        2,&CL
  794.          BALR      14,15
  795.          MEND      INTSPC
  796. ./  ADD  NAME=ISTACK,LEVEL=01,SOURCE=0
  797.          MACRO
  798. &LOC     ISTACK
  799. &LOC     L         12,=A(STACK-12*8)
  800.          LR        13,0
  801.          MEND      ISTACK
  802. ./  ADD  NAME=LCOMP,LEVEL=01,SOURCE=0
  803.          MACRO
  804. &LOC     LCOMP     &SP1,&SP2,&LOC1,&LOC2,&LOC3
  805. &LOC     ACOMP     &SP1,&SP2,&LOC1,&LOC2,&LOC3
  806. .DONE    MEND      LCOMP
  807. ./  ADD  NAME=LEQLC,LEVEL=01,SOURCE=0
  808.          MACRO
  809. &LOC     LEQLC     &CL1,&N,&LOC1,&LOC2
  810. &LOC     AEQLC     &CL1,&N,&LOC1,&LOC2
  811. .B       MEND      LEQLC
  812. ./  ADD  NAME=LEXCMP,LEVEL=01,SOURCE=0
  813.          MACRO
  814. &LOC     LEXCMP    &SP1,&SP2,&GLOC,&ELOC,&LLOC
  815. &LOC     LM        2,4,&SP1
  816.          LM        5,7,&SP2
  817.          AIF       ('&GLOC' EQ '&LLOC').S
  818.          L         15,=A(COMPLG)
  819.          BALR      14,15
  820.          AIF       (T'&GLOC EQ 'O').A
  821.          B         &GLOC
  822.          AIF       (T'&ELOC EQ 'O').B
  823.          B         &ELOC
  824.          AIF       (T'&LLOC EQ 'O').M
  825.          B         &LLOC
  826.          MEXIT
  827. .A       AIF       (T'&LLOC NE 'O').D
  828.          B         *+8
  829.          AGO       .E
  830. .D       B         *+12
  831. .E       AIF       (T'&ELOC EQ 'O').F
  832.          B         &ELOC
  833.          AGO       .G
  834. .F       B         *+8
  835. .G       AIF       (T'&LLOC EQ 'O').M
  836.          B         &LLOC
  837.          MEXIT
  838. .B       AIF       (T'&LLOC EQ 'O').H
  839.          B         *+8
  840.          B         &LLOC
  841.          MEXIT
  842. .H       B         *+4
  843.          MEXIT
  844. .S       CR        2,5
  845.          AIF       (T'&LLOC EQ 'O').CS
  846.          BNE       &LLOC
  847.          AGO       .DS
  848. .CS      BNE       A&SYSNDX
  849. .DS      L         15,=A(SPECEQ)
  850.          BALR      14,15
  851.          AIF       (T'&LLOC EQ 'O').AS
  852.          B         &LLOC
  853.          AGO       .BS
  854. .AS      B         *+8
  855. .BS      AIF       (T'&ELOC EQ 'O').M
  856.          B         &ELOC
  857. A&SYSNDX EQU       *
  858. .M       MEND      LEXCMP
  859. ./  ADD  NAME=LHERE,LEVEL=01,SOURCE=0
  860.          MACRO
  861. &LOC     LHERE
  862.          CNOP      0,4
  863. &LOC     EQU       *
  864.          MEND      LHERE
  865. ./  ADD  NAME=LINK,LEVEL=01,SOURCE=0
  866.          MACRO
  867. &LOC     LINK      &CL1,&CL2,&CL3,&CL4,&FLOC,&SLOC
  868. &LOC     L         1,&CL2
  869.          L         2,&CL3
  870.          LA        3,&CL1
  871.          L         4,&CL4
  872.          L         15,=A(LINKER)
  873.          BALR      14,15
  874.          AIF       (T'&FLOC EQ 'O').A
  875.          B         &FLOC
  876.          AGO       .B
  877. .A       B         A&SYSNDX
  878. .B       AIF       (T'&SLOC EQ 'O').C
  879.          B         &SLOC
  880. .C       ANOP
  881. A&SYSNDX EQU       *
  882.          MEND      LINK
  883. ./  ADD  NAME=LINKOR,LEVEL=01,SOURCE=0
  884.          MACRO
  885. &LOC     LINKOR    &NPTR,&LPTR
  886. &LOC     L         1,&NPTR
  887.          LR        2,1
  888. L&SYSNDX L         3,16(2)
  889.          CR        3,0
  890.          BE        I&SYSNDX
  891.          AR        3,1
  892.          LR        2,3
  893.          B         L&SYSNDX
  894. I&SYSNDX L         1,&LPTR
  895.          ST        1,16(2)
  896.          MEND      LINKOR
  897. ./  ADD  NAME=LOAD,LEVEL=01,SOURCE=0
  898.          MACRO
  899. &LOC     LOAD      &CL1,&SP1,&SP2
  900. &LOC     L         15,=A(LOADER)
  901.          LA        1,&SP1
  902.          LA        2,&SP2
  903.          BALR      14,15
  904.          ST        2,&CL1
  905.          ST        0,&CL1+4
  906.          MEND      LOAD
  907. ./  ADD  NAME=LOCAPT,LEVEL=01,SOURCE=0
  908.          MACRO
  909. &LOC     LOCAPT    &PTR1,&PTR2,&CL,&FLOC,&SLOC
  910.          LCLA      &M
  911. &LOC     L         15,&PTR2
  912.          AIF       (T'&FLOC EQ 'O').A
  913. &M       SETA      &M+1
  914. .A       L         5,4(15)
  915.          LA        5,0(5,15)
  916.          LR        4,8
  917.          SR        5,4
  918.          AR        4,8
  919. C&SYSNDX CLC       8(8,15),&CL
  920.          BE        D&SYSNDX
  921.          BXLE      15,4,C&SYSNDX
  922.          AIF       (&M EQ 0).C
  923.          B         &FLOC
  924.          AGO       .D
  925. .C       B         A&SYSNDX
  926. .D       ANOP
  927. D&SYSNDX STM       15,0,&PTR1
  928.          AIF       (T'&SLOC EQ 'O').M
  929.          B         &SLOC
  930.          AIF       (&M NE 0).M
  931. A&SYSNDX EQU       *
  932. .M       MEND      LOCAPT
  933. ./  ADD  NAME=LOCAPV,LEVEL=01,SOURCE=0
  934.          MACRO
  935. &LOC     LOCAPV    &PTR1,&PTR2,&CL,&FLOC,&SLOC
  936.          LCLA      &M
  937. &LOC     L         15,&PTR2
  938.          AIF       (T'&FLOC EQ 'O').A
  939. &M       SETA      &M+1
  940. .A       L         5,4(15)
  941.          LA        5,0(5,15)
  942.          LR        4,8
  943.          SR        5,4
  944.          AR        4,8
  945. C&SYSNDX CLC       16(8,15),&CL
  946.          BE        D&SYSNDX
  947.          BXLE      15,4,C&SYSNDX
  948.          AIF       (&M EQ 0).C
  949.          B         &FLOC
  950.          AGO       .D
  951. .C       B         A&SYSNDX
  952. .D       ANOP
  953. D&SYSNDX STM       15,0,&PTR1
  954.          AIF       (T'&SLOC EQ 'O').M
  955.          B         &SLOC
  956.          AIF       (&M NE 0).M
  957. A&SYSNDX EQU       *
  958. .M       MEND      LOCAPV
  959. ./  ADD  NAME=LOCSP,LEVEL=01,SOURCE=0
  960.          MACRO
  961. &LOC     LOCSP     &SP,&PTR
  962. &LOC     LM        3,4,&PTR
  963.          CR        0,3
  964.          BNE       B&SYSNDX
  965.          ST        0,&SP
  966.          B         A&SYSNDX
  967. B&SYSNDX L         1,4(3)
  968.          LA        1,0(1)
  969.          LA        2,BCDFLD
  970.          STM       1,4,&SP
  971. A&SYSNDX EQU       *
  972.          MEND      LOCSP
  973. ./  ADD  NAME=LVALUE,LEVEL=01,SOURCE=0
  974.          MACRO
  975. &LOC     LVALUE    &RETVAL,&NODPTR
  976. &LOC     L         15,=A(LVAL)
  977.          LA        1,&RETVAL
  978.          L         2,&NODPTR
  979.          BALR      14,15
  980.          MEND      LVALUE
  981. ./  ADD  NAME=MAKNOD,LEVEL=01,SOURCE=0
  982.          MACRO
  983. &LOC     MAKNOD    &PTR,&BLK,&VAL,&OR,&PROC,&ARGL
  984. &LOC     LM        1,2,&BLK
  985.          LM        3,4,&PROC
  986.          L         5,&OR
  987.          LR        6,0
  988.          L         7,&VAL
  989.          STM       3,7,8(1)
  990.          AIF       (T'&ARGL EQ 'O').C
  991.          LM        3,4,&ARGL
  992.          STM       3,4,4*8(1)
  993. .C       STM       1,2,&PTR
  994.          MEND      MAKNOD
  995. ./  ADD  NAME=MDATA,LEVEL=01,SOURCE=0
  996.          DS        0F
  997. MAXTIM   DC        X'7FFFFFFF'
  998. SIGRESET DC        X'36000000'
  999. HEX0C4   DC        X'0C0C0C0C'
  1000. HEX044   DC        X'04040404'
  1001. HEX084   DC        X'08080808'
  1002. HEX04    DC        X'00000004'
  1003. HEX08    DC        X'00000008'
  1004. HEX0C    DC        X'0000000C'
  1005. AISAVE   DC        5F'0'
  1006.          DS        0D
  1007. PACKEDDT DC        PL8'0'
  1008. PRESULT  DC        PL8'0'
  1009. INTEDAT  DC        F'0'
  1010. ONE      DC        F'1'
  1011. TWO      DC        F'2'
  1012. THIRTY   DC        F'30'
  1013. ONETHOU  DC        F'1000'
  1014. YEAR     DC        F'0'
  1015.          DC        H'0'
  1016. SYTABLE  DC        H'31,59,90,120,151,181,212,243,273,304,334,365'
  1017.          DC        H'0'
  1018. LYTABLE  DC        H'31,60,91,121,151,182,213,244,274,305,335,366'
  1019. LYD      DC        X'00'
  1020. ZRESULT  DC        CL2'  '
  1021. DBUF     DC        C'  /  /  '
  1022.          DS        0D
  1023. REALB    DC        X'4E00000000000000'
  1024. REALBB   DC        X'4E00000000000000'
  1025. BIG2     DC        X'4E00000080000000'
  1026. BIGZIP   DC        X'4E00000000000000'
  1027. MAXINT   DC        X'487FFFFFFF000000'
  1028. TRTBL    DC        256C' '
  1029. STRING   CSECT
  1030. ALPHA    DC        X'000102030405060708090A0B0C0D0E0F'
  1031.          DC        X'101112131415161718191A1B1C1D1E1F'
  1032.          DC        X'202122232425262728292A2B2C2D2E2F'
  1033.          DC        X'303132333435363738393A3B3C3D3E3F'
  1034.          DC        X'404142434445464748494A4B4C4D4E4F'
  1035.          DC        X'505152535455565758595A5B5C5D5E5F'
  1036.          DC        X'606162636465666768696A6B6C6D6E6F'
  1037.          DC        X'707172737475767778797A7B7C7D7E7F'
  1038.          DC        X'808182838485868788898A8B8C8D8E8F'
  1039.          DC        X'909192939495969798999A9B9C9D9E9F'
  1040.          DC        X'A0A1A2A3A4A5A6A7A8A9AAABACADAEAF'
  1041.          DC        X'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF'
  1042.          DC        X'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF'
  1043.          DC        X'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF'
  1044.          DC        X'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF'
  1045.          DC        X'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF'
  1046. ALPHAR   DC        X'FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0'
  1047.          DC        X'EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0'
  1048.          DC        X'DFDEDDDCDBDAD9D8D7D6D5D4D3D2D1D0'
  1049.          DC        X'CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0'
  1050.          DC        X'BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0'
  1051.          DC        X'AFAEADACABAAA9A8A7A6A5A4A3A2A1A0'
  1052.          DC        X'9F9E9D9C9B9A99989796959493929190'
  1053.          DC        X'8F8E8D8C8B8A89888786858483828180'
  1054.          DC        X'7F7E7D7C7B7A79787776757473727170'
  1055.          DC        X'6F6E6D6C6B6A69686766656463626160'
  1056.          DC        X'5F5E5D5C5B5A59585756555453525150'
  1057.          DC        X'4F4E4D4C4B4A49484746454443424140'
  1058.          DC        X'3F3E3D3C3B3A39383736353433323130'
  1059.          DC        X'2F2E2D2C2B2A29282726252423222120'
  1060.          DC        X'1F1E1D1C1B1A19181716151413121110'
  1061.          DC        X'0F0E0D0C0B0A09080706050403020100'
  1062. AMPST    DC        C'&&'
  1063. QTSTR    DC        C''''
  1064. S4       CSECT
  1065. SAVESAVE DC        18F'0'
  1066. SAVE13   DC        F'0'
  1067. MEMREQ   DC        A(MEMMIN*DWDTH)
  1068. MEMTOP   DC        A(MEMMAX*DWDTH)
  1069. MEMGIV   DC        A(0)
  1070. MEMLEN   DC        A(0)
  1071. RESERVE  DC        A(MEMLEV)
  1072. DOGIT    DC        F'0'
  1073. CHOR     EQU       DOGIT+3
  1074. DONE     DC        C' '
  1075.          LTORG
  1076. ./  ADD  NAME=MLINK,LEVEL=01,SOURCE=0
  1077. S4       CSECT
  1078.          ENTRY     ADDFN
  1079.          ENTRY     AROWFN
  1080.          ENTRY     ATFN
  1081.          ENTRY     BARFN
  1082.          ENTRY     BIAMFN
  1083.          ENTRY     BIATFN
  1084.          ENTRY     BINGFN
  1085.          ENTRY     BIPDFN
  1086.          ENTRY     BIPRFN
  1087.          ENTRY     BIQSFN
  1088.          ENTRY     COMMON
  1089.          ENTRY     DATA
  1090.          ENTRY     DIVFN
  1091.          ENTRY     DOLFN
  1092.          ENTRY     DOTFN
  1093.          ENTRY     EXPFN
  1094.          EXTRN     EXREAL
  1095.          ENTRY     INDFN
  1096.          ENTRY     INTR10
  1097.          ENTRY     KEYFN
  1098.          ENTRY     MNSFN
  1099.          ENTRY     MPYFN
  1100.          ENTRY     NAMFN
  1101.          ENTRY     NEGFN
  1102.          ENTRY     OBLIST
  1103.          ENTRY     ORFN
  1104.          ENTRY     PDFN
  1105.          ENTRY     PLSFN
  1106.          ENTRY     PRFN
  1107.          ENTRY     QUESFN
  1108.          ENTRY     RETCOD
  1109.          ENTRY     SAVESAVE
  1110.          ENTRY     SAVE13
  1111.          ENTRY     SLHFN
  1112.          ENTRY     STRFN
  1113.          ENTRY     STYPE
  1114.          ENTRY     SUBFN
  1115.          ENTRY     SYSCUT
  1116.          EXTRN     APDSP
  1117.          EXTRN     BDSPEC
  1118.          EXTRN     BIOPTB
  1119.          EXTRN     CARDTB
  1120.          EXTRN     COMPLG
  1121.          EXTRN     COPL
  1122.          EXTRN     DECBIN
  1123.          EXTRN     ELEMTB
  1124.          EXTRN     EOSTB
  1125.          EXTRN     FINIS
  1126.          EXTRN     FRWDTB
  1127.          EXTRN     GOTOTB
  1128.          EXTRN     IBCOM#
  1129.          EXTRN     IBLKTB
  1130.          EXTRN     LVAL
  1131.          EXTRN     LBLTB
  1132.          EXTRN     LBLXTB
  1133.          EXTRN     LINKER
  1134.          EXTRN     LOADER
  1135.          EXTRN     MOVTST
  1136.          EXTRN     NUMBTB
  1137.          EXTRN     REALST
  1138.          EXTRN     SNABTB
  1139.          EXTRN     SPECEQ
  1140.          EXTRN     SPIECUT
  1141.          EXTRN     SPIECUTF
  1142.          EXTRN     SPREAL
  1143.          EXTRN     STPRNT
  1144.          EXTRN     STREAD
  1145.          EXTRN     STREAM
  1146.          EXTRN     UNLOADER
  1147.          EXTRN     UNOPTB
  1148.          EXTRN     VARATB
  1149. ./  ADD  NAME=MNREAL,LEVEL=01,SOURCE=0
  1150.          MACRO
  1151. &LOC     MNREAL    &CL1,&CL2
  1152. &LOC     LD        2,&CL2
  1153.          LCER      2,2
  1154.          STD       2,&CL1
  1155.          MEND      MNREAL
  1156. ./  ADD  NAME=MNSINT,LEVEL=01,SOURCE=0
  1157.          MACRO
  1158. &LOC     MNSINT    &CL1,&CL2,&FLOC,&SLOC
  1159. &LOC     LM        2,3,&CL2
  1160.          LCR       2,2
  1161.          BO        &FLOC
  1162.          STM       2,3,&CL1
  1163.          B         &SLOC
  1164.          MEND      MNSINT
  1165. ./  ADD  NAME=MOVA,LEVEL=01,SOURCE=0
  1166.          MACRO
  1167. &LOC     MOVA      &CL1,&CL2
  1168. &LOC     L         1,&CL2
  1169.          ST        1,&CL1
  1170.          MEND      MOVA
  1171. ./  ADD  NAME=MOVAV,LEVEL=01,SOURCE=0
  1172.          MACRO
  1173. &LOC     MOVAV     &CL1,&CL2
  1174. &LOC     L         15,&CL2+4
  1175.          LA        15,0(15)
  1176.          STM       15,0,&CL1
  1177.          MEND      MOVAV
  1178. ./  ADD  NAME=MOVBLK,LEVEL=01,SOURCE=0
  1179.          MACRO
  1180. &LOC     MOVBLK    &PTR1,&PTR2,&CL
  1181. &LOC     L         6,&PTR1
  1182.          L         4,&PTR2
  1183.          AR        4,8
  1184.          AR        6,8
  1185.          L         3,&CL
  1186.          L         15,=A(MOVTST)
  1187.          BALR      14,15
  1188.          MEND      MOVBLK
  1189. ./  ADD  NAME=MOVD,LEVEL=01,SOURCE=0
  1190.          MACRO
  1191. &LOC     MOVD      &CL1,&CL2
  1192. &LOC     LD        0,&CL2
  1193.          STD       0,&CL1
  1194.          MEND      MOVD
  1195. ./  ADD  NAME=MOVV,LEVEL=01,SOURCE=0
  1196.          MACRO
  1197. &LOC     MOVV      &CL1,&CL2
  1198. &LOC     MVC       &CL1+5(3),&CL2+5
  1199.          MEND      MOVV
  1200. ./  ADD  NAME=MOVVA,LEVEL=01,SOURCE=0
  1201.          MACRO
  1202. &LOC     MOVVA     &CL1,&CL2
  1203. &LOC     MVC       &CL1+5(3),&CL2+1
  1204.          MEND      MOVVA
  1205. ./  ADD  NAME=MPYC,LEVEL=01,SOURCE=0
  1206.          MACRO
  1207. &LOC     MPYC      &CL1,&CL2,&N
  1208.          AIF       ('&N' EQ 'DWDTH').A
  1209. &LOC     LA        15,&N
  1210.          AGO       .B
  1211. .A       ANOP
  1212. &LOC     LR        15,8
  1213. .B       ANOP
  1214.          M         14,&CL2
  1215.          STM       15,0,&CL1
  1216.          MEND      MPYC
  1217. ./  ADD  NAME=MPYI,LEVEL=01,SOURCE=0
  1218.          MACRO
  1219. &LOC     MPYI      &CL1,&CL2,&CL3,&FLOC,&SLOC
  1220.          AIF       ('&CL1' EQ '&CL2').K
  1221. &LOC     LM        3,4,&CL2
  1222.          M         2,&CL3
  1223.          STM       3,4,&CL1
  1224.          AGO       .L
  1225. .K       ANOP
  1226. &LOC     L         3,&CL2
  1227.          M         2,&CL3
  1228.          ST        3,&CL1
  1229. .L       AIF       (T'&FLOC EQ 'O').A
  1230.          AGO       .C
  1231. .A       AIF       (T'&SLOC EQ 'O').M
  1232. .C       SLDA      2,32
  1233.          AIF       (T'&FLOC EQ 'O').D
  1234.          BO        &FLOC
  1235.          AIF       (T'&SLOC EQ 'O').M
  1236.          B         &SLOC
  1237.          AGO       .M
  1238. .D       BNO       &SLOC
  1239. .M       MEND      MPYI
  1240. ./  ADD  NAME=MPYR,LEVEL=01,SOURCE=0
  1241.          MACRO
  1242. &LOC     MPYR      &CL1,&CL2,&CL3,&FLOC,&SLOC
  1243. &LOC     LE        2,&CL2
  1244.          ME        2,&CL3
  1245.          STE       2,&CL1
  1246.          L         1,&CL2+4
  1247.          ST        1,&CL1+4
  1248.          AIF       (T'&SLOC EQ 'O').M
  1249.          B         &SLOC
  1250. .M       MEND      MPYR
  1251. ./  ADD  NAME=MSTIME,LEVEL=01,SOURCE=0
  1252.          MACRO
  1253. &LOC     MSTIME    &CL
  1254. &LOC     STM       13,1,AISAVE
  1255.          LA        13,SAVESAVE
  1256.          TTIMER
  1257.          L         3,MAXTIM
  1258.          SR        3,0
  1259.          M         2,=F'26'
  1260.          D         2,=F'1000'
  1261.          ST        3,&CL
  1262.          LM        13,1,AISAVE
  1263.          ST        0,&CL+4
  1264.          MEND      MSTIME
  1265. ./  ADD  NAME=PARMS,LEVEL=01,SOURCE=0
  1266. ALPHSZ   EQU       256
  1267. FNC      EQU       B'00000100'
  1268. FNC@     EQU       B'11111011'
  1269. MARK     EQU       B'00001000'
  1270. MARK@    EQU       B'11110111'
  1271. PTR      EQU       B'00010000'
  1272. PTR@     EQU       B'11101111'
  1273. STTL     EQU       B'00000010'
  1274. STTL@    EQU       B'11111101'
  1275. TTL      EQU       B'00000001'
  1276. TTL@     EQU       B'11111110'
  1277. AWDTH    EQU       8
  1278. DWDTH    EQU       8
  1279. SWDTH    EQU       16
  1280. CPA      EQU       1
  1281. MEMLEV   EQU       10000
  1282. MEMMIN   EQU       4400
  1283. MEMMAX   EQU       25000
  1284. CARDSZ   EQU       80
  1285. SEQSIZ   EQU       8
  1286. STNOSZ   EQU       8
  1287. OBSIZ    EQU       256
  1288. SIZLIM   EQU       16777215
  1289. UNITI    EQU       5
  1290. UNITO    EQU       6
  1291. UNITP    EQU       7
  1292. ./  ADD  NAME=PLUGTB,LEVEL=01,SOURCE=0
  1293.          MACRO
  1294. &LOC     PLUGTB    &TB,&CHAR,&SP
  1295. &LOC     LM        1,2,&SP+4
  1296.          AR        1,2
  1297.          LR        3,0
  1298.          L         4,=A(&TB)
  1299.          LR        5,0
  1300.          LA        6,1
  1301.          L         7,&SP
  1302.          SR        1,6
  1303.          AIF       ('&CHAR' EQ 'CONTIN').A
  1304.          AIF       ('&CHAR' EQ 'STOP').B
  1305.          AIF       ('&CHAR' EQ 'STOPSH').C
  1306.          L         2,HEX0C
  1307.          AGO       .D
  1308. .A       LR        2,0
  1309.          AGO       .D
  1310. .B       L         2,HEX04
  1311.          AGO       .D
  1312. .C       L         2,HEX08
  1313. .D       ANOP
  1314. A&SYSNDX BXH       5,6,B&SYSNDX
  1315.          IC        3,0(1,5)
  1316.          STC       2,0(3,4)
  1317.          B         A&SYSNDX
  1318. B&SYSNDX EQU       *
  1319.          MEND      PLUGTB
  1320. ./  ADD  NAME=POPA,LEVEL=01,SOURCE=0
  1321.          MACRO
  1322. &LOC     POPA      &CL
  1323. &LOC     POPD      &CL
  1324.          MEND      POPA
  1325. ./  ADD  NAME=POPD,LEVEL=01,SOURCE=0
  1326.          MACRO
  1327. &LOC     POPD      &CL
  1328.          LCLA      &NO,&N,&K
  1329. &NO      SETA      N'&CL
  1330. &K       SETA      &NO
  1331.          AIF       ('&LOC' EQ '').A
  1332. &LOC     EQU       *
  1333. .A       AIF       (&NO EQ 0).DONE
  1334. &N       SETA      &N+1
  1335.          LD        0,13*8-&N*8(12)
  1336.          STD       0,&CL(&N)
  1337. &NO      SETA      &NO-1
  1338.          AGO       .A
  1339. .DONE    AIF       (&K EQ 1).DONI
  1340.          AIF       (&K EQ 2).DONK
  1341.          S         12,=A(&K*8)
  1342.          MEXIT
  1343. .DONI    SR        12,8
  1344.          MEXIT
  1345. .DONK    SR        12,8
  1346.          SR        12,8
  1347.          MEND      POPD
  1348. ./  ADD  NAME=POPS,LEVEL=01,SOURCE=0
  1349.          MACRO
  1350. &LOC     POPS      &SP
  1351.          LCLA      &N
  1352.          AIF       ('&LOC' EQ '').A
  1353.          CNOP      0,4
  1354. &LOC     EQU       *
  1355. .A       ANOP
  1356. &N       SETA      &N+1
  1357.          LM        1,4,13*8-16*&N.(12)
  1358.          STM       1,4,&SP(&N)
  1359.          AIF       (&N LT N'&SP).A
  1360.          AIF       (&N EQ 1).SR
  1361.          S         12,=A(16*&N)
  1362.          AGO       .SRR
  1363. .SR      SR        12,8
  1364.          SR        12,8
  1365. .SRR     ANOP
  1366.          MEND      POPS
  1367. ./  ADD  NAME=PROC,LEVEL=01,SOURCE=0
  1368.          MACRO
  1369. &LOC     PROC      &ADD
  1370.          AIF       (T'&ADD EQ 'O').A
  1371.          USING     *,11
  1372. &LOC     L         11,=A(&ADD)
  1373.          USING     &ADD,11
  1374.          AGO       .B
  1375. .A       ANOP
  1376.          USING     *,11
  1377. &LOC     EQU       *
  1378. .B       ANOP
  1379.          MEND      PROC
  1380. ./  ADD  NAME=PSTACK,LEVEL=01,SOURCE=0
  1381.          MACRO
  1382. &LOC     PSTACK    &CL
  1383. &LOC     LA        15,11*8(12)
  1384.          STM       15,0,&CL
  1385.          MEND      PSTACK
  1386. ./  ADD  NAME=PUSHA,LEVEL=01,SOURCE=0
  1387.          MACRO
  1388. &LOC     PUSHA     &CL
  1389. &LOC     PUSHD     &CL
  1390.          MEND      PUSHA
  1391. ./  ADD  NAME=PUSHD,LEVEL=01,SOURCE=0
  1392.          MACRO
  1393. &LOC     PUSHD     &CL
  1394.          LCLA      &NO,&N,&K
  1395. &N       SETA      1
  1396. &NO      SETA      N'&CL
  1397. &K       SETA      &NO
  1398.          AIF       ('&LOC' EQ '').A
  1399. &LOC     EQU       *
  1400. .A       AIF       (&NO EQ 0).DONE
  1401.          LD        0,&CL(&N)
  1402.          STD       0,12*8+8*&N.(12)
  1403. &NO      SETA      &NO-1
  1404. &N       SETA      &N+1
  1405.          AGO       .A
  1406. .DONE    AIF       (&K EQ 1).DONI
  1407.          LA        12,8*&K.(12)
  1408.          MEXIT
  1409. .DONI    AR        12,8
  1410.          MEND      PUSHD
  1411. ./  ADD  NAME=PUSHS,LEVEL=01,SOURCE=0
  1412.          MACRO
  1413. &LOC     PUSHS     &SP
  1414.          LCLA      &N
  1415.          AIF       (T'&LOC EQ 'O').A
  1416.          CNOP      0,4
  1417. &LOC     EQU       *
  1418. .A       ANOP
  1419. &N       SETA      &N+1
  1420.          LM        1,4,&SP(&N)
  1421.          STM       1,4,11*8+16*&N.(12)
  1422.          AIF       (&N LT N'&SP).A
  1423.          AIF       (&N EQ 1).AR
  1424.          LA        12,16*&N.(12)
  1425.          MEXIT
  1426. .AR      LA        12,16(12)
  1427.          MEND      PUSHS
  1428. ./  ADD  NAME=PUTAC,LEVEL=01,SOURCE=0
  1429.          MACRO
  1430. &LOC     PUTAC     &CL1,&N,&CL2
  1431. &LOC     L         1,&CL1
  1432.          AIF       ('&CL2' EQ 'ZEROCL').A
  1433.          L         2,&CL2
  1434.          ST        2,&N.(1)
  1435.          MEXIT
  1436. .A       ST        0,&N.(1)
  1437.          MEND      PUTAC
  1438. ./  ADD  NAME=PUTD,LEVEL=01,SOURCE=0
  1439.          MACRO
  1440. &LOC     PUTD      &CL1,&OFFSET,&CL2
  1441. &LOC     L         1,&OFFSET
  1442.          L         2,&CL1
  1443.          LD        0,&CL2
  1444.          STD       0,0(1,2)
  1445.          MEND      PUTD
  1446. ./  ADD  NAME=PUTDC,LEVEL=01,SOURCE=0
  1447.          MACRO
  1448. &LOC     PUTDC     &CL1,&N,&CL2
  1449. &LOC     L         1,&CL1
  1450.          LD        0,&CL2
  1451.          STD       0,&N.(1)
  1452.          MEND      PUTDC
  1453. ./  ADD  NAME=PUTLG,LEVEL=01,SOURCE=0
  1454.          MACRO
  1455. &LOC     PUTLG     &SP,&CL2
  1456. &LOC     L         1,&CL2
  1457.          ST        1,&SP
  1458.          MEND      PUTLG
  1459. ./  ADD  NAME=PUTSPC,LEVEL=01,SOURCE=0
  1460.          MACRO
  1461. &LOC     PUTSPC    &CL,&N,&SP
  1462. &LOC     L         1,&CL
  1463.          LM        2,5,&SP
  1464.          STM       2,5,&N.(1)
  1465.          MEND      PUTSPC
  1466. ./  ADD  NAME=PUTVC,LEVEL=01,SOURCE=0
  1467.          MACRO
  1468. &LOC     PUTVC     &CL1,&N,&CL2
  1469. &LOC     L         1,&CL1
  1470.          L         2,&CL2+4
  1471.          ST        2,4+&N.(1)
  1472.          MEND      PUTVC
  1473. ./  ADD  NAME=RCALL,LEVEL=01,SOURCE=0
  1474.          MACRO
  1475. &LOC     RCALL     &CL,&PROC,&ARGLIST,&LOCS
  1476.          LCLA      &K,&L,&N,&M,&NO
  1477. &NO      SETA      N'&ARGLIST
  1478. &N       SETA      1
  1479. &K       SETA      &NO
  1480. &LOC     LA        14,U&SYSNDX
  1481.          STM       11,14,13*8(12)
  1482.          LR        13,12
  1483. .A       AIF       (&NO EQ 0).DONE
  1484.          LD        0,&ARGLIST(&N)
  1485.          STD       0,14*8+&NO*8(12)
  1486. &NO      SETA      &NO-1
  1487. &N       SETA      &N+1
  1488.          AGO       .A
  1489. .DONE    LA        12,16+&K*8(12)
  1490.          L         11,=A(&PROC)
  1491.          BR        11
  1492.          AIF       ('&CL' EQ '').C
  1493. U&SYSNDX STD       0,&CL
  1494.          AGO       .D
  1495. .C       ANOP
  1496. U&SYSNDX SR        0,0
  1497.          SR        0,0
  1498. .D       AIF       ('&LOCS' EQ '').M
  1499. &K       SETA      0
  1500. .H       ANOP
  1501. &L       SETA      &L+1
  1502.          AIF       (T'&LOCS(&L) EQ 'O').F
  1503.          B         &LOCS(&L)
  1504.          AGO       .G
  1505. .F       B         V&SYSNDX
  1506. &K       SETA      &K+1
  1507. .G       AIF       (&L LT N'&LOCS).H
  1508.          AIF       (&K EQ 0).M
  1509. V&SYSNDX EQU       *
  1510. .M       MEND      RCALL
  1511. ./  ADD  NAME=RCOMP,LEVEL=01,SOURCE=0
  1512.          MACRO
  1513. &LOC     RCOMP     &CL1,&CL2,&GLOC,&ELOC,&LLOC
  1514. &LOC     LE        0,&CL1
  1515.          CE        0,&CL2
  1516.          BH        &GLOC
  1517.          BE        &ELOC
  1518.          B         &LLOC
  1519.          MEND      RCOMP
  1520. ./  ADD  NAME=REALST,LEVEL=01,SOURCE=0
  1521.          MACRO
  1522. &LOC     REALST    &SP,&CL
  1523. &LOC     L         15,=A(REALST)
  1524.          LA        5,&SP
  1525.          LE        2,&CL
  1526.          BALR      14,15
  1527.          MEND      REALST
  1528. ./  ADD  NAME=REMSP,LEVEL=01,SOURCE=0
  1529.          MACRO
  1530. &LOC     REMSP     &SP1,&SP2,&SP3
  1531. &LOC     LM        1,4,&SP2
  1532.          L         5,&SP3
  1533.          AR        2,5
  1534.          SR        1,5
  1535.          STM       1,4,&SP1
  1536.          MEND      REMSP
  1537. ./  ADD  NAME=RESETF,LEVEL=01,SOURCE=0
  1538.          MACRO
  1539. &LOC     RESETF    &PTR,&FLAG
  1540. &LOC     NI        &PTR+4,&FLAG.@
  1541.          MEND      RESETF
  1542. ./  ADD  NAME=REWIND,LEVEL=01,SOURCE=0
  1543.          MACRO
  1544. &LOC     REWIND    &UNIT
  1545. &LOC     L         15,=A(IBCOM#)
  1546.          CNOP      0,4
  1547.          BAL       14,44(15)
  1548.          DC        X'01',AL3(&UNIT)
  1549.          MEND      REWIND
  1550. ./  ADD  NAME=RLINT,LEVEL=01,SOURCE=0
  1551.          MACRO
  1552. &LOC     RLINT     &YCL,&XCL,&LOC1,&LOC2
  1553. &LOC     SDR       2,2
  1554.          LE        2,&XCL
  1555.          TM        &XCL,X'40'
  1556.          BNO       C&SYSNDX
  1557.          LTDR      2,2
  1558.          BNZ       F&SYSNDX
  1559. C&SYSNDX ST        0,&YCL
  1560.          B         D&SYSNDX
  1561. F&SYSNDX CE        2,MAXINT
  1562.          AIF       (T'&LOC1 EQ 'O').A
  1563.          BH        &LOC1
  1564.          AGO       .C
  1565. .A       BH        E&SYSNDX
  1566. .C       ANOP
  1567.          LPDR      4,2
  1568.          AW        4,BIGZIP
  1569.          STD       4,REALB
  1570.          L         2,REALB+4
  1571.          LTDR      2,2
  1572.          BNM       X&SYSNDX
  1573.          LNR       2,2
  1574. X&SYSNDX ST        2,&YCL
  1575. D&SYSNDX LA        2,I
  1576.          ST        2,&YCL+4
  1577.          AIF       (T'&LOC2 EQ 'O').B
  1578.          B         &LOC2
  1579. .B       ANOP
  1580. E&SYSNDX EQU       *
  1581.          MEND      RLINT
  1582. ./  ADD  NAME=RPLACE,LEVEL=01,SOURCE=0
  1583.          MACRO
  1584. &LOC     RPLACE    &SP1,&SP2,&SP3
  1585. &LOC     LM        3,5,&SP3
  1586.          CR        3,0
  1587.          BE        A&SYSNDX
  1588.          L         1,=A(ALPHA)
  1589.          MVC       TRTBL(256),0(1)
  1590.          BCTR      3,0
  1591.          AR        4,5
  1592.          LM        5,6,&SP2+4
  1593.          AR        5,6
  1594.          LR        7,5
  1595.          AR        7,3
  1596.          LA        6,1
  1597. RPLC1    SR        3,3
  1598.          IC        3,0(5)
  1599.          A         3,=A(TRTBL)
  1600.          MVC       0(1,3),0(4)
  1601.          LA        4,1(4)
  1602.          BXLE      5,6,RPLC1
  1603.          LM        2,4,&SP1
  1604.          LTR       2,2
  1605.          BNH       A&SYSNDX
  1606.          AR        3,4
  1607. RPTEST   C         2,=F'256'
  1608.          BNH       RPSHORT
  1609.          TR        0(256,3),TRTBL
  1610.          LA        3,256(3)
  1611.          S         2,=F'256'
  1612.          B         RPTEST
  1613. RPSHORT  BCTR      2,0
  1614.          EX        2,RPEX
  1615.          B         A&SYSNDX
  1616. RPEX     TR        0(0,3),TRTBL
  1617. A&SYSNDX EQU       *
  1618.          MEND      RPLACE
  1619. ./  ADD  NAME=RRTURN,LEVEL=01,SOURCE=0
  1620.          MACRO
  1621. &LOC     RRTURN    &CL,&N
  1622.          AIF       (T'&LOC EQ 'O').C
  1623. &LOC     EQU       *
  1624. .C       AIF       (T'&CL EQ 'O').A
  1625.          LD        0,&CL
  1626. .A       LM        11,14,13*8(13)
  1627.          AIF       (T'&CL EQ 'O').B
  1628.          EX        0,0(14)
  1629. .B       ANOP
  1630.          B         4*&N.(14)
  1631.          MEND      RRTURN
  1632. ./  ADD  NAME=RSETFI,LEVEL=01,SOURCE=0
  1633.          MACRO
  1634. &LOC     RSETFI    &CL,&FLAG
  1635. &LOC     L         1,&CL
  1636.          NI        4(1),&FLAG.@
  1637.          MEND      RSETFI
  1638. ./  ADD  NAME=SELBRA,LEVEL=01,SOURCE=0
  1639.          MACRO
  1640. &LOC     SELBRA    &CL,&LOCS
  1641.          LCLA      &N
  1642.          LCLA      &M
  1643. &LOC     L         1,&CL
  1644.          SLA       1,2
  1645.          B         *+0(1)
  1646. .A       ANOP
  1647. &N       SETA      &N+1
  1648.          AIF       (T'&LOCS(&N) EQ 'O').B
  1649.          B         &LOCS(&N)
  1650.          AGO       .C
  1651. .B       B         A&SYSNDX
  1652. &M       SETA      &M+1
  1653. .C       AIF       (&N LT N'&LOCS).A
  1654.          AIF       (&M EQ 0).D
  1655. A&SYSNDX EQU       *
  1656. .D       MEND      SELBRA
  1657. ./  ADD  NAME=SETAC,LEVEL=01,SOURCE=0
  1658.          MACRO
  1659. &LOC     SETAC     &CL,&V
  1660.          AIF       ('&V' EQ '0').A
  1661. &LOC     LA        1,&V
  1662.          ST        1,&CL
  1663.          MEXIT
  1664. .A       ANOP
  1665. &LOC     ST        0,&CL
  1666.          MEND      SETAC
  1667. ./  ADD  NAME=SETF,LEVEL=01,SOURCE=0
  1668.          MACRO
  1669. &LOC     SETF      &PTR,&F
  1670. &LOC     OI        &PTR+4,&F
  1671.          MEND      SETF
  1672. ./  ADD  NAME=SETFI,LEVEL=01,SOURCE=0
  1673.          MACRO
  1674. &LOC     SETFI     &PTR,&F
  1675. &LOC     L         1,&PTR
  1676.          OI        4(1),&F
  1677.          MEND      SETFI
  1678. ./  ADD  NAME=SETLC,LEVEL=01,SOURCE=0
  1679.          MACRO
  1680. &LOC     SETLC     &CL,&V
  1681. &LOC     SETAC     &CL,&V
  1682.          MEND      SETLC
  1683. ./  ADD  NAME=SETSIZ,LEVEL=01,SOURCE=0
  1684.          MACRO
  1685. &LOC     SETSIZ    &CL1,&CL2
  1686. &LOC     L         1,&CL1
  1687.          MVC       5(3,1),&CL2+1
  1688.          MEND      SETSIZ
  1689. ./  ADD  NAME=SETSP,LEVEL=01,SOURCE=0
  1690.          MACRO
  1691. &LOC     SETSP     &SP1,&SP2
  1692. &LOC     LM        1,4,&SP2
  1693.          STM       1,4,&SP1
  1694.          MEND      SETSP
  1695. ./  ADD  NAME=SETVC,LEVEL=01,SOURCE=0
  1696.          MACRO
  1697. &LOC     SETVC     &CL1,&N
  1698. &LOC     MVC       &CL1+5(3),=AL3(&N)
  1699.          MEND      SETVC
  1700. ./  ADD  NAME=SHORTN,LEVEL=01,SOURCE=0
  1701.          MACRO
  1702. &LOC     SHORTN    &SP,&CC
  1703. &LOC     DECRC     &SP,&CC
  1704.          MEND      SHORTN
  1705. ./  ADD  NAME=SPCINT,LEVEL=01,SOURCE=0
  1706.          MACRO
  1707. &LOC     SPCINT    &CL,&SP,&FLOC,&SLOC
  1708. &LOC     L         15,=A(DECBIN)
  1709.          LA        1,&CL
  1710.          LA        2,&SP
  1711.          BALR      14,15
  1712.          AIF       (T'&FLOC EQ 'O').A
  1713.          B         &FLOC
  1714.          AGO       .B
  1715. .A       B         *+8
  1716. .B       AIF       (T'&SLOC EQ 'O').C
  1717.          B         &SLOC
  1718. .C       MEND      SPCINT
  1719. ./  ADD  NAME=SPEC,LEVEL=01,SOURCE=0
  1720.          MACRO
  1721. &LOC     SPEC      &A,&F,&V,&O,&L
  1722.          CNOP      0,8
  1723. &LOC     DC        A(&L)
  1724.          DC        A(&O)
  1725.          DC        A(&A)
  1726.          DC        AL1(&F)
  1727.          DC        AL1(0)
  1728.          DC        AL2(&V)
  1729.          MEND      SPEC
  1730. ./  ADD  NAME=SPREAL,LEVEL=01,SOURCE=0
  1731.          MACRO
  1732. &LOC     SPREAL    &CL,&SP,&FLOC,&SLOC
  1733. &LOC     L         15,=A(SPREAL)
  1734.          LA        1,&CL
  1735.          LM        2,4,&SP
  1736.          BALR      14,15
  1737.          AIF       (T'&FLOC NE 'O').A
  1738.          B         U&SYSNDX
  1739.          AGO       .B
  1740. .A       B         &FLOC
  1741. .B       LA        2,R
  1742.          ST        2,&CL+4
  1743.          AIF       (T'&SLOC EQ 'O').C
  1744.          B         &SLOC
  1745. .C       AIF       (T'&FLOC NE 'O').M
  1746. U&SYSNDX EQU       *
  1747. .M       MEND      SPREAL
  1748. ./  ADD  NAME=STPRNT,LEVEL=01,SOURCE=0
  1749.          MACRO
  1750. &LOC     STPRNT    &CL,&UNIT,&SP
  1751. &LOC     L         15,=A(STPRNT)
  1752.          LA        1,&CL
  1753.          LA        2,&UNIT
  1754.          LA        3,&SP
  1755.          BALR      14,15
  1756.          MEND      STPRNT
  1757. ./  ADD  NAME=STREAD,LEVEL=01,SOURCE=0
  1758.          MACRO
  1759. &LOC     STREAD    &SP,&UNIT,&ELOC,&FLOC,&NLOC
  1760. &LOC     L         15,=A(STREAD)
  1761.          LA        1,&SP
  1762.          LA        2,&UNIT
  1763.          BALR      14,15
  1764.          AIF       (T'&ELOC EQ 'O').A
  1765.          B         &ELOC
  1766.          AIF       (T'&FLOC EQ 'O').B
  1767.          B         &FLOC
  1768.          AIF       (T'&NLOC EQ 'O').M
  1769.          B         &NLOC
  1770.          MEXIT
  1771. .A       AIF       (T'&NLOC NE 'O').D
  1772.          B         *+8
  1773.          AGO       .E
  1774. .D       B         *+12
  1775. .E       AIF       (T'&FLOC EQ 'O').F
  1776.          B         &FLOC
  1777.          AGO       .G
  1778. .F       B         *+8
  1779. .G       AIF       (T'&NLOC EQ 'O').M
  1780.          B         &NLOC
  1781.          MEXIT
  1782. .B       AIF       (T'&NLOC EQ 'O').H
  1783.          B         *+8
  1784.          B         &NLOC
  1785.          MEXIT
  1786. .H       B         *+4
  1787.          MEXIT
  1788. .M       MEND      STREAD
  1789. ./  ADD  NAME=STREAM,LEVEL=01,SOURCE=0
  1790.          MACRO
  1791. &LOC     STREAM    &SP1,&SP2,&TB,&ELOC,&RLOC,&NLOC
  1792. &LOC     L         15,=A(STREAM)
  1793.          LA        1,&SP1
  1794.          LA        2,&SP2
  1795.          L         3,=A(&TB)
  1796.          BALR      14,15
  1797.          AIF       (T'&ELOC EQ 'O').A
  1798.          B         &ELOC
  1799.          AIF       (T'&RLOC EQ 'O').B
  1800.          B         &RLOC
  1801.          AIF       (T'&NLOC EQ 'O').M
  1802.          B         &NLOC
  1803.          MEXIT
  1804. .A       AIF       (T'&NLOC NE 'O').D
  1805.          B         *+8
  1806.          AGO       .E
  1807. .D       B         *+12
  1808. .E       AIF       (T'&RLOC EQ 'O').F
  1809.          B         &RLOC
  1810.          AGO       .G
  1811. .F       B         *+8
  1812. .G       AIF       (T'&NLOC EQ 'O').M
  1813.          B         &NLOC
  1814.          MEXIT
  1815. .B       AIF       (T'&NLOC EQ 'O').H
  1816.          B         *+8
  1817.          B         &NLOC
  1818.          MEXIT
  1819. .H       B         *+4
  1820.          MEXIT
  1821. .M       MEND      STREAM
  1822. ./  ADD  NAME=STRING,LEVEL=01,SOURCE=0
  1823.          MACRO
  1824. &LOC     STRING    &TEXT
  1825.          LCLA      &N
  1826. &N       SETA      K'&TEXT-2
  1827.          CNOP      0,8
  1828. &LOC     DC        A(&N)
  1829.          DC        A(0)
  1830.          DC        A(U&SYSNDX)
  1831.          DC        A(0)
  1832. STRING   CSECT
  1833. U&SYSNDX DC        C&TEXT
  1834. S4       CSECT
  1835.          MEND      STRING
  1836. ./  ADD  NAME=SUBI,LEVEL=01,SOURCE=0
  1837.          MACRO
  1838. &LOC     SUBI      &CL1,&CL2,&CL3,&FLOC,&SLOC
  1839.          AIF       ('&CL1' EQ '&CL2').K
  1840. &LOC     LM        1,2,&CL2
  1841.          S         1,&CL3
  1842.          STM       1,2,&CL1
  1843.          AGO       .L
  1844. .K       ANOP
  1845. &LOC     L         1,&CL2
  1846.          S         1,&CL3
  1847.          ST        1,&CL1
  1848. .L       ANOP
  1849.          AIF       (T'&FLOC EQ 'O').A
  1850.          BO        &FLOC
  1851. .A       AIF       (T'&SLOC EQ 'O').B
  1852.          BNO       &SLOC
  1853. .B       MEND      SUBI
  1854. ./  ADD  NAME=SUBR,LEVEL=01,SOURCE=0
  1855.          MACRO
  1856. &LOC     SUBR      &CL1,&CL2,&CL3,&FLOC,&SLOC
  1857. &LOC     LD        2,&CL2
  1858.          SE        2,&CL3
  1859.          STD       2,&CL1
  1860.          AIF       (T'&SLOC EQ 'O').M
  1861.          B         &SLOC
  1862. .M       MEND      SUBR
  1863. ./  ADD  NAME=SUBSP,LEVEL=01,SOURCE=0
  1864.          MACRO
  1865. &LOC     SUBSP     &SP1,&SP2,&SP3,&FLOC,&SLOC
  1866. &LOC     LM        1,4,&SP3
  1867.          C         1,&SP2
  1868.          AIF       (T'&FLOC NE 'O').A
  1869.          BL        A&SYSNDX
  1870.          AGO       .B
  1871. .A       BL        &FLOC
  1872. .B       L         1,&SP2
  1873.          STM       1,4,&SP1
  1874.          AIF       (T'&SLOC EQ 'O').C
  1875.          B         &SLOC
  1876. .C       AIF       (T'&FLOC NE 'O').M
  1877. A&SYSNDX EQU       *
  1878. .M       MEND      SUBSP
  1879. ./  ADD  NAME=SUML,LEVEL=01,SOURCE=0
  1880.          MACRO
  1881. &LOC     SUML      &SP1,&SP2,&SP3
  1882. &LOC     L         1,&SP2
  1883.          A         1,&SP3
  1884.          ST        1,&SP1
  1885.          MEND      SUML
  1886. ./  ADD  NAME=TESTF,LEVEL=01,SOURCE=0
  1887.          MACRO
  1888. &LOC     TESTF     &PTR,&F,&FLOC,&SLOC
  1889. &LOC     TM        &PTR+4,&F
  1890.          AIF       (T'&FLOC EQ 'O').A
  1891.          BNO       &FLOC
  1892. .A       AIF       (T'&SLOC EQ 'O').M
  1893.          BO        &SLOC
  1894. .M       MEND      TESTF
  1895. ./  ADD  NAME=TESTFI,LEVEL=01,SOURCE=0
  1896.          MACRO
  1897. &LOC     TESTFI    &PTR,&F,&FLOC,&SLOC
  1898. &LOC     L         1,&PTR
  1899.          TM        4(1),&F
  1900.          AIF       (T'&FLOC EQ 'O').A
  1901.          BNO       &FLOC
  1902. .A       AIF       (T'&SLOC EQ 'O').M
  1903.          BO        &SLOC
  1904. .M       MEND      TESTFI
  1905. ./  ADD  NAME=TOP,LEVEL=01,SOURCE=0
  1906.          MACRO
  1907. &LOC     TOP       &PTR1,&OFFSET,&PTR2
  1908. &LOC     LR        6,0
  1909.          LM        1,2,&PTR2
  1910. A&SYSNDX TM        4(1),TTL
  1911.          BO        B&SYSNDX
  1912.          SR        1,8
  1913.          AR        6,8
  1914.          B         A&SYSNDX
  1915. B&SYSNDX ST        6,&OFFSET
  1916.          STM       1,2,&PTR1
  1917.          MEND      TOP
  1918. ./  ADD  NAME=TRANDC,LEVEL=01,SOURCE=0
  1919.          MACRO
  1920. &LOC     TRANDC    &PTR1,&N1,&PTR2,&N2
  1921. &LOC     L         1,&PTR1
  1922.          L         2,&PTR2
  1923.          LD        0,&N2.(2)
  1924.          STD       0,&N1.(1)
  1925.          MEND      TRANDC
  1926. ./  ADD  NAME=TRIMSP,LEVEL=01,SOURCE=0
  1927.          MACRO
  1928. &LOC     TRIMSP    &SP1,&SP2
  1929. &LOC     LM        1,4,&SP2
  1930.          LA        5,0(2,3)
  1931.          LA        6,0(1,5)
  1932. A&SYSNDX BCTR      6,0
  1933.          CR        6,5
  1934.          BL        B&SYSNDX
  1935.          CLI       0(6),C' '
  1936.          BE        A&SYSNDX
  1937. B&SYSNDX SR        6,5
  1938.          LA        1,1(6)
  1939.          STM       1,4,&SP1
  1940.          MEND      TRIMSP
  1941. ./  ADD  NAME=UNLOAD,LEVEL=01,SOURCE=0
  1942.          MACRO
  1943. &LOC     UNLOAD    &SP
  1944. &LOC     LA        1,&SP
  1945.          L         15,=A(UNLOADER)
  1946.          BALR      14,15
  1947.          MEND      UNLOAD
  1948. ./  ADD  NAME=VARID,LEVEL=01,SOURCE=0
  1949.          MACRO
  1950. &LOC     VARID     &CL1,&SP
  1951. &LOC     LA        1,&CL1
  1952.          LR        6,1
  1953.          LM        2,4,&SP
  1954.          LR        7,2
  1955.          LA        4,0(3,4)
  1956.          C         7,=F'4'
  1957.          BH        A&SYSNDX
  1958.          ST        0,4(6)
  1959.          LR        2,6
  1960.          SR        2,7
  1961.          BCTR      7,0
  1962.          EX        7,B&SYSNDX
  1963.          L         5,4(6)
  1964.          B         C&SYSNDX
  1965. B&SYSNDX MVC       8(0,2),0(4)
  1966. D&SYSNDX TRT       0(0,4),0(2)
  1967. E&SYSNDX MVC       0(0,6),0(1)
  1968. A&SYSNDX CR        7,8
  1969.          BH        G&SYSNDX
  1970.          LA        2,0(7,4)
  1971.          S         2,=F'4'
  1972.          MVC       4(4,6),0(2)
  1973.          MVC       0(4,6),0(4)
  1974.          L         5,0(6)
  1975.          B         C&SYSNDX
  1976. G&SYSNDX S         7,=A(8+1)
  1977.          LR        1,4
  1978.          L         2,=A(FRWDTB)
  1979.          EX        7,D&SYSNDX
  1980.          MVC       0(8,6),0(1)
  1981.          L         5,0(6)
  1982.          IC        5,8(4,7)
  1983. C&SYSNDX LR        4,5
  1984.          SRDL      4,19
  1985.          M         4,4(6)
  1986.          SLDL      4,11
  1987.          SLL       7,24
  1988.          ALR       5,7
  1989.          SRL       5,24
  1990.          SLL       5,3
  1991.          ST        5,0(6)
  1992.          ST        4,4(6)
  1993.          MEND      VARID
  1994. ./  ADD  NAME=VCMPIC,LEVEL=01,SOURCE=0
  1995.          MACRO
  1996. &LOC     VCMPIC    &PTR1,&PTR2,&CL,&LOC1,&LOC2,&LOC3
  1997. &LOC     L         1,&PTR1
  1998.          L         6,4+&PTR2.(1)
  1999.          C         6,&CL+4
  2000.          AIF       (T'&LOC1 EQ 'O').A
  2001.          BH        &LOC1
  2002. .A       AIF       (T'&LOC2 EQ 'O').B
  2003.          BE        &LOC2
  2004. .B       AIF       (T'&LOC3 EQ 'O').C
  2005.          BL        &LOC3
  2006. .C       MEND      VCMPIC
  2007. ./  ADD  NAME=VEQL,LEVEL=01,SOURCE=0
  2008.          MACRO
  2009. &LOC     VEQL      &CL1,&CL2,&LOC1,&LOC2
  2010. &LOC     CLC       &CL1+5(3),&CL2+5
  2011.          AIF       (T'&LOC1 EQ 'O').A
  2012.          BNE       &LOC1
  2013. .A       AIF       (T'&LOC2 EQ 'O').B
  2014.          BE        &LOC2
  2015. .B       MEND      VEQL
  2016. ./  ADD  NAME=VEQLC,LEVEL=01,SOURCE=0
  2017.          MACRO
  2018. &LOC     VEQLC     &CL1,&N,&LOC1,&LOC2
  2019. &LOC     CLC       &CL1+5(3),=AL3(&N)
  2020.          AIF       (T'&LOC1 EQ 'O').A
  2021.          BNE       &LOC1
  2022. .A       AIF       (T'&LOC2 EQ 'O').B
  2023.          BE        &LOC2
  2024. .B       MEND      VEQLC
  2025. ./  ADD  NAME=ZERBLK,LEVEL=01,SOURCE=0
  2026.          MACRO
  2027. &LOC     ZERBLK    &PTR,&CL
  2028. &LOC     L         1,&PTR
  2029.          L         5,&CL
  2030.          LR        4,8
  2031.          LR        3,0
  2032.          LD        0,=D'0'
  2033. A&SYSNDX STD       0,0(3,1)
  2034.          BXLE      3,4,A&SYSNDX
  2035.          MEND      ZERBLK
  2036. ./  ENDUP
  2037.