RECORDFORMAT FDF(INTEGER LINK, DSNUM, C BYTEINTEGER STATUS, ACCESSROUTE, VALID ACTION, CUR STATE, C BYTEINTEGER MODE OF USE, MODE, FILE ORG, DEV CLASS, C BYTEINTEGER REC TYPE, FLAGS, LM, RM, C INTEGER ASVAR, AREC, RECSIZE, MINREC, MAXREC, MAXSIZE, C ROUTECCY, CONAD, CURREC, CUR, END, TRANSFERS, DARECNUM, C CURSIZE, DATASTART, STRING (31) IDEN, STRING (8) DEVICE) EXTERNALROUTINESPEC OPENSQ(INTEGER I) EXTERNALROUTINESPEC CLOSESQ(INTEGER CHAN) EXTERNALROUTINESPEC WRITESQ(INTEGER CHAN,NAME B,E) EXTERNALROUTINESPEC READLSQ(INTEGER CHAN,NAME B,E,C INTEGERNAME LEN) SYSTEMROUTINESPEC PSYSMES(INTEGER ROOT,FLAG) SYSTEMROUTINESPEC DEFINE(INTEGER CHAN,STRING (31)IDEN,C INTEGERNAME AFD,FLAG) SYSTEMINTEGERFNSPEC FDMAP(INTEGER CHAN) SYSTEMROUTINE GRAFIO(INTEGERNAME LEN, INTEGER MODE, AD) !I/O INTERFACE FOR GRAPH PLOTTER ROUTINES !MODE 0=READ 1=WRITE !AD=1-100 CHANNEL NO FOR OPEN ELSE ADDRESS OF BUFFER !LEN=LENGTH OF BUFFER READ !THIS VERSION USES SQ ROUTINES - COULD BE MODIFIED !TO USE LOWER LEVEL CALLS OWNINTEGER INCHAN, OUTCHAN INTEGER FLAG, CHAN, AFD RECORDNAME F(FDF) FLAG = 0; !DEFAULT LEN = 0; !DEFAULT REPLY IF 1 <= AD <= 100 START ; !OPEN(AD) AFD = FDMAP(AD) IF AFD = 0 START IF AD = 96 START ; !DEFAULT PLOTTER OUTPUT STREAM DEFINE(96,".GP23",AFD,FLAG) -> ERR IF FLAG # 0 FINISH ELSE FLAG = 151 AND -> ERR; !NOT DEFINED FINISH IF MODE = 0 THEN INCHAN = AD ELSE START OUTCHAN = AD IF AFD > 0 START F == RECORD(AFD); !FILE DESCRIPTOR FOR OUTPUT FILE F_RECTYPE = X'01'; !FIXED F_MINREC = 80 F_MAXREC = 80 FINISH FINISH OPENSQ(AD) -> ERR FINISH IF AD = 0 START ; !CLOSE CHAN IF MODE = 0 THEN CHAN = INCHAN ELSE CHAN = OUTCHAN CLOSESQ(CHAN) -> ERR FINISH IF MODE = 0 START ; !READ READLSQ(INCHAN,BYTEINTEGER(AD),BYTEINTEGER(AD+79),LEN) IF LEN = 0 THEN LEN = -1; !END OF FILE -> ERR FINISH WRITESQ(OUTCHAN,BYTEINTEGER(AD),BYTEINTEGER(AD+79)) ERR: IF FLAG # 0 START SELECTOUTPUT(0) PSYSMES(83,FLAG) MONITOR STOP FINISH END ; !OF GRAFIO ENDOFFILE ENDOFFILE