SUBROUTINE CMPEND C INCLUDE "FLX:FLXINC.FLX" $NOLIST INCLUDE "FLX:FLXINC.FLX" $LIST C C ******************************************************* C C TO COMPILE-END C C ******************************************************* C SORT-TABLE IF (LONG.OR.COGOTO) GENERATE-PROCEDURE-DISPATCH-AREA PUT-COPY IF (ENDFIL) ERROR=EIEND ENDPGM=.TRUE. RETURN TO FORCE-NEXT-NUMBER IF (NEXTNO.NE.0) CALL PUTNUM(SFORCE,NEXTNO) CALL PUT(LINENO,SFORCE,FORTCL) NEXTNO=0 FIN FIN TO GENERATE-PROCEDURE-DISPATCH-AREA P=PTABLE UNTIL (P.EQ.0) WHEN (STACK(P+2).NE.0) WHEN (LONG) CALL CPYSTR(SST,SGOTOI) CALL CATNUM(SST,STACK(P+1)) CALL CATSTR(SST,SCP) FIN ELSE CALL CPYSTR(SST,SGOTOP) Q=STACK(P+3) STNO=STACK(P-1) WHEN(Q.EQ.0) CALL CATNUM(SST,STACK(P+1)) ELSE REPEAT UNTIL (Q.EQ.0) IF (SST(1).GT.MAXSST-6) PUT-STATEMENT CALL CPYSTR(SST,SB5I1) FIN CALL CATNUM(SST,STACK(Q+2)) CALL CATSTR(SST,SCOMMA) Q=STACK(Q) FIN SST(1)=SST(1)-1 FIN WHEN (LONG) CALL CATSTR(SST,SRP) ELSE IF (SST(1).GT.MAXSST-9) PUT-STATEMENT CALL CPYSTR(SST,SB5I1) FIN CALL CATSTR(SST,SRPCI) CALL CATNUM(SST,STACK(P+1)) FIN PUT-STATEMENT FIN ELSE CALL CPYSTR(SST,SSTOP) STNO=STACK(P+1) PUT-STATEMENT FIN P=STACK(P) FIN FIN TO PUT-COPY IF (INCLUD) CALL GETCH (SFLX(2),1,CH) IF (CH.EQ.CHD) CALL PUTCH (SFLX(2),1,CHSPAC) FIN CONDITIONAL (NEXTNO.EQ.0) CALL PUT(LINENO,SFLX,FORTCL) (FLXNO.NE.0.OR.PASS) FORCE-NEXT-NUMBER CALL PUT(LINENO,SFLX,FORTCL) FIN (OTHERWISE) CALL CPYSTR(SST,SFLX) CALL PUTNUM(SST,NEXTNO) CALL PUT(LINENO,SST,FORTCL) NEXTNO=0 FIN FIN IF (INCLUD) CALL PUTCH (SFLX(2),1,CH) FIN TO PUT-STATEMENT UNLESS (NEXTNO.EQ.0) WHEN (STNO.EQ.0) STNO=NEXTNO NEXTNO=0 FIN ELSE FORCE-NEXT-NUMBER FIN UNLESS (STNO.EQ.0) CALL PUTNUM(SST,STNO) STNO=0 FIN WHEN (SST(1).LE.72) CALL PUT(LINENO,SST,FORTCL) ELSE CALL CPYSUB (SLIST,SST,1,72) CALL PUT(LINENO,SLIST,FORTCL) S=73 L=66 REPEAT UNTIL (S.GT.SST(1)) IF(S+L-1.GT.SST(1)) L=SST(1)-S+1 CALL CPYSTR(SLIST,SB5I1) CALL CATSUB(SLIST,SST,S,L) CALL PUT(LINENO,SLIST,FORTCL) S=S+66 FIN FIN FIN TO REVERSE-LIST LL=0 LR=STACK(LP) UNTIL (LR.EQ.0) LT=STACK(LR) STACK(LR)=LL LL=LR LR=LT FIN STACK(LP)=LL FIN TO SORT-TABLE P=MAX STACK(MAX)=0 ITEMP=MAXSTK-PRIME+1 DO (I=ITEMP,MAXSTK) UNLESS (STACK(I).EQ.0) STACK(P)=STACK(I) REPEAT UNTIL (STACK(P).EQ.0) P=STACK(P) LP=P+3 REVERSE-LIST FIN FIN FIN Q=MAX-1 STACK(Q)=0 UNTIL (STACK(MAX).EQ.0) P=STACK(MAX) STACK(MAX)=STACK(P) QM=Q QP=STACK(QM) INSERT=.FALSE. UNTIL (INSERT) CONDITIONAL (QP.EQ.0) INSERT=.TRUE. (STRLT(STACK(P+4),STACK(QP+4))) INSERT=.TRUE. (OTHERWISE) QM=QP QP=STACK(QM) FIN FIN FIN STACK(P)=QP STACK(QM)=P FIN PTABLE=STACK(Q) FIN END