         MACRO                                                          00050000
&NAME    GETLINE &PARM=,&UPT=,&ECT=,&ECB=,&INPUT=,&TERMGET=,&ENTRY=,   *00100000
               &MF=                                                     00150000
.********************************************************************** 00200000
.*                                                                    * 00250000
.*                                                                    * 00300000
.*                                                                    * 00350000
.*                                                                    * 00400000
.*STATUS:                                                             * 00450000
.*   CHANGE LEVEL 000.                                                * 00500000
.*                                                                    * 00550000
.*FUNCTION:                                                           * 00600000
.*   THE GETLINE MACRO EXAMINES PARAMETERS SPECIFIED IN THE GETLINE   * 00650000
.*   MACRO INSTRUCTION AND BUILDS A PARAMETER BLOCK TO BE USED BY THE * 00700000
.*   GETLINE SERVICE ROUTINE (REFER TO SECTION 3.48.9.1 FOR THE       * 00750000
.*   PARAMETER BLOCK FORMAT).                                         * 00800000
.*   IN THE LIST FORM, THE GETLINE MACRO GENERATES THE GETLINE        * 00850000
.*   PARAMETER BLOCK CONSISTING OF ONE WORD OF CONTROL (CONTROL AND   * 00900000
.*   TINPUT OPTIONS), AND THE ADDRESS OF THE INPUT BUFFER.            * 00950000
.*   IN THE EXECUTE FORM OF THE GETLINE MACRO, CODE IS GENERATED      * 01000000
.*   WHICH WILL RESET THE PARAMETER BLOCK IF REQUIRED AND LOAD THE    * 01050000
.*   ADDRESSES OF THE UPT, ECT, ECB, AND PARAMETER BLOCK INTO THE     * 01100000
.*   SERVICE ROUTINE PARAMETER LIST IF SPECIFIED. A LINK MACRO WILL   * 01150000
.*   BE GENERATED TO INVOKE THE GETLINE SERVICE ROUTINE UNLESS AN     * 01200000
.*   ENTRY POINT IS SPECIFIED. IF AN ENTRY POINT IS SPECIFIED, THE    * 01250000
.*   CODE TO ENABLE A BRANCH AND LINK WILL BE GENERATED.              * 01300000
.*                                                                    * 01350000
.*ENTRY POINTS:                                                       * 01400000
.*   GETLINE MACRO CALL - ONLY ENTRY POINT.                           * 01450000
.*                                                                    * 01500000
.*INPUT:                                                              * 01550000
.*   PARAMETERS SPECIFIED IN THE GETLINE MACRO FORMAT (FOR FORMAT     * 01600000
.*   SPECIFICATIONS REFER TO SECTION 3.48.9.1).                       * 01650000
.*                                                                    * 01700000
.*OUTPUT:                                                             * 01750000
.*   IN THE L-FORM, A 2-WORD PARAMETER BLOCK (REFER TO SECTION        * 01800000
.*   3.48.9.1) CONSISTING OF CONTROL WHICH IS SET BY THE MACRO AND    * 01850000
.*   ADDRESS OF THE INPUT BUFFER.                                     * 01900000
.*   IN THE E-FORM, CODE WHICH RESETS CONTROL IN THE PARAMETER BLOCK, * 01950000
.*   PLACES THE ADDRESSES OF THE SERVICE ROUTINE PARAMETER BLOCK,     * 02000000
.*   UPT, ECT, AND ECB IN THE SERVICE ROUTINE PARAMETER LIST AS       * 02050000
.*   SPECIFIED, AND INVOKES THE SERVICE ROUTINE.                      * 02100000
.*                                                                    * 02150000
.*EXTERNAL REFERENCES:                                                * 02200000
.*   LINK MACRO.                                                      * 02250000
.*                                                                    * 02300000
.*EXITS,NORMAL:                                                       * 02350000
.*   IN THE L-FORM, RETURN TO CALLER.                                 * 02400000
.*   IN THE E-FORM, CODE IS GENERATED TO INVOKE THE GETLINE SERVICE   * 02450000
.*   ROUTINE ACCORDING TO THE STANDARD LINKAGE CONVENTIONS (REFER TO  * 02500000
.*   SECTION 3.48.1.5).                                               * 02550000
.*                                                                    * 02600000
.*EXITS,ERROR:                                                        * 02650000
.*   INVALID INPUT.                                                   * 02700000
.*                                                                    * 02750000
.*TABLES/WORK AREAS:                                                  * 02800000
.*   SERVICE ROUTINE PARAMETER LIST - A TABLE OF POINTERS TO THE UPT, * 02850000
.*   ECT, ECB, AND SERVICE ROUTINE PARAMETER BLOCK.                   * 02900000
.*   SERVICE ROUTINE PARAMETER BLOCK - A CONTROL TABLE SET ACCORDING  * 02950000
.*   TO THE SPECIFIED MACRO PARAMETERS AND THE ADDRESS OF THE INPUT   * 03000000
.*   BUFFER.                                                          * 03050000
.*                                                                    * 03100000
.*ATTRIBUTES:                                                         * 03150000
.*   SERIALLY REUSABLE.                                               * 03200000
.*                                                                    * 03250000
.*NOTES:                                                              * 03300000
.*   DATE OF CURRENT RELEASE :                                        * 03350000
.*      01/22/70                                                      * 03400000
.*   PREVIOUS RELEASE DATES :                                         * 03450000
.*      12/12/69                                                      * 03500000
.*      10/22/69                                                      * 03550000
.*                                                                    * 03600000
.*                                                                    * 03650000
.*                                                                    * 03700000
.*                                                                    * 03750000
.*                                                                    * 03800000
.********************************************************************** 03850000
         LCLA  &A                                                       03900000
         LCLB  &B1,&B2,&B3,&B4,&B5,&B6                                  03950000
         LCLB  &BS1,&BS2                                                04000000
         LCLC  &C                                                       04050000
