MACRO 00400000 &NAME GOIF1 &LOC,&CMP,&EQ=,&NE=,>=,<=,&GE=,&LE=,&MODE=, ,00800000 &ZERO=,&NOTZERO=,&POS=,&NOTPOS=,&NEG=,&NOTNEG=,&ELSE= 01200000 LCLA &W(4) 01600000 LCLB &B(3) 02000000 LCLC &R 02400000 .* 02450000 .* CHANGES TO RELEASE 3 02500000 .* CHANGES TO RELEASE 2 02550000 .* CHANGES TO RELEASE 1 02600000 .* 02650000 .* INNER MACRO TO GOIF. GENERATES THE INSTRUCTIONS IF A 02700000 .* SWITCH IS TO BE TESTED 02750000 .* 02760000 AIF (K'&LOC EQ 0).ERR1 02800000 &W(1) SETA 4 03200000 &W(2) SETA 2 03600000 &W(3) SETA 13 04000000 &W(4) SETA 11 04400000 &B(1) SETB ('&EQ' NE '') 04800000 &B(2) SETB ('&NE' NE '') 05200000 &B(3) SETB ('&NE' NE '') 05600000 AIF ('>' EQ '').C1 06000000 AIF (&B(3)).ERR3 06400000 &B(3) SETB 1 06800000 .C1 AIF ('<' EQ '').C2 07200000 AIF (&B(2)).ERR3 07600000 &B(2) SETB 1 08000000 .C2 AIF ('&GE' EQ '').C3 08400000 AIF (&B(1) OR &B(3)).ERR3 08800000 &B(1) SETB 1 09200000 &B(3) SETB 1 09600000 .C3 AIF ('&LE' EQ '').C4 10000000 AIF (&B(1) OR &B(2)).ERR3 10400000 &B(1) SETB 1 10800000 &B(2) SETB 1 11200000 .C4 AIF (NOT(&B(1) AND &B(2) AND &B(3))OR '&ELSE' EQ '').C5 11600000 .ERR3 MNOTE 8,'REDUNDANT LOGIC, MACRO EXPANSION ATTEMPTED.' 12000000 .C5 AIF (K'&CMP EQ 0).C6 12400000 .* 12800000 .* TWO OPERANDS SUPPLIED 13200000 .* 13600000 AIF ('&LOC'(1,1) EQ '(' AND '&LOC'(K'&LOC,1) EQ ')').RG1 14000000 AIF ('&CMP'(1,1) EQ '(' AND '&CMP'(K'&CMP,1) EQ ')').RG2 14400000 AIF (T'&CMP NE 'U').SS 14800000 .* 15200000 .* OPERAND 2 IS ASSUMED TO BE IMMEDIATE 15600000 .* 16000000 &NAME CLI &LOC,&CMP 16400000 AGO .C7 16800000 .* 17200000 .* ONE OPERAND ONLY 17600000 .* 18000000 .C6 AIF ('&LOC'(1,1) EQ '(' AND '&LOC'(K'&LOC,1) EQ ')').LTR 18400000 &NAME CLI V&LOC,&LOC 18800000 .C7 AIF (K'&ZERO+K'&NOTZERO+K'&POS+K'&NOTPOS+K'&NEG+K'&NOTNEG EQ,19200000 0).C7A 19600000 MNOTE 8,'CALL CONTAINS OTHER THAN RELATIONAL CONDITIONS.' 20000000 .C7A AIF ('&EQ' EQ '').LE 20400000 AIF ('&EQ'EQ'&NE'OR'&EQ'EQ'>'AND'&EQ'EQ'<').ALL 20800000 AIF ('&EQ' EQ '<').LE1 21200000 AIF ('&EQ' EQ '>').GE1 21600000 AIF ('&EQ'(1,1) NE '(').EQ2 22000000 &R SETC 'R' 22400000 .EQ2 BC&R 8,&EQ(1) BRANCH PER MACRO CALL 22800000 &R SETC '' 23200000 .LE AIF ('&LE' EQ '').GE 23600000 AIF ('&LE' EQ '>').ALL1 24000000 AIF ('&LE'(1,1) NE '(').LE2 24400000 &R SETC 'R' 24800000 .LE2 BC&R &W(3),&LE(1) BRANCH PER MACRO CALL 25200000 &R SETC '' 25600000 AGO .GE 26000000 .LE1 AIF ('&EQ'(1,1) NE '(').LE3 26400000 &R SETC 'R' 26800000 .LE3 BC&R &W(3),&EQ(1) BRANCH PER MACRO CALL 27200000 &R SETC '' 27600000 .GE AIF ('&GE' EQ '').LT 28000000 AIF ('&GE' EQ '<').ALL2 28400000 AIF ('&GE'(1,1) NE '(').GE2 28800000 &R SETC 'R' 29200000 .GE2 BC&R &W(4),&GE(1) BRANCH PER MACRO CALL 29600000 &R SETC '' 30000000 AGO .LT 30400000 .GE1 AIF ('&EQ'(1,1) NE '(').GE3 30800000 &R SETC 'R' 31200000 .GE3 BC&R &W(4),&EQ(1) BRANCH PER MACRO CALL 31600000 &R SETC '' 32000000 .LT AIF ('<' EQ '').NE 32400000 AIF ('<' EQ '>').NE1 32800000 AIF ('<'(1,1) NE '(').LT2 33200000 &R SETC 'R' 33600000 .LT2 BC&R &W(1),<(1) BRANCH PER MACRO CALL 34000000 &R SETC '' 34400000 .NE AIF ('&NE' EQ '').GT 34800000 AIF ('&NE'(1,1) NE '(').NE2 35200000 &R SETC 'R' 35600000 .NE2 BC&R 7,&NE(1) BRANCH PER MACRO CALL 36000000 &R SETC '' 36400000 AGO .END 36800000 .NE1 AIF ('<'(1,1) NE '(').NE3 37200000 &R SETC 'R' 37600000 .NE3 BC&R 7,<(1) BRANCH PER MACRO CALL 38000000 &R SETC '' 38400000 .GT AIF ('>' EQ '').END 38800000 AIF ('>'(1,1) NE '(').GT2 39200000 &R SETC 'R' 39600000 .GT2 BC&R &W(2),>(1) BRANCH PER MACRO CALL 40000000 &R SETC '' 40400000 .END AIF ('&ELSE' EQ '').MEND 40800000 AIF ('&ELSE'(1,1) NE '(').ELSE2 41200000 &R SETC 'R' 41600000 .ELSE2 BC&R 15,&ELSE(1) BRANCH PER MACRO CALL 42000000 MEXIT 42400000 .ALL AIF ('&EQ'(1,1) NE '(').ALL01 42800000 &R SETC 'R' 43200000 .ALL01 BC&R 15,&EQ(1) BRANCH PER MACRO CALL 43600000 MEXIT 44000000 .ALL1 AIF ('&LE'(1,1) NE '(').ALL11 44400000 &R SETC 'R' 44800000 .ALL11 BC&R 15,&LE(1) BRANCH PER MACRO CALL 45200000 MEXIT 45600000 .ALL2 AIF ('&GE'(1,1) NE '(').ALL21 46000000 &R SETC 'R' 46400000 .ALL21 BC&R 15,&GE(1) BRANCH PER MACRO CALL 46800000 MEXIT 47200000 .LTRC AIF ('&ZERO'(1,1) NE '(').LTRV 47600000 &R SETC 'R' 48000000 .LTRV BC&R 15,&ZERO(1) BRANCH PER MACRO CALL 48400000 MEXIT 48800000 .LTRX AIF ('&NOTPOS'(1,1) NE '(').LTRZ 49200000 &R SETC 'R' 49600000 .LTRZ BC&R 15,&NOTPOS(1) BRANCH PER MACRO CALL 50000000 MEXIT 50400000 .LTRY AIF ('&NOTNEG'(1,1) NE '(').LTRW 50800000 &R SETC 'R' 51200000 .LTRW BC&R 15,&NOTNEG(1) BRANCH PER MACRO CALL 51600000 MEXIT 52000000 .RG1 AIF ('&CMP'(1,1) EQ '(' AND '&CMP'(K'&CMP,1) EQ ')').RG12 52400000 AIF (L'&CMP NE 2).LNOT2 52800000 &NAME CH &LOC(1),&CMP 53200000 AGO .C7 53600000 .LNOT2 AIF (L'&CMP EQ 4).LEQ4 54000000 MNOTE *,'LENGTH ATTRIBUTE OF &CMP NOT 2 OR 4.' 54400000 .LEQ4 AIF ('&MODE'(1,1) EQ 'A').NOTLOG 54800000 &NAME CL &LOC(1),&CMP 55200000 AGO .C7 55600000 .NOTLOG ANOP 56000000 &NAME C &LOC(1),&CMP 56400000 AGO .C7 56800000 .RG2 AIF (L'&LOC NE 2).LNOT22 57200000 &NAME CH &CMP(1),&LOC 57600000 AGO .C7R 58000000 .LNOT22 AIF (L'&LOC EQ 4).LEQ42 58400000 MNOTE *,'LENGTH ATTRIBUTE OF &LOC NOT 2 OR 4.' 58800000 .LEQ42 AIF ('&MODE'(1,1) EQ 'A').NOTLOG2 59200000 &NAME CL &CMP(1),&LOC 59600000 AGO .C7R 60000000 .NOTLOG2 ANOP 60400000 &NAME C &CMP(1),&LOC 60800000 .C7R ANOP 61200000 &W(1) SETA 2 61600000 &W(2) SETA 4 62000000 &W(3) SETA 11 62400000 &W(4) SETA 13 62800000 AGO .C7 63200000 .RG12 AIF ('&MODE'(1,1) EQ 'A').RG12A 63600000 &NAME CLR &LOC(1),&CMP(1) 64000000 AGO .C7 64400000 .RG12A ANOP 64800000 &NAME CR &LOC(1),&CMP(1) 65200000 AGO .C7 65600000 .SS ANOP 66000000 &NAME CLC &LOC,&CMP 66400000 AGO .C7 66800000 .LTR ANOP 67200000 &NAME LTR &LOC(1),&LOC(1) 67600000 AIF (&B(1)+&B(2)+&B(3) EQ 0).LTRA 68000000 MNOTE 8,'CALL CONTAINS RELATIONAL CONDITIONS.' 68400000 .LTRA AIF (('&ZERO'EQ''OR'&NOTZERO'EQ''OR'&ELSE'EQ'')AND('&ZERO'EQ,68800000 ''OR'&POS'EQ''OR'&NEG'EQ''OR'&ELSE'EQ'')AND('&NOTPOS'EQ''69200000 'OR'&NEG'EQ''OR'&ELSE'EQ'')).LTRM 69600000 MNOTE 8,'REDUNDANT LOGIC, MACRO EXPANSION ATTEMPTED.' 70000000 .LTRM AIF ('&NOTNEG'EQ''OR'&POS'EQ''OR'&ELSE'EQ'').LTRN 70400000 MNOTE 8,'REDUNDANT LOGIC, MACRO EXPANSION ATTEMPTED.' 70800000 .LTRN AIF ('&NOTPOS' EQ '').LTRO 71200000 AIF ('&NOTPOS' EQ 'NEG').LTRX 71600000 AIF ('&NOTPOS'(1,1) NE '(').LTRP 72000000 &R SETC 'R' 72400000 .LTRP BC&R 13,&NOTPOS(1) BRANCH PER MACRO CALL 72800000 &R SETC '' 73200000 .LTRO AIF ('&NOTNEG' EQ '').LTRQ 73600000 AIF ('&NOTNEG' EQ '&POS').LTRY 74000000 AIF ('&NOTNEG'(1,1) NE '(').LTRR 74400000 &R SETC 'R' 74800000 .LTRR BC&R 11,&NOTNEG(1) BRANCH PER MACRO CALL 75200000 &R SETC '' 75600000 .LTRQ AIF ('&ZERO' EQ '').LTRB 76000000 AIF ('&ZERO' EQ '&NOTZERO' AND '&ZERO' EQ '&POS' AND '&ZERO',76400000 EQ '&NEG').LTRC 76800000 AIF ('&ZERO'(1,1) NE '(').LTRD 77200000 &R SETC 'R' 77600000 .LTRD BC&R 8,&ZERO(1) BRANCH PER MACRO CALL 78000000 &R SETC '' 78400000 .LTRB AIF ('&NEG' EQ '').LTRE 78800000 AIF ('&NEG' EQ '&POS').LTRF 79200000 AIF ('&NEG'(1,1) NE '(').LTRG 79600000 &R SETC 'R' 80000000 .LTRG BC&R 4,&NEG(1) BRANCH PER MACRO CALL 80400000 &R SETC '' 80800000 .LTRE AIF ('&NOTZERO' EQ '').LTRH 81200000 AIF ('&NOTZERO'(1,1) NE '(').LTRI 81600000 &R SETC 'R' 82000000 .LTRI BC&R 7,&NOTZERO(1) BRANCH PER MACRO CALL 82400000 &R SETC '' 82800000 AGO .LTRH 83200000 .LTRF AIF ('&POS'(1,1) NE '(').LTRK 83600000 &R SETC 'R' 84000000 .LTRK BC&R 7,&POS(1) BRANCH PER MACRO CALL 84400000 &R SETC '' 84800000 .LTRH AIF ('&POS' EQ '').END 85200000 AIF ('&POS'(1,1) NE '(').LTRJ 85600000 &R SETC 'R' 86000000 .LTRJ BC&R 2,&POS(1) BRANCH PER MACRO CALL 86400000 &R SETC '' 86800000 AGO .END 87200000 .ERR1 MNOTE 8,'REQUIRED OPERANDS NOT SUPPLIED.' 87600000 .MEND MEND 88000000