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