home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / ibmtsonih / tsnpcx.asm < prev    next >
Assembly Source File  |  2020-01-01  |  14KB  |  175 lines

  1. //MWCALPCX JOB (ZZXZ,504,A),'MWC: ALP->ASM'                             00001000
  2. /*RERUN                                                                 00002000
  3. // EXEC ASMGCOMP                                                        00003000
  4. //SYSIN DD *                                                            00004000
  5. ALPC     TITLE 'PROGRAM TO PASS ALP OUTPUT TO ASSEMBLER'                00005000
  6. ALPC     CSECT                                                          00006000
  7.          STM   14,12,12(13)            SAVE REGISTERS                   00007000
  8.          BALR  12,0                    SET UP BASE                      00008000
  9.          USING *,12                                                     00009000
  10.          ST    13,SAVE+4               SET UP SAVE AREA                 00010000
  11.          LA    13,SAVE                                                  00011000
  12.          EJECT                                                          00012000
  13. *  SCAN PARM FIELD                                                      00013000
  14. *                                                                       00014000
  15.          L     3,0(,1)                 PARM ADDRESS                     00015000
  16.          LH    2,0(,3)                 LENGTH                           00016000
  17.          CL    2,=F'100'               MAX. LENGTH IS 100               00017000
  18.          BNH   *+8                                                      00018000
  19.          LA    2,100                                                    00019000
  20.          LA    3,2(,3)                 1ST BYTE OF TEXT                 00020000
  21. *                                                                       00021000
  22.          LA    4,ALPPARM               ALP PARM FIELD                   00022000
  23.          LA    5,ASMPARM               ASSEMBLER PARM FIELD             00023000
  24.          LA    6,POSTPARM              POSTALP PARM FIELD               00024000
  25. *                                                                       00025000
  26.          LR    0,2                     LENGTH                           00026000
  27.          LR    1,3                     LOCATION                         00027000
  28.          SR    15,15                   PARENTHESIS LEVEL                00028000
  29. SCAN     CLI   0(1),C'/'               BRANCH ON NEXT CHARACTER         00029000
  30.          BE    SLASH                                                    00030000
  31.          CLI   0(1),C'('                                                00031000
  32.          BE    LPAR                                                     00032000
  33.          CLI   0(1),C')'                                                00033000
  34.          BE    RPAR                                                     00034000
  35.          CLI   0(1),C''''                                               00035000
  36.          BE    QUOTE                                                    00036000
  37. NEXT     LA    1,1(,1)                                                  00037000
  38.          BCT   0,SCAN                                                   00038000
  39. *                                                                       00039000
  40. ALLASM   LTR   6,6                     SLASH FOUND ALREADY?             00040000
  41.          BZ    SETPARM                 BR IF SO                         00041000
  42.          LR    4,5                     GIVE PARM TO ASSEMBLER           00042000
  43.          B     SETPARM                                                  00043000
  44. *                                                                       00044000
  45. *  LEFT PARENTHESIS                                                     00045000
  46. *                                                                       00046000
  47. LPAR     LA    15,1(,15)               BUMP LEVEL                       00047000
  48.          B     NEXT                                                     00048000
  49. *                                                                       00049000
  50. *  RIGHT PARENTHESIS                                                    00050000
  51. *                                                                       00051000
  52. RPAR     BCTR  15,0                    DECR LEVEL                       00052000
  53.          LTR   15,15                                                    00053000
  54.          BNM   NEXT                    BR IF NOT UNBALANCED             00054000
  55.          SR    15,15                   STAY AT LEVEL ZERO               00055000
  56.          B     NEXT                                                     00056000
  57. *                                                                       00057000
  58. *  QUOTE                                                                00058000
  59. *                                                                       00059000
  60. QUOTE    LA    1,1(,1)                 SKIP OVER CHARACTER              00060000
  61.          BCT   0,*+8                   DECR COUNT                       00061000
  62.          B     ALLASM                  BR IF END                        00062000
  63.          CLI   0(1),C''''              ENDING QUOTE?                    00063000
  64.          BNE   QUOTE                   BR IF NOT                        00064000
  65.          B     NEXT                                                     00065000
  66. *                                                                       00066000
  67. *  SLASH                                                                00067000
  68. *                                                                       00068000
  69. SLASH    LTR   15,15                   LEVEL ZERO?                      00069000
  70.          BNZ   NEXT                    CONTINUE IF NOT                  00070000
  71. SETPARM  LR    14,2                    TOTAL PARM LENGTH                00071000
  72.          LTR   5,5                     MORE PARM FIELDS?                00072000
  73.          BZ    *+6                     BR IF NOT                        00073000
  74.          SR    14,0                    COMPUTE LENGTH OF THIS PARM      00074000
  75.          STH   14,0(,4)                PLANT PARM LENGTH                00075000
  76.          LTR   14,14                   NULL PARM?                       00076000
  77.          BNP   *+10                    BR IF SO                         00077000
  78.          BCTR  14,0                                                     00078000
  79.          EX    14,MVCPARM              COPY PARM TO PARM AREA           00079000
  80.          LR    4,5                     MOVE TO NEXT PARM                00080000
  81.          LR    5,6                                                      00081000
  82.          SR    6,6                                                      00082000
  83.          LA    1,1(,1)                 MOVE OVER SLASH                  00083000
  84.          BCTR  0,0                                                      00084000
  85.          LTR   2,0                     REMAINING LENGTH                 00085000
  86.          BNP   SCANDONE                BR IF DONE                       00086000
  87.          LR    3,1                     NEW LOCATION                     00087000
  88.          LTR   5,5                     LAST PARM?                       00088000
  89.          BZ    SETPARM                 BR IF SO                         00089000
  90.          B     SCAN                    CONTINUE SCANNING                00090000
  91. *                                                                       00091000
  92. MVCPARM  MVC   2(0,4),0(3)                                              00092000
  93. *                                                                       00093000
  94. SCANDONE DS    0H                                                       00094000
  95.          EJECT                                                          00095000
  96. *  LINK TO ALP AND ASSEMBLER                                            00096000
  97. *                                                                       00097000
  98.          BLDL  0,BLDLIST               LOCATE ALP AND ASSEMBLER         00098000
  99.          DEVTYPE DDSYSOUT,DEVA         CHECK FOR SYSOUT DD CARD         00099000
  100.          LTR   15,15                                                    00100000
  101.          BNZ   ASMONLY                 BR IF NONE, ALP NOT WANTED       00101000
  102.          CLI   ALP+10,0                ALP FOUND?                       00102000
  103.          BE    NOALP                   BR IF NOT                        00103000
  104.          LINK  PARAM=(ALPPARM),VL=1,DE=ALP  CALL ALP                    00104000
  105.          CL    15,=F'8'                RETURN CODE OK?                  00105000
  106.          BNL   ASMFAIL                 BR IF NOT                        00106000
  107. ASMGO    CLI   ASM+10,0                ASSEMBLER FOUND?                 00107000
  108.          BE    NOASM                   BR IF NOT                        00108000
  109.          LA    1,ASMLIST               PARM LIST FOR ASSEMBLER          00109000
  110.          LINK  DE=ASM                  CALL THE ASSEMBLER               00110000
  111. *                                                                       00111000
  112. ASMDONE  LR    2,15                    SAVE ASSEMBLER RETURN CODE       00112000
  113.          DEVTYPE =CL8'NEWPRINT',DEVA   CHECK FOR NEWPRINT DD CARD       00113000
  114.          LTR   15,15                                                    00114000
  115.          BNZ   NOPOST                  BR IF NONE                       00115000
  116.          C     2,=F'24'                WAS ASSEMBLER CALLED?            00116000
  117.          BNE   NOEOF                   BR IF IT WAS                     00117000
  118.          OPEN  (ASMPRINT,(OUTPUT))     WRITE EOF INTO ASM SYSPRINT      00118000
  119.          CLOSE (ASMPRINT)                                               00119000
  120. NOEOF    CLI   ALPPP+10,0              POSTALP FOUND?                   00120000
  121.          BE    NOALPPP                 BR IF NOT                        00121000
  122.          LINK  DE=ALPPP,PARAM=(POSTPARM)  CALL POSTALP                  00122000
  123. NOPOST   LR    15,2                    RESTORE ASSEMBLER RETUEN CODE    00123000
  124. EXIT     L     13,SAVE+4               RESTORE SAVE AREA                00124000
  125.          L     14,12(,13)              RESTORE REGISTERS                00125000
  126.          LM    0,12,20(13)                                              00126000
  127.          BR    14                      RETURN TO OS                     00127000
  128.          EJECT                                                          00128000
  129. ASMONLY  XC    DDSYSOUT(8),DDSYSOUT    KEEP SYSIN DDNAME WHEN           00129000
  130.          B     ASMGO                   ONLY THE ASSEMBLER IS WANTED     00130000
  131. *                                                                       00131000
  132. NOALP    WTO   'UNABLE TO FIND ALP (BLDL FAILED FOR MWCALP)',ROUTCDE=11 00132000
  133.          LA    15,28                                                    00133000
  134.          B     EXIT                                                     00134000
  135. *                                                                       00135000
  136. NOASM    WTO   'UNABLE TO FIND ASSEMBLER XF (BLDL FAILED FOR IFOX00)', *00136000
  137.                ROUTCDE=11                                               00137000
  138. ASMFAIL  LA    15,24                                                    00138000
  139.          B     ASMDONE                                                  00139000
  140. *                                                                       00140000
  141. NOALPPP  WTO   'UNABLE TO FIND POSTALP (BLDL FAILED FOR MWCALPPP)',    *00141000
  142.                ROUTCDE=11                                               00142000
  143.          B     NOPOST                                                   00143000
  144.          EJECT                                                          00144000
  145. ALPPARM  DC    H'0',CL100' '           PARM FOR ALP                     00145000
  146. ASMPARM  DC    H'0',CL100' '           PARM FOR ASSEMBLER               00146000
  147. POSTPARM DC    H'0',CL100' '           PARM FOR POSTALP                 00147000
  148. *                                                                       00148000
  149. ASMLIST  DC    A(ASMPARM)              PARM FIELD                       00149000
  150.          DC    X'80',AL3(DDNAMES)      DDNAME LIST                      00150000
  151. DDNAMES  DC    Y(DDNAMESL)             START OF DDNAME LIST             00151000
  152.          DC    4XL8'00'                                                 00152000
  153. DDSYSOUT DC    CL8'SYSOUT'             SYSIN -> SYSOUT                  00153000
  154.          DC    CL8'ASMPRINT'           SYSPRINT -> ASMPRINT             00154000
  155. DDNAMESL EQU   *-DDNAMES-2                                              00155000
  156. *                                                                       00156000
  157. BLDLIST  DC    H'3'                    3 ENTIRES IN LIST                00157000
  158.          DC    H'58'                   LENGTH OF ENTRY                  00158000
  159. ASM      DC    CL8'IFOX00'             MEMBER NAME FOR ASSEMBLER XF     00159000
  160.          DC    XL50'00'                                                 00160000
  161. ALP      DC    CL8'MWCALP'             MEMBER NAME FOR ALP              00161000
  162.          DC    XL50'00'                                                 00162000
  163. ALPPP    DC    CL8'MWCALPPP'           MEMBER NAME FOR POSTALP          00163000
  164.          DC    XL50'00'                                                 00164000
  165. *                                                                       00165000
  166. ASMPRINT DCB   DDNAME=ASMPRINT,DSORG=PS,MACRF=(W)                       00166000
  167. *                                                                       00167000
  168. DEVA     DC    2A(0)                                                    00168000
  169. *                                                                       00169000
  170. SAVE     DC    18A(0)                  SAVE AREA                        00170000
  171. *                                                                       00171000
  172.          LTORG                                                          00172000
  173.          END                                                            00173000
  174. //  EXEC ASMGLKMM,NAME='SYS1.VSYSTEMS',DISK=,PROGRAM=MWCALPCX           00174000
  175.