%EXTERNALROUTINE FTPCONS(%STRING(255) FILES) %EXTERNALROUTINESPEC CONS(%INTEGER FIGUREBASE, AMBIBASE, %C SSBASE, PHRASEBASE, PHRASELIMIT, IDENT, %INTEGERNAME GMAX, %C KMAX, %INTEGERARRAYNAME PHRASE, ITEM, NEXT, ATOMIC, MASK, %C KEYDICT, INDEX, CHAR) %EXTERNALROUTINESPEC DEFINE(%STRING(63) S) %STRING(63) GRAFILE, NEWFILE, LISTFILE %OWNINTEGER GRA=1; !IN STREAMS %OWNINTEGER ERR=0, NEW=2, GLIST=3, DLIST=3 !OUTSTREAMS %OWNINTEGER SSBASE=0, PHRASEBASE=1, FIGUREBASE=1, %C IDENT=255, PHRASELIMIT=255, AMBIBASE=255 %INTEGER GMAX, KMAX %INTEGERARRAY CHAR(1:2000), INDEX(0:511) %INTEGERARRAY ITEM, NEXT(0:1023), PHRASE(SSBASE:PHRASELIMIT), %C ATOMIC, MASK(FIGUREBASE:PHRASELIMIT) %INTEGERARRAY KEYDICT(32:511) %INTEGER I, J, K, MAX %UNLESS FILES -> GRAFILE.("/").NEWFILE.(",").LISTFILE %THEN %C PRINTSTRING(" PARAMETER FORMAT IS INPUT/NEW TABLE,LISTING ") %ANDRETURN DEFINE("1,".GRAFILE) DEFINE("2,".NEWFILE) DEFINE("3,".LISTFILE) CONS(FIGUREBASE, AMBIBASE, SSBASE, PHRASEBASE, PHRASELIMIT, %C IDENT, GMAX, KMAX, PHRASE, ITEM, NEXT, ATOMIC, MASK, %C KEYDICT, INDEX, CHAR) !WRITE REQUIRED VALUES SELECTOUTPUT(NEW) PRINTSTRING(" %constbyteintegerarray token(0:") WRITE(GMAX, 1) PRINTSTRING(")=0,") %CYCLE I=1, 1, GMAX NEWLINE %IF (I-1)&7=0 K=0 J=ITEM(I) K=128 %IF J&2048=0 J=J&127+K WRITE(J, 7) PRINTSYMBOL(',') %UNLESS I=GMAX %REPEAT NEWLINE PRINTSTRING(" %constbyteintegerarray next(0:") WRITE(GMAX, 1) PRINTSTRING(")=0,") %CYCLE I=1, 1, GMAX NEWLINE %IF (I-1)&7=0 J=NEXT(I) J=0 %IF J=1023 WRITE(J, 7) PRINTSYMBOL(',') %UNLESS I=GMAX %REPEAT NEWLINE MAX = 1 MAX = MAX+1 %WHILE INDEX(MAX) # 0 MAX = MAX-1 PRINTSTRING(" %constbyteintegerarray value(1:") WRITE(MAX, 1) PRINTSTRING(") = %C") %CYCLE I = 1, 1, MAX NEWLINE %IF (I-1)&15 = 0 %IF INDEX(I) # 0 %THENSTART %IF PHRASE(I) # 0 %THEN WRITE(PHRASE(I), 3) %ELSE %C WRITE(ATOMIC(I), 3) %FINISH PRINTSYMBOL(',') %UNLESS I = MAX %REPEAT NEWLINE PRINTSTRING(" %constbyteintegerarray action(1:") WRITE(MAX, 1) PRINTSTRING(") = %C") %CYCLE I = 1, 1, MAX NEWLINE %IF (I-1)&15 = 0 %IF INDEX(I) # 0 %THENSTART %IF PHRASE(I) # 0 %THEN WRITE(1, 3) %ELSE WRITE(MASK(I), 3) %FINISH PRINTSYMBOL(',') %UNLESS I = MAX %REPEAT NEWLINE PRINTSTRING(" !End of tables") NEWLINE %END %ENDOFFILE