// TRN2 GET "TRNHDR" LET DECLNAMES(X) BE UNLESS X=0 SWITCHON H1!X INTO $( DEFAULT: TRANSREPORT(102, CURRENTBRANCH) RETURN CASE S.VECDEF: CASE S.VALDEF: DECLDYN(H2!X) RETURN CASE S.RTDEF: CASE S.FNDEF: H5!X := NEXTPARAM() DECLSTAT(H2!X, H5!X) RETURN CASE S.AND: DECLNAMES(H2!X) DECLNAMES(H3!X) RETURN $) AND DECLDYN(X) BE UNLESS X=0 DO $( IF H1!X=S.NAME DO $( ADDNAME(X, S.LOCAL, SSP) SSP := SSP + 1 RETURN $) IF H1!X=S.COMMA DO $( ADDNAME(H2!X, S.LOCAL, SSP) SSP := SSP + 1 DECLDYN(H3!X) RETURN $) TRANSREPORT(103, X) $) AND DECLSTAT(X, L) BE $(1 LET T = CELLWITHNAME(X) IF DVEC!(T+1)=S.GLOBAL DO $( LET N = DVEC!(T+2) ADDNAME(X, S.GLOBAL, N) IF GLOBDECLS>=GLOBDECLT DO TRANSREPORT(144, X) GLOBDECL!GLOBDECLS := N GLOBDECL!(GLOBDECLS+1) := L GLOBDECLS := GLOBDECLS + 2 RETURN $) $( LET M = NEXTPARAM() ADDNAME(X, S.LABEL, M) COMPDATALAB(M) OUT2P(S.ITEML, L) $)1 AND DECLLABELS(X) BE $( LET B = DVECS SCANLABELS(X) CHECKDISTINCT(B, DVECS) DVECE := DVECS $) AND CHECKDISTINCT(E, S) BE UNTIL E=S DO $( LET P = E + 3 AND N = DVEC!E WHILE P<S DO $( IF DVEC!P=N DO TRANSREPORT(142, N) P := P + 3 $) E := E + 3 $) AND ADDNAME(N, P, A) BE $( IF DVECS>=DVECT DO TRANSREPORT(143, CURRENTBRANCH) DVEC!DVECS, DVEC!(DVECS+1), DVEC!(DVECS+2) := N, P, A DVECS := DVECS + 3 $) AND CELLWITHNAME(N) = VALOF $( LET X = DVECE X := X - 3 REPEATUNTIL X=0 LOGOR DVEC!X=N RESULTIS X $) AND SCANLABELS(X) BE UNLESS X=0 SWITCHON H1!X INTO $( DEFAULT: RETURN CASE S.COLON: H4!X := NEXTPARAM() DECLSTAT(H2!X, H4!X) CASE S.IF: CASE S.UNLESS: CASE S.WHILE: CASE S.UNTIL: CASE S.SWITCHON: CASE S.CASE: SCANLABELS(H3!X) RETURN CASE S.SEQ: SCANLABELS(H3!X) CASE S.REPEAT: CASE S.REPEATWHILE: CASE S.REPEATUNTIL: CASE S.DEFAULT: SCANLABELS(H2!X) RETURN CASE S.TEST: SCANLABELS(H3!X) SCANLABELS(H4!X) RETURN $) AND TRANSDEF(X) BE $(1 TRANSDYNDEFS(X) IF STATDEFS(X) DO $( LET L, S= NEXTPARAM(), SSP COMPJUMP(L) TRANSSTATDEFS(X) SSP := S OUT2(S.STACK, SSP) COMPLAB(L) $)1 AND TRANSDYNDEFS(X) BE SWITCHON H1!X INTO $( CASE S.AND: TRANSDYNDEFS(H2!X) TRANSDYNDEFS(H3!X) RETURN CASE S.VECDEF: OUT2(S.LLP, VECSSP) SSP := SSP + 1 VECSSP := VECSSP + 1 + EVALCONST(H3!X) RETURN CASE S.VALDEF: LOADLIST(H3!X) RETURN DEFAULT: RETURN $) AND TRANSSTATDEFS(X) BE SWITCHON H1!X INTO $( CASE S.AND: TRANSSTATDEFS(H2!X) TRANSSTATDEFS(H3!X) RETURN CASE S.FNDEF: CASE S.RTDEF: $(2 LET A, B, C = DVECE, DVECS, DVECP AND BL, LL = BREAKLABEL, LOOPLABEL AND RL, CB = RESULTLABEL, CASEB BREAKLABEL, LOOPLABEL := -1, -1 RESULTLABEL, CASEB := -1, -1 COMPENTRY(H2!X, H5!X) SSP := SAVESPACESIZE DVECP := DVECS DECLDYN(H3!X) CHECKDISTINCT(B, DVECS) DVECE := DVECS DECLLABELS(H4!X) OUT2(S.SAVE, SSP) TEST H1!X=S.FNDEF THEN $( LOAD(H4!X); OUT1(S.FNRN) $) OR $( TRANS(H4!X); OUT1(S.RTRN) $) OUT2(S.ENDPROC, 0) BREAKLABEL, LOOPLABEL := BL, LL RESULTLABEL, CASEB := RL, CB DVECE, DVECS, DVECP := A, B, C $)2 DEFAULT: RETURN $) AND STATDEFS(X) = H1!X=S.FNDEF LOGOR H1!X=S.RTDEF -> TRUE, H1!X NE S.AND -> FALSE, STATDEFS(H2!X) -> TRUE, STATDEFS(H3!X) .