.E1      AIF   (T'&MF EQ 'O').ERR1     NO MF PARAMETER                  04100000
         AIF   (N'&SYSLIST EQ 0).MF1   POSITIONAL PARAMETERS INVALID    04150000
         AIF   (T'&SYSLIST(1) NE 'O' OR N'&SYSLIST NE 1).ERR4           04200000
.MF1     AIF   ('&MF' EQ 'L').L1       LIST FORM                        04250000
.********************************************************************** 04300000
.*                                                                    * 04350000
.*                               EXECUTE FORM                         * 04400000
.*                                                                    * 04450000
.********************************************************************** 04500000
         AIF   ('&MF(1)' NE 'E').ERR1                                   04550000
         AIF   (T'&NAME EQ 'O').E2                                      04600000
&NAME    DS    0H                                                       04650000
.E2      AIF   (T'&MF(2) EQ 'O').ERR1                                   04700000
         AIF   ('&MF(2)' EQ '(1)').E3                                   04750000
         AIF   ('&MF(2)'(1,1) EQ '(').WARN3                             04800000
.E2A     LA    1,&MF(2)                LOAD PARM LIST ADDR              04850000
.E3      AIF   (T'&UPT EQ 'O').E4      UPT OMITTED                      04900000
         AIF   ('&UPT'(1,1) EQ '(').E3A                                 04950000
         LA    14,&UPT                 LOAD UPT ADDR                    05000000
         ST    14,0(0,1)               STORE UPT ADDR IN PARM LIST      05050000
         AGO   .E4                                                      05100000
.E3A     ANOP                                                           05150000
&A       SETA  K'&UPT-2                                                 05200000
&C       SETC  '&UPT'(2,&A)                                             05250000
         ST    &C,0(0,1)               STORE UPT ADDR IN PARM LIST      05300000
.E4      AIF   (T'&ECT EQ 'O').E5      ECT OMITTED                      05350000
         AIF   ('&ECT'(1,1) EQ '(').E4A                                 05400000
         LA    14,&ECT                 LOAD ECT ADDR                    05450000
         ST    14,4(0,1)               STORE ECT ADDR IN PARM LIST      05500000
         AGO   .E5                                                      05550000
.E4A     ANOP                                                           05600000
&A       SETA  K'&ECT-2                                                 05650000
&C       SETC  '&ECT'(2,&A)                                             05700000
         ST    &C,4(0,1)               STORE ECT ADDR IN PARM LIST      05750000
.E5      AIF   (T'&ECB EQ 'O').E6      ECB OMITTED                      05800000
         AIF   ('&ECB'(1,1) EQ '(').E5A                                 05850000
         LA    14,&ECB                 LOAD ECB ADDR                    05900000
         ST    14,8(0,1)               STORE ECB ADDR IN PARM LIST      05950000
         AGO   .E6                                                      06000000
.E5A     ANOP                                                           06050000
&A       SETA  K'&ECB-2                                                 06100000
&C       SETC  '&ECB'(2,&A)                                             06150000
         ST    &C,8(0,1)               STORE ECB ADDR IN PARM LIST      06200000
.E6      AIF   (T'&PARM EQ 'O').E6B    PARM OMITTED                     06250000
         AIF   ('&PARM'(1,1) EQ '(').E6A                                06300000
         LA    14,&PARM                LOAD PARM ADDR                   06350000
         ST    14,12(0,1)              STORE PARM ADDR IN PARM LIST     06400000
         AGO   .E7                                                      06450000
.E6A     ANOP                                                           06500000
&A       SETA  K'&PARM-2                                                06550000
&C       SETC  '&PARM'(2,&A)                                            06600000
         ST    &C,12(0,1)              STORE PARM ADDR IN PARM LIST     06650000
         AIF   (N'&INPUT EQ 0 AND N'&TERMGET EQ 0).E11                  06700000
         LR    14,&C                   LOAD PARM ADDR                   06750000
         AGO   .E7                                                      06800000
.E6B     AIF   (N'&INPUT EQ 0 AND N'&TERMGET EQ 0).E11                  06850000
         L     14,12(0,1)              LOAD PARM BLOCK ADDR             06900000
.E7      AIF   (N'&INPUT EQ 0 AND N'&TERMGET EQ 0).E11                  06950000
&A       SETA  N'&INPUT                                                 07000000
         AIF   (&A EQ 0).E8            NO INPUT OPERANDS                07050000
         AIF   (&A GT 2).ERR2          TOO MANY OPERANDS                07100000
         AIF   ('&INPUT' EQ '()').E7H  ALL OPERANDS OMITTED             07150000
.E7A     AIF   (T'&INPUT(&A) EQ 'O').E7G OMITTED OPERAND                07200000
         AIF   ('&INPUT(&A)' NE 'ISTACK').E7B                           07250000
         AGO   .E7C                                                     07300000
.E7B     AIF   ('&INPUT(&A)' NE 'TERM').E7D                             07350000
&B4      SETB  1                                                        07400000
.E7C     AIF   (&BS1).ERR2             MUTUALLY EXCLUSIVE OPERANDS      07450000
&BS1     SETB  1                                                        07500000
         AGO   .E7G                                                     07550000
.E7D     AIF   ('&INPUT(&A)' NE 'LOGICAL').E7E                          07600000
         AGO   .E7F                                                     07650000
.E7E     AIF   ('&INPUT(&A)' NE 'PHYSICAL').ERR2                        07700000
&B3      SETB  1                                                        07750000
.E7F     AIF   (&BS2).ERR2             MUTUALLY EXCLUSIVE OPERANDS      07800000
&BS2     SETB  1                                                        07850000
.E7G     ANOP                                                           07900000
&A       SETA  &A-1                                                     07950000
         AIF   (&A NE 0).E7A                                            08000000
.E7H     MVI   0(14),B'00&B3.&B4.0000' SET CONTROL FIELD                08050000
&BS1     SETB  0                                                        08100000
&BS2     SETB  0                                                        08150000
.E8      ANOP                                                           08200000
&A       SETA  N'&TERMGET                                               08250000
         AIF   (&A EQ 0).E11           NO TERMGET OPERANDS              08300000
         AIF   (&A GT 2).ERR5          TOO MANY OPERANDS                08350000
.E8A     AIF   ('&TERMGET' EQ '()').E8H    ALL OPERANDS OMITTED         08400000
         AIF   (T'&TERMGET(&A) EQ 'O').E8G OMITTED OPERAND              08450000
         AIF   ('&TERMGET(&A)' NE 'EDIT').E8B                           08500000
         AGO   .E8C                                                     08550000
.E8B     AIF   ('&TERMGET(&A)' NE 'ASIS').E8D                           08600000
&B6      SETB  1                                                        08650000
.E8C     AIF   (&BS1).ERR5             MUTUALLY EXCLUSIVE OPERANDS      08700000
&BS1     SETB  1                                                        08750000
         AGO   .E8G                                                     08800000
.E8D     AIF   ('&TERMGET(&A)' NE 'WAIT').E8E                           08850000
         AGO   .E8F                                                     08900000
.E8E     AIF   ('&TERMGET(&A)' NE 'NOWAIT').ERR5                        08950000
&B5      SETB  1                                                        09000000
.E8F     AIF   (&BS2).ERR5             MUTUALLY EXCLUSIVE OPERANDS      09050000
&BS2     SETB  1                                                        09100000
.E8G     ANOP                                                           09150000
&A       SETA  &A-1                                                     09200000
         AIF   (&A NE 0).E8A                                            09250000
.E8H     MVI   2(14),B'100&B5.000&B6'  SET TINPUT OPTIONS FIELD         09300000
.E11     AIF   (T'&ENTRY EQ 'O').E12                                    09350000
         AIF   ('&ENTRY' EQ '(15)').E11A                                09400000
         AIF   ('&ENTRY'(1,1) EQ '(').WARN4                             09450000
.E11A1   LA    15,&ENTRY               LOAD EP ADDR                     09500000
.E11A    BALR  14,15                   BRANCH TO SERVICE ROUTINE        09550000
         MEXIT                                                          09600000
.E12     L      15,16(0,0)          LOAD CVT POINTER                    09604002
         TM     348(15),B'10000000'   IS GETLINE LOADED ?               09616002
         BNO    IKJ@&SYSNDX            NO - BRANCH TO LINK              09620002
         L      15,348(0,15)          YES - BALR TO GETLINE             09624002
         BALR   14,15                                                   09628002
         B      IKJ$&SYSNDX                                             09632002
IKJ@&SYSNDX LINK  EP=IKJGETL                                            09636002
IKJ$&SYSNDX DS    0H                                                    09640002
         MEXIT                                                          09700000
.********************************************************************** 09750000
.*                                                                    * 09800000
.*                             LIST FORM                              * 09850000
.*                                                                    * 09900000
.********************************************************************** 09950000
.L1      DS    0F                                                       10000000
         AIF   (N'&INPUT EQ 0   AND N'&TERMGET EQ 0).L2I                10050000
&A       SETA  N'&INPUT                                                 10100000
         AIF   (&A EQ 0).L1H           NO INPUT OPERANDS                10150000
         AIF   ('&INPUT' EQ '()').L1GG ALL OPERANDS OMITTED             10200000
         AIF   (&A GT 2).ERR2          TOO MANY OPERANDS                10250000
.L1A     AIF   (T'&INPUT(&A) EQ 'O').L1G OMITTED OPERAND                10300000
         AIF   ('&INPUT(&A)' NE 'ISTACK').L1B                           10350000
         AGO   .L1C                                                     10400000
.L1B     AIF   ('&INPUT(&A)' NE 'TERM').L1D                             10450000
&B3      SETB  1                                                        10500000
.L1C     AIF   (&BS1).ERR2             MUTUALLY EXCLUSIVE OPERANDS      10550000
&BS1     SETB  1                                                        10600000
         AGO   .L1G                                                     10650000
.L1D     AIF   ('&INPUT(&A)' NE 'LOGICAL').L1E                          10700000
         AGO   .L1F                                                     10750000
.L1E     AIF   ('&INPUT(&A)' NE 'PHYSICAL').ERR2                        10800000
&B2      SETB  1                                                        10850000
.L1F     AIF   (&BS2).ERR2             MUTUALLY EXCLUSIVE OPERANDS      10900000
&BS2     SETB  1                                                        10950000
.L1G     ANOP                                                           11000000
&A       SETA  &A-1                                                     11050000
         AIF   (&A NE 0).L1A                                            11100000
.L1GG    ANOP                                                           11150000
&NAME    DC    B'00&B2.&B3.0000'       SET CONTROL FIELD                11200000
         DC    X'00'                   SET CONTROL FIELD                11250000
&B2      SETB  0                                                        11300000
&BS1     SETB  0                                                        11350000
&BS2     SETB  0                                                        11400000
         AGO   .L2                                                      11450000
.L1H     ANOP                                                           11500000
&NAME    DC    X'0000'                 SET CONTROL FIELD                11550000
.L2      ANOP                                                           11600000
&A       SETA  N'&TERMGET                                               11650000
         AIF   (&A EQ 0).L2H           NO TERMGET OPERANDS              11700000
         AIF   ('&TERMGET' EQ '()').L2H ALL OPERANDS OMITTED            11750000
         AIF   (&A GT 2).ERR5          TOO MANY OPERANDS                11800000
.L2A     AIF   (T'&TERMGET(&A) EQ 'O').L2G OMITTED OPERAND              11850000
         AIF   ('&TERMGET(&A)' NE 'EDIT').L2B                           11900000
         AGO   .L2C                                                     11950000
.L2B     AIF   ('&TERMGET(&A)' NE 'ASIS').L2D                           12000000
&B2      SETB  1                                                        12050000
.L2C     AIF   (&BS1).ERR5             MUTUALLY EXCLUSIVE OPERANDS      12100000
&BS1     SETB  1                                                        12150000
         AGO   .L2G                                                     12200000
.L2D     AIF   ('&TERMGET(&A)' NE 'WAIT').L2E                           12250000
         AGO   .L2F                                                     12300000
.L2E     AIF   ('&TERMGET(&A)' NE 'NOWAIT').ERR5                        12350000
&B1      SETB  1                                                        12400000
.L2F     AIF   (&BS2).ERR5             MUTUALLY EXCLUSIVE OPERANDS      12450000
&BS2     SETB  1                                                        12500000
.L2G     ANOP                                                           12550000
&A       SETA  &A-1                                                     12600000
         AIF   (&A NE 0).L2A                                            12650000
.L2GG    ANOP                                                           12700000
         DC    B'100&B1.000&B2'        SET TINPUT OPTIONS FIELD         12750000
         DC    X'00'                   SET TINPUT OPTIONS FIELD         12800000
         DC    A(0)      INPUT BUFFER ADDR                              12850000
         AGO   .L6                                                      12900000
.L2H     DC    X'8000'                 SET INPUT OPTIONS FIELD          12950000
         DC    A(0)                    INPUT BUFFER ADDR                13000000
         AGO   .L6                                                      13050000
.L2I     ANOP                                                           13100000
&NAME    DC    X'00008000'        SET CONTROL AND TINPUT OPTIONS FIELDS 13150000
         DC    A(0)                    INPUT BUFFER ADDR                13200000
.L6      MEXIT                                                          13250000
.WARN3   MNOTE 0,'PARAMETER LIST ADDR IN MF PARAMETER IS NOT IN REG 1'  13300000
         AGO   .E2A                                                     13350000
.WARN4   MNOTE 0,'ENTRY POINT ADDR IN ENTRY PARAMETER IS NOT IN REG 15' 13400000
         AGO   .E11A1                                                   13450000
.ERR1    MNOTE 8,'INVALID OR OMITTED MF PARAMETER'                      13500000
         MEXIT                                                          13550000
.ERR2    MNOTE 8,'INVALID OPERAND IN INPUT PARAMETER SUBLIST'           13600000
         MEXIT                                                          13650000
.ERR3    MNOTE 8,'QUEUE AND GET ARE MUTUALLY EXCLUSIVE OPERANDS'        13700000
         MEXIT                                                          13750000
.ERR4    MNOTE 8,'POSITIONAL PARAMETERS ARE INVALID'                    13800000
         MEXIT                                                          13850000
.ERR5    MNOTE 8,'INVALID OPERAND IN TERMGET PARAMETER SUBLIST'         13900000
         MEXIT                                                          13950000
.ERR6    MNOTE 8,'INVALID QUEUE OPERAND'                                14000000
         MEXIT                                                          14050000
         MEND                                                           14100000
