%LISTCOMMENTS %MACROLISTON %PHRASE(CLAB):'%IF' (SC)(RESTOFCOND)'%THEN' (NAME) '%ELSE' %C (CLAB),(NAME); %PHRASE(LPL): (NAME)(APP) '=' (LPL),%NULL; %PHRASE(OPTC):(CONST),%NULL; %PHRASE(TEXTSEP):(OPTC)'C'(OPTC)'S',(OPTC)'C',(OPTC)'S'; %PHRASE(RTEXT): (TEXTSEP)(CONST)(RTEXT),%NULL; %%FRONTMACRO: 'WRITETEXT('A(CONST) B(RTEXT) ')' S(S) %LOCAL X(TEXTSEP) %LOCAL Y(OPTC) %LOCAL Z(OPTC) %LOCAL COUNT(CONST) L0) :PRINT STRING($A$) ->END %IF B->%NULL B->X.A.B ->L1 %IF X->Y.'C' ->L2 %IF X->Z.'S' X->Y.'C'.Z.'S' ->Z1 %IF Y->%NULL Y->COUNT :NEWLINES($COUNT$) ->L2 Z1) :NEWLINES(1) L2) ->Z2 %IF Z->%NULL Z->COUNT :SPACES($COUNT$) ->L0 Z2) :PRINTSTRING(' ') ->L0 L1) ->Z3 %IF Y->%NULL Y->COUNT :NEWLINES($COUNT$) ->L0 Z3) :NEWLINES(1) ->L0 END) %ENDMACRO %MACRO: A(NAME) B(APP) '=' C(LPL) D(EXPR) S(S) L0) :$A$$B$=$D$ ->L0 %IF C->A.B.'='.C %ENDMACRO %MACRO (OPERAND): '%IF' A(SC)AA(RESTOFCOND) %C '%THEN' B(EXPR) '%ELSE' C(EXPR) %GENERATE D(NAME) :%OWNINTEGER $D$ :%IF $A$ $AA$ %THEN $D$=$B$ %ELSE $D$=$C$ %RESULT=$D$ %ENDMACRO %FRONTMACRO(UI): 'NEWLINE('A(EXPR)')' %RESULT=NEWLINES($A$) %ENDMACRO %EXTERNALROUTINESPEC WRITE(%INTEGER I,J,%REAL K) %EXTERNALROUTINESPEC COPYTEXT(%STRING(30) S) %EXTERNALINTEGERFNSPEC FORMAT(%STRING(30) F) %FRONTMACRO: A(NAME)B(APP)'=' C(LPL)'READ'S(S) %LOCAL X(NAME) %LOCAL Y(APP) :READ($A$ $B$) :SKIP SYMBOL L0) ->END %IF C->%NULL C->X.Y.'='.C :$X$ $Y$=$A$ $B$ ->L0 END) %ENDMACRO %MACRO(OPERAND): '%TRUE' %RESULT=255 %ENDMACRO %MACRO(OPERAND): '%FALSE' %RESULT=0 %ENDMACRO %MACRO(TYPE): '%BOOLEAN' %RESULT=%BYTEINTEGER %ENDMACRO %MACRO(SC) :A(NAME)B(APP) %RESULT=$A$ $B$=255 %ENDMACRO %MACRO(SC): '%NOT' A(NAME)B(APP) %RESULT=$A$ $B$=0 %ENDMACRO %MACRO:'%IF' X(SC)XX(RESTOFCOND) '%THEN->(' C(CLAB)')'S(S) %LOCAL N(NAME) :%IF $X$ $XX$ %THEN %START L0) ->L4 %IF C->N C->'%IF'.X.XX.'%THEN'.N.'%ELSE'.C :%IF $X$ $XX$ %THEN ->$N$ ->L0 L4) :->$N$ :%FINISH %ENDMACRO %MACRO(OPERAND): '&'X(EXPR) %RESULT=(10**($X$)) %ENDMACRO %FRONTMACRO(UI): A(NAME)B(APP)'='C(NAME)D(APP)'='E(EXPR) %RESULT=$C$ $D$=$E$ %AND $A$ $B$=$C$ $D$ %ENDMACRO %PHRASE(ALGELSE): '%ELSEIF'(SC)(RESTOFCOND)'%THEN'(UI)(ALGELSE),%C '%ELSE'(UI),%NULL; %MACROSPEC:'%IF' A(SC)B(RESTOFCOND)'%THEN' C(UI)D(ALGELSE) S(S) %MACRO:'%IF' A(SC)B(RESTOFCOND)'%THEN' C(UI) D(ALGELSE) S(S) %LOCAL U(UI) ->L0 %IF D->%NULL ->L1 %IF D->'%ELSE'.U :%IF $A$ $B$ %THEN $C$ %ELSE %START D->'%ELSEIF'.A.B.'%THEN'.C.D :%IF $A$ $B$ %THEN $C$ $D$ :%FINISH ->END L0) :%IF $A$ $B$ %THEN $C$ ->END L1) : %IF $A$ $B$ %THEN $C$ %ELSE $U$ END) %ENDMACRO %MACRO:'%FINISH' A(ALGELSE)S(S) %LOCAL U(UI); %LOCAL X(SC); %LOCAL Y(RESTOFCOND) ->L0 %IF A->%NULL ->L1 %IF A->'%ELSE'.U :%FINISH %ELSE %START A->'%ELSEIF'.X.Y.'%THEN'.U.A :%IF $X$ $Y$ %THEN $U$ $A$ L0) :%FINISH ->END L1) :%FINISH %ELSE $U$ END) %ENDMACRO