SUBROUTINE MAIN INTEGER RAWMOD, STATUS, MSGCMD LOGICAL*1 C, CLOWER, GETCH COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 PSTR(4) DATA PSTR(1)/60/,PSTR(2)/45/,PSTR(3)/32/,PSTR(4)/0/ RAWIN = RAWMOD(1, 1) RAWOUT = RAWMOD(2, 1) CALL MSGINT 23000 CONTINUE CALL MPUTCH(10, 2) CALL PTMLIN(PSTR, 2) 23003 CONTINUE C = GETCH(C, 1) IF(.NOT.(C .EQ. 26 .OR. C .EQ. -1))GOTO 23006 GOTO 23005 23006 CONTINUE IF(.NOT.(C .EQ. 13))GOTO 23008 C = 110 23008 CONTINUE 23004 IF(.NOT.(C .NE. 10))GOTO 23003 23005 CONTINUE IF(.NOT.(C .EQ. 26 .OR. C .EQ. -1))GOTO 23010 GOTO 23002 23010 CONTINUE C = CLOWER(C) STATUS = MSGCMD(C) 23001 IF(.NOT.(STATUS .EQ. -1))GOTO 23000 23002 CONTINUE CALL MSGEND RETURN END SUBROUTINE BANNER INTEGER MRKHLP EXTERNAL PTMLIN COMMON / CMHELP / HLPINT, HLPPTR(30), HLPSCR(30) INTEGER HLPINT INTEGER*4 HLPPTR INTEGER*4 HLPSCR LOGICAL*1 BANNST(7) DATA BANNST(1)/98/,BANNST(2)/97/,BANNST(3)/110/,BANNST(4)/110/,BAN *NST(5)/101/,BANNST(6)/114/,BANNST(7)/0/ IF(.NOT.(MRKHLP(HLPINT, HLPPTR, BANNST, HLPSCR) .EQ. 0))GOTO 23012 CALL PUTHLP(HLPINT, HLPSCR, BANNST, 2, PTMLIN) 23012 CONTINUE RETURN END SUBROUTINE CURFIL(INT) COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 FILSTR(8) DATA FILSTR(1)/32/,FILSTR(2)/102/,FILSTR(3)/105/,FILSTR(4)/108/,FI *LSTR(5)/101/,FILSTR(6)/32/,FILSTR(7)/39/,FILSTR(8)/0/ CALL PTMLIN(FILSTR, INT) CALL PTMLIN(FILE, INT) CALL MPUTCH(39, INT) RETURN END SUBROUTINE DELEMF(LINARA) INTEGER LINARA(40), I, N COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE I=1 23014 IF(.NOT.(I .LT. 40 .AND. LINARA(I) .NE. 0))GOTO 23016 N = LINARA(I) HDELE(N) = 1 23015 I=I+1 GOTO 23014 23016 CONTINUE RETURN END INTEGER FUNCTION DOANSW(X) LOGICAL*1 X, TFILE(40) INTEGER N, OUT, I INTEGER GMSGNO, CREATE, GETLIN, MATCH, INDEX COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL LOGICAL*1 STR(7) LOGICAL*1 ANS(4) LOGICAL*1 SNDMSG(7) LOGICAL*1 MINUST(4) LOGICAL*1 MINUSS(9) LOGICAL*1 MINUSR(21) LOGICAL*1 SPNERR(26) DATA STR(1)/97/,STR(2)/110/,STR(3)/115/,STR(4)/119/,STR(5)/101/,ST *R(6)/114/,STR(7)/0/ DATA ANS(1)/97/,ANS(2)/110/,ANS(3)/115/,ANS(4)/0/ DATA SNDMSG(1)/115/,SNDMSG(2)/110/,SNDMSG(3)/100/,SNDMSG(4)/109/,S *NDMSG(5)/115/,SNDMSG(6)/103/,SNDMSG(7)/0/ DATA MINUST(1)/32/,MINUST(2)/45/,MINUST(3)/116/,MINUST(4)/0/ DATA MINUSS(1)/32/,MINUSS(2)/34/,MINUSS(3)/45/,MINUSS(4)/115/,MINU *SS(5)/82/,MINUSS(6)/101/,MINUSS(7)/58/,MINUSS(8)/32/,MINUSS(9)/0/ DATA MINUSR(1)/32/,MINUSR(2)/34/,MINUSR(3)/45/,MINUSR(4)/114/,MINU *SR(5)/89/,MINUSR(6)/111/,MINUSR(7)/117/,MINUSR(8)/114/,MINUSR(9)/3 *2/,MINUSR(10)/109/,MINUSR(11)/101/,MINUSR(12)/115/,MINUSR(13)/115/ *,MINUSR(14)/97/,MINUSR(15)/103/,MINUSR(16)/101/,MINUSR(17)/32/,MIN *USR(18)/111/,MINUSR(19)/102/,MINUSR(20)/32/,MINUSR(21)/0/ DATA SPNERR(1)/32/,SPNERR(2)/32/,SPNERR(3)/69/,SPNERR(4)/114/,SPNE *RR(5)/114/,SPNERR(6)/111/,SPNERR(7)/114/,SPNERR(8)/32/,SPNERR(9)/1 *15/,SPNERR(10)/112/,SPNERR(11)/97/,SPNERR(12)/119/,SPNERR(13)/110/ *,SPNERR(14)/105/,SPNERR(15)/110/,SPNERR(16)/103/,SPNERR(17)/32/,SP *NERR(18)/115/,SPNERR(19)/110/,SPNERR(20)/100/,SPNERR(21)/109/,SPNE *RR(22)/115/,SPNERR(23)/103/,SPNERR(24)/32/,SPNERR(25)/32/,SPNERR(2 *6)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(GMSGNO(N) .EQ. -3))GOTO 23017 DOANSW = -3 GOTO 23018 23017 CONTINUE CALL SCRATF(ANS, TFILE) OUT = CREATE(TFILE, 2) IF(.NOT.(OUT .NE. -3))GOTO 23019 CALL SEEK(HADDR(N), UNIT) I=GETLIN(BUF,UNIT) 23021 IF(.NOT.(I .GT. 1 .AND. I .NE. -1))GOTO 23023 CALL FOLD(BUF) IF(.NOT.(MATCH(BUF, FROMPT) .EQ. 1))GOTO 23024 GOTO 23023 23024 CONTINUE 23022 I=GETLIN(BUF,UNIT) GOTO 23021 23023 CONTINUE I = INDEX(BUF, 32) + 1 CALL SKIPBL(BUF, I) CALL SCOPY(BUF, I, BUF, 1) CALL PUTLIN(BUF, OUT) CALL CLOSE(OUT) I = 1 CALL STCOPY(SNDMSG, 1, BUF, I) CALL STCOPY(MINUST, 1, BUF, I) CALL STCOPY(TFILE, 1, BUF, I) CALL STCOPY(MINUSS, 1, BUF, I) CALL STCOPY(HSUBJ(1,N), 1, BUF, I) CALL CHCOPY(34, BUF, I) CALL STCOPY(MINUSR, 1, BUF, I) CALL STCOPY(HDATE(1,N), 1, BUF, I) CALL CHCOPY(34, BUF, I) IF(.NOT.(SPWNIT(BUF) .EQ. -3))GOTO 23026 CALL PTMLIN(SPNERR) 23026 CONTINUE CALL REMOVE(TFILE) DOANSW = 0 GOTO 23020 23019 CONTINUE DOANSW = -3 23020 CONTINUE 23018 CONTINUE RETURN END INTEGER FUNCTION DOBACK(LINARA) INTEGER LINARA(40) COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 STR(34) LOGICAL*1 ERRMSG(29) DATA STR(1)/98/,STR(2)/97/,STR(3)/99/,STR(4)/107/,STR(5)/105/,STR( *6)/110/,STR(7)/103/,STR(8)/32/,STR(9)/117/,STR(10)/112/,STR(11)/32 */,STR(12)/45/,STR(13)/32/,STR(14)/112/,STR(15)/114/,STR(16)/101/,S *TR(17)/118/,STR(18)/105/,STR(19)/111/,STR(20)/117/,STR(21)/115/,ST *R(22)/32/,STR(23)/109/,STR(24)/101/,STR(25)/115/,STR(26)/115/,STR( *27)/97/,STR(28)/103/,STR(29)/101/,STR(30)/32/,STR(31)/105/,STR(32) */115/,STR(33)/58/,STR(34)/0/ DATA ERRMSG(1)/99/,ERRMSG(2)/97/,ERRMSG(3)/110/,ERRMSG(4)/110/,ERR *MSG(5)/111/,ERRMSG(6)/116/,ERRMSG(7)/32/,ERRMSG(8)/98/,ERRMSG(9)/9 *7/,ERRMSG(10)/99/,ERRMSG(11)/107/,ERRMSG(12)/117/,ERRMSG(13)/112/, *ERRMSG(14)/32/,ERRMSG(15)/112/,ERRMSG(16)/97/,ERRMSG(17)/115/,ERRM *SG(18)/116/,ERRMSG(19)/32/,ERRMSG(20)/109/,ERRMSG(21)/101/,ERRMSG( *22)/115/,ERRMSG(23)/115/,ERRMSG(24)/97/,ERRMSG(25)/103/,ERRMSG(26) */101/,ERRMSG(27)/32/,ERRMSG(28)/49/,ERRMSG(29)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(CURMSG .GT. 1))GOTO 23028 CURMSG = CURMSG - 1 CALL ONEMSG(CURMSG) DOBACK = 0 GOTO 23029 23028 CONTINUE CALL PTMLIN(ERRMSG, 2) DOBACK = -3 23029 CONTINUE RETURN END INTEGER FUNCTION DOCURR(X) LOGICAL*1 X, TEMP(5) INTEGER ITOC INTEGER JUNK COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 OFS(4) LOGICAL*1 MSGS(13) LOGICAL*1 STR(19) DATA OFS(1)/32/,OFS(2)/111/,OFS(3)/102/,OFS(4)/0/ DATA MSGS(1)/32/,MSGS(2)/109/,MSGS(3)/101/,MSGS(4)/115/,MSGS(5)/11 *5/,MSGS(6)/97/,MSGS(7)/103/,MSGS(8)/101/,MSGS(9)/115/,MSGS(10)/32/ *,MSGS(11)/105/,MSGS(12)/110/,MSGS(13)/0/ DATA STR(1)/99/,STR(2)/117/,STR(3)/114/,STR(4)/114/,STR(5)/101/,ST *R(6)/110/,STR(7)/116/,STR(8)/32/,STR(9)/109/,STR(10)/101/,STR(11)/ *115/,STR(12)/115/,STR(13)/97/,STR(14)/103/,STR(15)/101/,STR(16)/32 */,STR(17)/105/,STR(18)/115/,STR(19)/0/ DATA TEMP(1) /32/ CALL PTMLIN(STR, 2) JUNK = ITOC(CURMSG, TEMP(2), 4) CALL PTMLIN(TEMP, 2) CALL PTMLIN(OFS, 2) JUNK = ITOC(NMSGS, TEMP(2), 4) CALL PTMLIN(TEMP, 2) CALL PTMLIN(MSGS, 2) CALL CURFIL(2) DOCURR = 0 RETURN END INTEGER FUNCTION DODELE(LINARA) INTEGER LINARA(40) INTEGER MSGSEQ LOGICAL*1 STR(7) DATA STR(1)/100/,STR(2)/101/,STR(3)/108/,STR(4)/101/,STR(5)/116/,S *TR(6)/101/,STR(7)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(MSGSEQ(LINARA) .EQ. -3))GOTO 23030 DODELE = -3 GOTO 23031 23030 CONTINUE CALL DELEMF(LINARA) DODELE = 0 23031 CONTINUE RETURN END INTEGER FUNCTION DOEXIT(LINARA) INTEGER LINARA(40), STATUS INTEGER SAVEMF, GTCONF LOGICAL*1 STR(20) LOGICAL*1 ERRMSG(27) DATA STR(1)/101/,STR(2)/120/,STR(3)/105/,STR(4)/116/,STR(5)/32/,ST *R(6)/97/,STR(7)/110/,STR(8)/100/,STR(9)/32/,STR(10)/117/,STR(11)/1 *12/,STR(12)/100/,STR(13)/97/,STR(14)/116/,STR(15)/101/,STR(16)/32/ *,STR(17)/111/,STR(18)/108/,STR(19)/100/,STR(20)/0/ DATA ERRMSG(1)/10/,ERRMSG(2)/63/,ERRMSG(3)/32/,ERRMSG(4)/67/,ERRMS *G(5)/97/,ERRMSG(6)/110/,ERRMSG(7)/39/,ERRMSG(8)/116/,ERRMSG(9)/32/ *,ERRMSG(10)/117/,ERRMSG(11)/112/,ERRMSG(12)/100/,ERRMSG(13)/97/,ER *RMSG(14)/116/,ERRMSG(15)/101/,ERRMSG(16)/32/,ERRMSG(17)/109/,ERRMS *G(18)/97/,ERRMSG(19)/105/,ERRMSG(20)/108/,ERRMSG(21)/32/,ERRMSG(22 *)/102/,ERRMSG(23)/105/,ERRMSG(24)/108/,ERRMSG(25)/101/,ERRMSG(26)/ *46/,ERRMSG(27)/0/ CALL PTMLIN(STR, 2) CALL CURFIL(2) IF(.NOT.(GTCONF(STATUS) .EQ. 0))GOTO 23032 DOEXIT = -3 GOTO 23033 23032 CONTINUE IF(.NOT.(SAVEMF(LINARA) .EQ. -3))GOTO 23034 CALL PTMLIN(ERRMSG, 2) DOEXIT = -3 GOTO 23035 23034 CONTINUE DOEXIT = -1 23035 CONTINUE 23033 CONTINUE RETURN END INTEGER FUNCTION DOFORW(X) LOGICAL*1 X, FILE(40) INTEGER LINARA(2), I, INT INTEGER GMSGNO, CREATE, SPWNIT COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL LOGICAL*1 STR(8) LOGICAL*1 FWD(4) LOGICAL*1 START(39) LOGICAL*1 NULL(1) LOGICAL*1 STOP(39) LOGICAL*1 SNDMSG(7) LOGICAL*1 MINUSM(4) LOGICAL*1 SPNERR(25) DATA STR(1)/102/,STR(2)/111/,STR(3)/114/,STR(4)/119/,STR(5)/97/,ST *R(6)/114/,STR(7)/100/,STR(8)/0/ DATA FWD(1)/102/,FWD(2)/119/,FWD(3)/100/,FWD(4)/0/ DATA START(1)/45/,START(2)/45/,START(3)/45/,START(4)/45/,START(5)/ *45/,START(6)/32/,START(7)/83/,START(8)/116/,START(9)/97/,START(10) */114/,START(11)/116/,START(12)/32/,START(13)/111/,START(14)/102/,S *TART(15)/32/,START(16)/102/,START(17)/111/,START(18)/114/,START(19 *)/119/,START(20)/97/,START(21)/114/,START(22)/100/,START(23)/101/, *START(24)/100/,START(25)/32/,START(26)/109/,START(27)/101/,START(2 *8)/115/,START(29)/115/,START(30)/97/,START(31)/103/,START(32)/101/ *,START(33)/32/,START(34)/45/,START(35)/45/,START(36)/45/,START(37) */45/,START(38)/45/,START(39)/0/ DATA NULL(1)/0/ DATA STOP(1)/45/,STOP(2)/45/,STOP(3)/45/,STOP(4)/45/,STOP(5)/45/,S *TOP(6)/45/,STOP(7)/32/,STOP(8)/69/,STOP(9)/110/,STOP(10)/100/,STOP *(11)/32/,STOP(12)/111/,STOP(13)/102/,STOP(14)/32/,STOP(15)/102/,ST *OP(16)/111/,STOP(17)/114/,STOP(18)/119/,STOP(19)/97/,STOP(20)/114/ *,STOP(21)/100/,STOP(22)/101/,STOP(23)/100/,STOP(24)/32/,STOP(25)/1 *09/,STOP(26)/101/,STOP(27)/115/,STOP(28)/115/,STOP(29)/97/,STOP(30 *)/103/,STOP(31)/101/,STOP(32)/32/,STOP(33)/45/,STOP(34)/45/,STOP(3 *5)/45/,STOP(36)/45/,STOP(37)/45/,STOP(38)/45/,STOP(39)/0/ DATA SNDMSG(1)/115/,SNDMSG(2)/110/,SNDMSG(3)/100/,SNDMSG(4)/109/,S *NDMSG(5)/115/,SNDMSG(6)/103/,SNDMSG(7)/0/ DATA MINUSM(1)/32/,MINUSM(2)/45/,MINUSM(3)/109/,MINUSM(4)/0/ DATA SPNERR(1)/32/,SPNERR(2)/32/,SPNERR(3)/69/,SPNERR(4)/114/,SPNE *RR(5)/114/,SPNERR(6)/111/,SPNERR(7)/114/,SPNERR(8)/32/,SPNERR(9)/1 *15/,SPNERR(10)/112/,SPNERR(11)/97/,SPNERR(12)/119/,SPNERR(13)/110/ *,SPNERR(14)/105/,SPNERR(15)/110/,SPNERR(16)/103/,SPNERR(17)/32/,SP *NERR(18)/115/,SPNERR(19)/110/,SPNERR(20)/100/,SPNERR(21)/109/,SPNE *RR(22)/115/,SPNERR(23)/103/,SPNERR(24)/33/,SPNERR(25)/0/ DATA LINARA(2) /0/ CALL PTMLIN(STR, 2) IF(.NOT.(GMSGNO(I) .EQ. -3))GOTO 23036 DOFORW = -3 GOTO 23037 23036 CONTINUE LINARA(1) = I CALL SCRATF(FWD, FILE) INT = CREATE(FILE, 2) IF(.NOT.(INT .NE. -3))GOTO 23038 CALL PTMLIN(START, INT) CALL PUTMF(NULL, LINARA, INT, -1) CALL PTMLIN(STOP, INT) CALL CLOSE(INT) I = 1 CALL STCOPY(SNDMSG, 1, BUF, I) CALL STCOPY(MINUSM, 1, BUF, I) CALL SCOPY(FILE, 1, BUF, I) IF(.NOT.(SPWNIT(BUF) .EQ. -3))GOTO 23040 CALL PTMLIN(SPNERR, 2) 23040 CONTINUE CALL REMOVE(FILE) DOFORW = 0 GOTO 23039 23038 CONTINUE DOFORW = -3 23039 CONTINUE 23037 CONTINUE RETURN END INTEGER FUNCTION DOGOTO(X) LOGICAL*1 X INTEGER GMSGNO INTEGER N COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 STR(6) DATA STR(1)/103/,STR(2)/111/,STR(3)/32/,STR(4)/116/,STR(5)/111/,ST *R(6)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(GMSGNO(N) .EQ. -3))GOTO 23042 DOGOTO = -3 GOTO 23043 23042 CONTINUE CURMSG = N CALL ONEMSG(CURMSG) DOGOTO = 0 23043 CONTINUE RETURN END INTEGER FUNCTION DOHEAD(LINARA) INTEGER LINARA(40) INTEGER MSGSEQ COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 STR(8) DATA STR(1)/104/,STR(2)/101/,STR(3)/97/,STR(4)/100/,STR(5)/101/,ST *R(6)/114/,STR(7)/115/,STR(8)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(MSGSEQ(LINARA) .EQ. -3))GOTO 23044 DOHEAD = -3 GOTO 23045 23044 CONTINUE CALL HEADMF(10, LINARA, 2, PAGESZ) DOHEAD = 0 23045 CONTINUE RETURN END INTEGER FUNCTION DOHELP(X) INTEGER*4 HLPTMP(2) LOGICAL*1 X INTEGER MRKHLP, GTCONT, EQLPTR INTEGER J, I COMMON / CMHELP / HLPINT, HLPPTR(30), HLPSCR(30) INTEGER HLPINT INTEGER*4 HLPPTR INTEGER*4 HLPSCR COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT EXTERNAL PTMLIN LOGICAL*1 HLPSTR(11) LOGICAL*1 SUMMAR(2) LOGICAL*1 ERRMSG(21) DATA HLPSTR(1)/63/,HLPSTR(2)/32/,HLPSTR(3)/77/,HLPSTR(4)/83/,HLPST *R(5)/71/,HLPSTR(6)/32/,HLPSTR(7)/72/,HLPSTR(8)/101/,HLPSTR(9)/108/ *,HLPSTR(10)/112/,HLPSTR(11)/0/ DATA SUMMAR(1)/37/,SUMMAR(2)/0/ DATA ERRMSG(1)/32/,ERRMSG(2)/32/,ERRMSG(3)/78/,ERRMSG(4)/111/,ERRM *SG(5)/32/,ERRMSG(6)/104/,ERRMSG(7)/101/,ERRMSG(8)/108/,ERRMSG(9)/1 *12/,ERRMSG(10)/32/,ERRMSG(11)/97/,ERRMSG(12)/118/,ERRMSG(13)/97/,E *RRMSG(14)/105/,ERRMSG(15)/108/,ERRMSG(16)/97/,ERRMSG(17)/98/,ERRMS *G(18)/108/,ERRMSG(19)/101/,ERRMSG(20)/46/,ERRMSG(21)/0/ CALL PTMLIN(HLPSTR, 2) IF(.NOT.(MRKHLP(HLPINT, HLPPTR, SUMMAR, HLPSCR) .EQ. -3))GOTO 2304 *6 CALL PTMLIN(ERRMSG, 2) DOHELP = -3 GOTO 23047 23046 CONTINUE CALL CPYPTR(0, HLPTMP(2)) CALL MPUTCH(10, 2) J = 0 I=1 23048 IF(.NOT.(EQLPTR(HLPSCR(I), 0) .EQ. 0))GOTO 23050 IF(.NOT.(PAGESZ .GT. 0 .AND. J .GE. PAGESZ))GOTO 23051 IF(.NOT.(GTCONT(0) .EQ. 0))GOTO 23053 GOTO 23050 23053 CONTINUE J = 0 23054 CONTINUE 23051 CONTINUE CALL CPYPTR(HLPSCR(I), HLPTMP(1)) CALL PUTHLP(HLPINT, HLPTMP, SUMMAR, 2, PTMLIN) J = J + 1 23049 I=I+1 GOTO 23048 23050 CONTINUE DOHELP = 0 23047 CONTINUE RETURN END INTEGER FUNCTION DOINFO(X) LOGICAL*1 X, C LOGICAL*1 CLOWER, GETCH INTEGER MRKHLP EXTERNAL PTMLIN COMMON / CMHELP / HLPINT, HLPPTR(30), HLPSCR(30) INTEGER HLPINT INTEGER*4 HLPPTR INTEGER*4 HLPSCR COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL LOGICAL*1 STR(39) LOGICAL*1 NEWS(5) LOGICAL*1 INTR(5) LOGICAL*1 HELP(5) LOGICAL*1 ERRMSG(28) DATA STR(1)/105/,STR(2)/110/,STR(3)/102/,STR(4)/111/,STR(5)/114/,S *TR(6)/109/,STR(7)/97/,STR(8)/116/,STR(9)/105/,STR(10)/111/,STR(11) */110/,STR(12)/32/,STR(13)/45/,STR(14)/32/,STR(15)/116/,STR(16)/121 */,STR(17)/112/,STR(18)/101/,STR(19)/32/,STR(20)/99/,STR(21)/111/,S *TR(22)/109/,STR(23)/109/,STR(24)/97/,STR(25)/110/,STR(26)/100/,STR *(27)/32/,STR(28)/99/,STR(29)/104/,STR(30)/97/,STR(31)/114/,STR(32) */97/,STR(33)/99/,STR(34)/116/,STR(35)/101/,STR(36)/114/,STR(37)/58 */,STR(38)/32/,STR(39)/0/ DATA NEWS(1)/110/,NEWS(2)/101/,NEWS(3)/119/,NEWS(4)/115/,NEWS(5)/0 */ DATA INTR(1)/105/,INTR(2)/110/,INTR(3)/116/,INTR(4)/114/,INTR(5)/0 */ DATA HELP(1)/104/,HELP(2)/101/,HELP(3)/108/,HELP(4)/112/,HELP(5)/0 */ DATA ERRMSG(1)/32/,ERRMSG(2)/32/,ERRMSG(3)/78/,ERRMSG(4)/111/,ERRM *SG(5)/32/,ERRMSG(6)/105/,ERRMSG(7)/110/,ERRMSG(8)/102/,ERRMSG(9)/1 *11/,ERRMSG(10)/114/,ERRMSG(11)/109/,ERRMSG(12)/97/,ERRMSG(13)/116/ *,ERRMSG(14)/105/,ERRMSG(15)/111/,ERRMSG(16)/110/,ERRMSG(17)/32/,ER *RMSG(18)/97/,ERRMSG(19)/118/,ERRMSG(20)/97/,ERRMSG(21)/105/,ERRMSG *(22)/108/,ERRMSG(23)/97/,ERRMSG(24)/98/,ERRMSG(25)/108/,ERRMSG(26) */101/,ERRMSG(27)/33/,ERRMSG(28)/0/ CALL PTMLIN(STR, 2) C = CLOWER(GETCH(C,1)) CALL MPUTCH(C, 2) CALL MPUTCH(10, 2) IF(.NOT.(C .EQ. 63))GOTO 23055 CALL SCOPY(HELP, 1, SCRFIL, 1) GOTO 23056 23055 CONTINUE IF(.NOT.(C .EQ. 35))GOTO 23057 CALL SCOPY(NEWS, 1, SCRFIL, 1) GOTO 23058 23057 CONTINUE IF(.NOT.(C .EQ. 37))GOTO 23059 CALL SCOPY(INTR, 1, SCRFIL, 1) GOTO 23060 23059 CONTINUE SCRFIL(1) = C SCRFIL(2) = 0 23060 CONTINUE 23058 CONTINUE 23056 CONTINUE IF(.NOT.(MRKHLP(HLPINT, HLPPTR, SCRFIL, HLPSCR) .EQ. -3))GOTO 2306 *1 CALL PTMLIN(ERRMSG, 2) DOINFO = -3 GOTO 23062 23061 CONTINUE CALL PUTHLP(HLPINT, HLPSCR, SCRFIL, 2, PTMLIN) DOINFO = 0 23062 CONTINUE RETURN END INTEGER FUNCTION DOJUMP(X) LOGICAL*1 X INTEGER GTCONF, SPWNIT INTEGER I COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL LOGICAL*1 STR(16) LOGICAL*1 SH(3) LOGICAL*1 SPNERR(23) DATA STR(1)/106/,STR(2)/117/,STR(3)/109/,STR(4)/112/,STR(5)/32/,ST *R(6)/105/,STR(7)/110/,STR(8)/116/,STR(9)/111/,STR(10)/32/,STR(11)/ *115/,STR(12)/104/,STR(13)/101/,STR(14)/108/,STR(15)/108/,STR(16)/0 */ DATA SH(1)/115/,SH(2)/104/,SH(3)/0/ DATA SPNERR(1)/32/,SPNERR(2)/69/,SPNERR(3)/114/,SPNERR(4)/114/,SPN *ERR(5)/111/,SPNERR(6)/114/,SPNERR(7)/32/,SPNERR(8)/115/,SPNERR(9)/ *112/,SPNERR(10)/97/,SPNERR(11)/119/,SPNERR(12)/110/,SPNERR(13)/105 */,SPNERR(14)/110/,SPNERR(15)/103/,SPNERR(16)/32/,SPNERR(17)/115/,S *PNERR(18)/104/,SPNERR(19)/101/,SPNERR(20)/108/,SPNERR(21)/108/,SPN *ERR(22)/33/,SPNERR(23)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(GTCONF(I) .EQ. 1))GOTO 23063 CALL SCOPY(SH, 1, BUF, 1) IF(.NOT.(SPWNIT(BUF) .EQ. -3))GOTO 23065 CALL PTMLIN(SPNERR, 2) 23065 CONTINUE DOJUMP = 0 GOTO 23064 23063 CONTINUE DOJUMP = -3 23064 CONTINUE RETURN END INTEGER FUNCTION DOLIST(LINARA) INTEGER LINARA(40), INT INTEGER MSGSEQ, GETMF, CREATE COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE LOGICAL*1 STR(5) LOGICAL*1 ONS(3) LOGICAL*1 LISPAT(33) LOGICAL*1 ERRMSG(25) DATA STR(1)/108/,STR(2)/105/,STR(3)/115/,STR(4)/116/,STR(5)/0/ DATA ONS(1)/111/,ONS(2)/110/,ONS(3)/0/ DATA LISPAT(1)/32/,LISPAT(2)/45/,LISPAT(3)/45/,LISPAT(4)/45/,LISPA *T(5)/32/,LISPAT(6)/109/,LISPAT(7)/101/,LISPAT(8)/115/,LISPAT(9)/11 *5/,LISPAT(10)/97/,LISPAT(11)/103/,LISPAT(12)/101/,LISPAT(13)/32/,L *ISPAT(14)/35/,LISPAT(15)/44/,LISPAT(16)/32/,LISPAT(17)/42/,LISPAT( *18)/32/,LISPAT(19)/99/,LISPAT(20)/104/,LISPAT(21)/97/,LISPAT(22)/1 *14/,LISPAT(23)/97/,LISPAT(24)/99/,LISPAT(25)/116/,LISPAT(26)/101/, *LISPAT(27)/114/,LISPAT(28)/115/,LISPAT(29)/32/,LISPAT(30)/45/,LISP *AT(31)/45/,LISPAT(32)/45/,LISPAT(33)/0/ DATA ERRMSG(1)/32/,ERRMSG(2)/32/,ERRMSG(3)/69/,ERRMSG(4)/114/,ERRM *SG(5)/114/,ERRMSG(6)/111/,ERRMSG(7)/114/,ERRMSG(8)/32/,ERRMSG(9)/1 *08/,ERRMSG(10)/105/,ERRMSG(11)/115/,ERRMSG(12)/116/,ERRMSG(13)/105 */,ERRMSG(14)/110/,ERRMSG(15)/103/,ERRMSG(16)/32/,ERRMSG(17)/109/,E *RRMSG(18)/97/,ERRMSG(19)/105/,ERRMSG(20)/108/,ERRMSG(21)/32/,ERRMS *G(22)/111/,ERRMSG(23)/110/,ERRMSG(24)/32/,ERRMSG(25)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(MSGSEQ(LINARA) .EQ. -3))GOTO 23067 DOLIST = -3 GOTO 23068 23067 CONTINUE CALL MPUTCH(10, 2) CALL PTMLIN(ONS, 2) IF(.NOT.(GETMF(SCRFIL) .LE. 0))GOTO 23069 DOLIST = -3 GOTO 23070 23069 CONTINUE INT = CREATE(SCRFIL, 2) IF(.NOT.(INT .NE. -3))GOTO 23071 CALL HEADMF(12, LINARA, INT, -1) LISPAT(1) = 12 CALL PUTMF(LISPAT, LINARA, INT, -1) CALL CLOSE(INT) DOLIST = 0 GOTO 23072 23071 CONTINUE DOLIST = -3 23072 CONTINUE 23070 CONTINUE IF(.NOT.(DOLIST .EQ. -3))GOTO 23073 CALL PTMLIN(ERRMSG, 2) CALL PTMLIN(SCRFIL, 2) 23073 CONTINUE 23068 CONTINUE RETURN END INTEGER FUNCTION DOMOVE(LINARA) INTEGER LINARA(40), INT INTEGER MSGSEQ, CREATE, GETMF COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL LOGICAL*1 STR(5) LOGICAL*1 INTOS(5) LOGICAL*1 ERRMSG(26) DATA STR(1)/109/,STR(2)/111/,STR(3)/118/,STR(4)/101/,STR(5)/0/ DATA INTOS(1)/105/,INTOS(2)/110/,INTOS(3)/116/,INTOS(4)/111/,INTOS *(5)/0/ DATA ERRMSG(1)/32/,ERRMSG(2)/32/,ERRMSG(3)/69/,ERRMSG(4)/114/,ERRM *SG(5)/114/,ERRMSG(6)/111/,ERRMSG(7)/114/,ERRMSG(8)/32/,ERRMSG(9)/1 *09/,ERRMSG(10)/111/,ERRMSG(11)/118/,ERRMSG(12)/105/,ERRMSG(13)/110 */,ERRMSG(14)/103/,ERRMSG(15)/32/,ERRMSG(16)/109/,ERRMSG(17)/97/,ER *RMSG(18)/105/,ERRMSG(19)/108/,ERRMSG(20)/32/,ERRMSG(21)/105/,ERRMS *G(22)/110/,ERRMSG(23)/116/,ERRMSG(24)/111/,ERRMSG(25)/32/,ERRMSG(2 *6)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(MSGSEQ(LINARA) .EQ. -3))GOTO 23075 DOMOVE = -3 GOTO 23076 23075 CONTINUE CALL MPUTCH(10, 2) CALL PTMLIN(INTOS, 2) IF(.NOT.(GETMF(SCRFIL) .LE. 0))GOTO 23077 DOMOVE = -3 GOTO 23078 23077 CONTINUE INT = CREATE(SCRFIL, 4) IF(.NOT.(INT .NE. -3))GOTO 23079 CALL PUTMF(HDRPAT, LINARA, INT, -1) CALL CLOSE(INT) CALL DELEMF(LINARA) DOMOVE = 0 GOTO 23080 23079 CONTINUE DOMOVE = -3 23080 CONTINUE 23078 CONTINUE IF(.NOT.(DOMOVE .EQ. -3))GOTO 23081 CALL PTMLIN(ERRMSG, 2) CALL PTMLIN(SCRFIL, 2) 23081 CONTINUE 23076 CONTINUE RETURN END INTEGER FUNCTION DONEWS(X) LOGICAL*1 X INTEGER MRKHLP COMMON / CMHELP / HLPINT, HLPPTR(30), HLPSCR(30) INTEGER HLPINT INTEGER*4 HLPPTR INTEGER*4 HLPSCR EXTERNAL PTMLIN LOGICAL*1 NWSSTR(11) LOGICAL*1 NEWS(5) LOGICAL*1 ERRMSG(21) DATA NWSSTR(1)/35/,NWSSTR(2)/32/,NWSSTR(3)/77/,NWSSTR(4)/83/,NWSST *R(5)/71/,NWSSTR(6)/32/,NWSSTR(7)/78/,NWSSTR(8)/101/,NWSSTR(9)/119/ *,NWSSTR(10)/115/,NWSSTR(11)/0/ DATA NEWS(1)/110/,NEWS(2)/101/,NEWS(3)/119/,NEWS(4)/115/,NEWS(5)/0 */ DATA ERRMSG(1)/32/,ERRMSG(2)/32/,ERRMSG(3)/78/,ERRMSG(4)/111/,ERRM *SG(5)/32/,ERRMSG(6)/110/,ERRMSG(7)/101/,ERRMSG(8)/119/,ERRMSG(9)/1 *15/,ERRMSG(10)/32/,ERRMSG(11)/97/,ERRMSG(12)/118/,ERRMSG(13)/97/,E *RRMSG(14)/105/,ERRMSG(15)/108/,ERRMSG(16)/97/,ERRMSG(17)/98/,ERRMS *G(18)/108/,ERRMSG(19)/101/,ERRMSG(20)/46/,ERRMSG(21)/0/ CALL PTMLIN(NWSSTR, 2) IF(.NOT.(MRKHLP(HLPINT, HLPPTR, NEWS, HLPSCR) .EQ. -3))GOTO 23083 CALL PTMLIN(ERRMSG, 2) DONEWS = -3 GOTO 23084 23083 CONTINUE CALL MPUTCH(10, 2) CALL PUTHLP(HLPINT, HLPSCR, NEWS, 2, PTMLIN) DONEWS = 0 23084 CONTINUE RETURN END INTEGER FUNCTION DONEXT(LINARA) INTEGER LINARA(40) COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 STR(17) LOGICAL*1 ERRMSG(19) DATA STR(1)/110/,STR(2)/101/,STR(3)/120/,STR(4)/116/,STR(5)/32/,ST *R(6)/109/,STR(7)/101/,STR(8)/115/,STR(9)/115/,STR(10)/97/,STR(11)/ *103/,STR(12)/101/,STR(13)/32/,STR(14)/105/,STR(15)/115/,STR(16)/58 */,STR(17)/0/ DATA ERRMSG(1)/32/,ERRMSG(2)/110/,ERRMSG(3)/111/,ERRMSG(4)/32/,ERR *MSG(5)/109/,ERRMSG(6)/111/,ERRMSG(7)/114/,ERRMSG(8)/101/,ERRMSG(9) */32/,ERRMSG(10)/109/,ERRMSG(11)/101/,ERRMSG(12)/115/,ERRMSG(13)/11 *5/,ERRMSG(14)/97/,ERRMSG(15)/103/,ERRMSG(16)/101/,ERRMSG(17)/115/, *ERRMSG(18)/33/,ERRMSG(19)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(CURMSG .LT. NMSGS))GOTO 23085 CURMSG = CURMSG + 1 CALL ONEMSG(CURMSG) DONEXT = 0 GOTO 23086 23085 CONTINUE CALL PTMLIN(ERRMSG, 2) DONEXT = -3 23086 CONTINUE RETURN END INTEGER FUNCTION DOOVER(LINARA) INTEGER LINARA(100), STATUS INTEGER SAVEMF, READMF, GTCONF COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 STR(14) LOGICAL*1 ERRMSG(26) DATA STR(1)/111/,STR(2)/118/,STR(3)/101/,STR(4)/114/,STR(5)/119/,S *TR(6)/114/,STR(7)/105/,STR(8)/116/,STR(9)/101/,STR(10)/32/,STR(11) */111/,STR(12)/108/,STR(13)/100/,STR(14)/0/ DATA ERRMSG(1)/32/,ERRMSG(2)/32/,ERRMSG(3)/69/,ERRMSG(4)/114/,ERRM *SG(5)/114/,ERRMSG(6)/111/,ERRMSG(7)/114/,ERRMSG(8)/32/,ERRMSG(9)/1 *11/,ERRMSG(10)/118/,ERRMSG(11)/101/,ERRMSG(12)/114/,ERRMSG(13)/119 */,ERRMSG(14)/114/,ERRMSG(15)/105/,ERRMSG(16)/116/,ERRMSG(17)/105/, *ERRMSG(18)/110/,ERRMSG(19)/103/,ERRMSG(20)/32/,ERRMSG(21)/102/,ERR *MSG(22)/105/,ERRMSG(23)/108/,ERRMSG(24)/101/,ERRMSG(25)/33/,ERRMSG *(26)/0/ CALL PTMLIN(STR, 2) CALL CURFIL(2) IF(.NOT.(GTCONF(STATUS) .EQ. 0))GOTO 23087 DOOVER = -3 GOTO 23088 23087 CONTINUE IF(.NOT.(SAVEMF(LINARA) .EQ. -3))GOTO 23089 DOOVER = -3 GOTO 23090 23089 CONTINUE IF(.NOT.(READMF(FILE, 0, 1, LINARA) .EQ. -3))GOTO 23091 DOOVER = -3 GOTO 23092 23091 CONTINUE DOOVER = 0 23092 CONTINUE 23090 CONTINUE 23088 CONTINUE IF(.NOT.(DOOVER .EQ. -3))GOTO 23093 CALL PTMLIN(ERRMSG, 2) 23093 CONTINUE RETURN END INTEGER FUNCTION DOPUT(LINARA) INTEGER LINARA(40), INT INTEGER MSGSEQ, CREATE, GETMF COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL LOGICAL*1 STR(4) LOGICAL*1 INTOS(5) LOGICAL*1 ERRMSG(27) DATA STR(1)/112/,STR(2)/117/,STR(3)/116/,STR(4)/0/ DATA INTOS(1)/105/,INTOS(2)/110/,INTOS(3)/116/,INTOS(4)/111/,INTOS *(5)/0/ DATA ERRMSG(1)/32/,ERRMSG(2)/32/,ERRMSG(3)/69/,ERRMSG(4)/114/,ERRM *SG(5)/114/,ERRMSG(6)/111/,ERRMSG(7)/114/,ERRMSG(8)/32/,ERRMSG(9)/1 *12/,ERRMSG(10)/117/,ERRMSG(11)/116/,ERRMSG(12)/116/,ERRMSG(13)/105 */,ERRMSG(14)/110/,ERRMSG(15)/103/,ERRMSG(16)/32/,ERRMSG(17)/109/,E *RRMSG(18)/97/,ERRMSG(19)/105/,ERRMSG(20)/108/,ERRMSG(21)/32/,ERRMS *G(22)/105/,ERRMSG(23)/110/,ERRMSG(24)/116/,ERRMSG(25)/111/,ERRMSG( *26)/32/,ERRMSG(27)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(MSGSEQ(LINARA) .EQ. -3))GOTO 23095 DOPUT = -3 GOTO 23096 23095 CONTINUE CALL MPUTCH(10, 2) CALL PTMLIN(INTOS, 2) IF(.NOT.(GETMF(SCRFIL) .LE. 0))GOTO 23097 DOPUT = -3 GOTO 23098 23097 CONTINUE INT = CREATE(SCRFIL, 4) IF(.NOT.(INT .NE. -3))GOTO 23099 CALL PUTMF(HDRPAT, LINARA, INT, -1) CALL CLOSE(INT) DOPUT = 0 GOTO 23100 23099 CONTINUE DOPUT = -3 23100 CONTINUE 23098 CONTINUE IF(.NOT.(DOPUT .EQ. -3))GOTO 23101 CALL PTMLIN(ERRMSG, 2) CALL PTMLIN(SCRFIL, 2) 23101 CONTINUE 23096 CONTINUE RETURN END INTEGER FUNCTION DOQUIT(X) LOGICAL*1 X INTEGER GTCONF INTEGER STATUS LOGICAL*1 STR(5) DATA STR(1)/113/,STR(2)/117/,STR(3)/105/,STR(4)/116/,STR(5)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(GTCONF(STATUS) .EQ. 1))GOTO 23103 DOQUIT = -1 GOTO 23104 23103 CONTINUE DOQUIT = -3 23104 CONTINUE RETURN END INTEGER FUNCTION DOREAD(LINARA) INTEGER LINARA(40) INTEGER READMF, GETMF COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 STR(5) DATA STR(1)/114/,STR(2)/101/,STR(3)/97/,STR(4)/100/,STR(5)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(GETMF(SCRFIL) .LE. 0))GOTO 23105 DOREAD = -3 GOTO 23106 23105 CONTINUE IF(.NOT.(READMF(SCRFIL, 1, 1, LINARA) .EQ. -3))GOTO 23107 DOREAD = -3 GOTO 23108 23107 CONTINUE DEFALT = 0 DOREAD = 0 23108 CONTINUE 23106 CONTINUE RETURN END INTEGER FUNCTION DOSNDM(X) LOGICAL*1 X INTEGER GTCONF, SPWNIT INTEGER I COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL LOGICAL*1 STR(7) LOGICAL*1 SPNERR(24) DATA STR(1)/115/,STR(2)/110/,STR(3)/100/,STR(4)/109/,STR(5)/115/,S *TR(6)/103/,STR(7)/0/ DATA SPNERR(1)/32/,SPNERR(2)/69/,SPNERR(3)/114/,SPNERR(4)/114/,SPN *ERR(5)/111/,SPNERR(6)/114/,SPNERR(7)/32/,SPNERR(8)/115/,SPNERR(9)/ *112/,SPNERR(10)/97/,SPNERR(11)/119/,SPNERR(12)/110/,SPNERR(13)/105 */,SPNERR(14)/110/,SPNERR(15)/103/,SPNERR(16)/32/,SPNERR(17)/115/,S *PNERR(18)/110/,SPNERR(19)/100/,SPNERR(20)/109/,SPNERR(21)/115/,SPN *ERR(22)/103/,SPNERR(23)/33/,SPNERR(24)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(GTCONF(I) .EQ. 1))GOTO 23109 CALL SCOPY(STR, 1, BUF, 1) IF(.NOT.(SPWNIT(BUF) .EQ. -3))GOTO 23111 CALL PTMLIN(SPNERR, 2) 23111 CONTINUE DOSNDM = 0 GOTO 23110 23109 CONTINUE DOSNDM = -3 23110 CONTINUE RETURN END INTEGER FUNCTION DOTYPE(LINARA) INTEGER LINARA(40) INTEGER MSGSEQ COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 STR(5) LOGICAL*1 TYPHDR(27) DATA STR(1)/116/,STR(2)/121/,STR(3)/112/,STR(4)/101/,STR(5)/0/ DATA TYPHDR(1)/32/,TYPHDR(2)/40/,TYPHDR(3)/109/,TYPHDR(4)/101/,TYP *HDR(5)/115/,TYPHDR(6)/115/,TYPHDR(7)/97/,TYPHDR(8)/103/,TYPHDR(9)/ *101/,TYPHDR(10)/32/,TYPHDR(11)/35/,TYPHDR(12)/44/,TYPHDR(13)/32/,T *YPHDR(14)/42/,TYPHDR(15)/32/,TYPHDR(16)/99/,TYPHDR(17)/104/,TYPHDR *(18)/97/,TYPHDR(19)/114/,TYPHDR(20)/97/,TYPHDR(21)/99/,TYPHDR(22)/ *116/,TYPHDR(23)/101/,TYPHDR(24)/114/,TYPHDR(25)/115/,TYPHDR(26)/41 */,TYPHDR(27)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(MSGSEQ(LINARA) .EQ. -3))GOTO 23113 DOTYPE = -3 GOTO 23114 23113 CONTINUE CALL MPUTCH(10, 2) TYPHDR(1) = 10 CALL PUTMF(TYPHDR, LINARA, 2, PAGESZ) DOTYPE = 0 23114 CONTINUE RETURN END INTEGER FUNCTION DOUNDE(LINARA) INTEGER LINARA(40), I INTEGER MSGSEQ COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE LOGICAL*1 STR(9) DATA STR(1)/117/,STR(2)/110/,STR(3)/100/,STR(4)/101/,STR(5)/108/,S *TR(6)/101/,STR(7)/116/,STR(8)/101/,STR(9)/0/ CALL PTMLIN(STR, 2) IF(.NOT.(MSGSEQ(LINARA) .EQ. -3))GOTO 23115 DOUNDE = -3 GOTO 23116 23115 CONTINUE I=1 23117 IF(.NOT.(I .LT. 40 .AND. LINARA(I) .NE. 0))GOTO 23119 J = LINARA(I) HDELE(J) = 0 23118 I=I+1 GOTO 23117 23119 CONTINUE DOUNDE = 0 23116 CONTINUE RETURN END INTEGER FUNCTION DOWRIT(X) LOGICAL*1 X LOGICAL*1 STR(6) DATA STR(1)/119/,STR(2)/114/,STR(3)/105/,STR(4)/116/,STR(5)/101/,S *TR(6)/0/ CALL PTMLIN(STR, 2) CALL NOTIMP DOWRIT = -3 RETURN END SUBROUTINE GETFLD(BUF, I, LIMIT, ARRAY) LOGICAL*1 BUF(100), ARRAY(100) INTEGER I, LIMIT, J, K J = I CALL SKIPBL(BUF, J) K=1 23120 IF(.NOT.(BUF(J) .NE. 10 .AND. BUF(J) .NE. 0 .AND. K .LT. LIMIT))GO *TO 23122 ARRAY(K) = BUF(J) J = J + 1 23121 K=K+1 GOTO 23120 23122 CONTINUE ARRAY(K) = 0 RETURN END INTEGER FUNCTION GETHDR(FD, BUF, NAME, SIZE) LOGICAL*1 BUF(400), C, NAME(40) INTEGER CTOI, EQUAL, GETLIN, GETWRD INTEGER FD, I, LEN, SIZE LOGICAL*1 HDR(5) DATA HDR(1)/35/,HDR(2)/45/,HDR(3)/104/,HDR(4)/45/,HDR(5)/0/ IF(.NOT.(GETLIN(BUF, FD) .EQ. -1))GOTO 23123 GETHDR = -1 RETURN 23123 CONTINUE I = 1 LEN = GETWRD(BUF, I, NAME) IF(.NOT.(EQUAL(NAME, HDR) .EQ. 0))GOTO 23125 CALL ERROR(12HBad archive.) 23125 CONTINUE GETHDR = 1 LEN = GETWRD(BUF, I, NAME) SIZE = CTOI(BUF, I) CALL FOLD(NAME) RETURN END INTEGER FUNCTION GETMF(FILE) LOGICAL*1 FILE(100), TRMARA(4) LOGICAL*1 GETRLN INTEGER LENGTH INTEGER I LOGICAL*1 STR(13) DATA STR(1)/32/,STR(2)/102/,STR(3)/105/,STR(4)/108/,STR(5)/101/,ST *R(6)/32/,STR(7)/110/,STR(8)/97/,STR(9)/109/,STR(10)/101/,STR(11)/5 *8/,STR(12)/32/,STR(13)/0/ DATA TRMARA/13, 10, 27, 0/ CALL PTMLIN(STR, 2) IF(.NOT.(GETRLN(FILE, 1, 1, 2, TRMARA) .EQ. 27))GOTO 23127 FILE(1) = 0 23127 CONTINUE CALL MPUTCH(32, 2) I = 1 CALL SKIPBL(FILE, I) CALL SCOPY(FILE, I, FILE, 1) GETMF = LENGTH(FILE) RETURN END LOGICAL*1 FUNCTION GETRLN(BUF, START, IN, OUT, TRMARA) INTEGER IN, OUT, I, START INTEGER INDEX LOGICAL*1 BUF(100), TRMARA(100), C, BSBLBS(4), NOTSTR(5) LOGICAL*1 GETCH DATA BSBLBS/8, 32, 8, 0/ DATA NOTSTR/94, 82, 13, 10, 0/ I = START 23129 CONTINUE C = GETCH(C, IN) IF(.NOT.(INDEX(TRMARA, C) .GT. 0))GOTO 23132 GOTO 23131 23132 CONTINUE IF(.NOT.(C .EQ. 8 .OR. C .EQ. 127))GOTO 23134 IF(.NOT.(I .GT. START))GOTO 23136 CALL PUTLIN(BSBLBS, OUT) I = I - 1 GOTO 23137 23136 CONTINUE C = 127 GOTO 23131 23137 CONTINUE GOTO 23135 23134 CONTINUE IF(.NOT.(C .EQ. 21))GOTO 23138 23140 IF(.NOT.(I .GT. START))GOTO 23142 CALL PUTLIN(BSBLBS, OUT) 23141 I = I - 1 GOTO 23140 23142 CONTINUE GOTO 23139 23138 CONTINUE IF(.NOT.(C .EQ. 18 .AND. I .GT. START))GOTO 23143 CALL PUTLIN(NOTSTR, OUT) BUF(I) = 0 CALL PUTLIN(BUF, OUT) GOTO 23144 23143 CONTINUE BUF(I) = C I = I + 1 CALL PUTCH(C, OUT) 23144 CONTINUE 23139 CONTINUE 23135 CONTINUE 23130 GOTO 23129 23131 CONTINUE BUF(I) = 0 GETRLN = C RETURN END INTEGER FUNCTION GMSGNO(N) INTEGER N, I INTEGER CTOI LOGICAL*1 C, TRMARA(3) LOGICAL*1 CLOWER, GETCH, TYPE, GETRLN COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL LOGICAL*1 STR(18) LOGICAL*1 FIRST(6) LOGICAL*1 LAST(5) LOGICAL*1 CURRNT(8) LOGICAL*1 ERRMSG(26) DATA STR(1)/32/,STR(2)/109/,STR(3)/101/,STR(4)/115/,STR(5)/115/,ST *R(6)/97/,STR(7)/103/,STR(8)/101/,STR(9)/32/,STR(10)/110/,STR(11)/1 *17/,STR(12)/109/,STR(13)/98/,STR(14)/101/,STR(15)/114/,STR(16)/58/ *,STR(17)/32/,STR(18)/0/ DATA FIRST(1)/102/,FIRST(2)/105/,FIRST(3)/114/,FIRST(4)/115/,FIRST *(5)/116/,FIRST(6)/0/ DATA LAST(1)/108/,LAST(2)/97/,LAST(3)/115/,LAST(4)/116/,LAST(5)/0/ DATA CURRNT(1)/99/,CURRNT(2)/117/,CURRNT(3)/114/,CURRNT(4)/114/,CU *RRNT(5)/101/,CURRNT(6)/110/,CURRNT(7)/116/,CURRNT(8)/0/ DATA ERRMSG(1)/32/,ERRMSG(2)/32/,ERRMSG(3)/105/,ERRMSG(4)/110/,ERR *MSG(5)/118/,ERRMSG(6)/97/,ERRMSG(7)/108/,ERRMSG(8)/105/,ERRMSG(9)/ *100/,ERRMSG(10)/32/,ERRMSG(11)/109/,ERRMSG(12)/101/,ERRMSG(13)/115 */,ERRMSG(14)/115/,ERRMSG(15)/97/,ERRMSG(16)/103/,ERRMSG(17)/101/,E *RRMSG(18)/32/,ERRMSG(19)/110/,ERRMSG(20)/117/,ERRMSG(21)/109/,ERRM *SG(22)/98/,ERRMSG(23)/101/,ERRMSG(24)/114/,ERRMSG(25)/33/,ERRMSG(2 *6)/0/ DATA TRMARA /13, 10, 0/ CALL PTMLIN(STR, 2) C = CLOWER(GETCH(C, 1)) IF(.NOT.(C .EQ. 102))GOTO 23145 CALL PTMLIN(FIRST, 2) N = 1 GOTO 23146 23145 CONTINUE IF(.NOT.(C .EQ. 108))GOTO 23147 CALL PTMLIN(LAST, 2) N = NMSGS GOTO 23148 23147 CONTINUE IF(.NOT.(C .EQ. 13 .OR. C .EQ. 10))GOTO 23149 CALL PTMLIN(CURRNT, 2) N = CURMSG GOTO 23150 23149 CONTINUE IF(.NOT.(TYPE(C) .EQ. 2))GOTO 23151 SCRFIL(1) = C CALL MPUTCH(C, 2) C = GETRLN(SCRFIL, 2, 1, 2, TRMARA) I = 1 N = CTOI(SCRFIL, I) IF(.NOT.(N .LE. 0 .OR. N .GT. NMSGS))GOTO 23153 CALL PTMLIN(ERRMSG, 2) N = -3 23153 CONTINUE GOTO 23152 23151 CONTINUE IF(.NOT.(C .EQ. 27))GOTO 23155 N = -3 GOTO 23156 23155 CONTINUE CALL MPUTCH(C, 2) CALL PTMLIN(ERRMSG, 2) N = -3 23156 CONTINUE 23152 CONTINUE 23150 CONTINUE 23148 CONTINUE 23146 CONTINUE GMSGNO = N RETURN END INTEGER FUNCTION GSEQNO(C, LINARA) LOGICAL*1 C, TEXT(75), TRMN8R, TRMARA(5), SEPR8R(3), SKPSTR(8), BS *BLBS(4) LOGICAL*1 GETRLN, GETCH INTEGER I, J, LINARA(40), START, STOP, DIF, K, STATUS, CTR INTEGER CTOI, INDEX, TYPE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 CTRXST(3) DATA CTRXST(1)/94/,CTRXST(2)/88/,CTRXST(3)/0/ DATA TRMARA/13, 10, 24, 44, 0/ DATA SEPR8R/58, 45, 0/ DATA SKPSTR/13, 10, 32, 9, 44, 8, 127, 0/ DATA BSBLBS/8, 32, 8, 0/ J = 1 STATUS = 0 23157 CONTINUE TEXT(1) = C CALL MPUTCH(C, 2) TRMN8R = GETRLN(TEXT, 2, 1, 2, TRMARA) IF(.NOT.(TRMN8R .EQ. 127))GOTO 23160 CALL PTMLIN(BSBLBS, 2) 23160 CONTINUE 23162 IF(.NOT.(TRMN8R .EQ. 127))GOTO 23163 TRMN8R = GETRLN(TEXT, 1, 1, 2, TRMARA) GOTO 23162 23163 CONTINUE IF(.NOT.(TRMN8R .EQ. 44))GOTO 23164 CALL MPUTCH(44, 2) GOTO 23165 23164 CONTINUE IF(.NOT.(TRMN8R .EQ. 24))GOTO 23166 CALL PTMLIN(CTRXST, 2) STATUS = -3 GOTO 23159 23166 CONTINUE 23165 CONTINUE I = 1 START = CTOI(TEXT, I) IF(.NOT.(START .LE. 0 .OR. START .GT. NMSGS))GOTO 23168 STATUS = -3 GOTO 23159 23168 CONTINUE CALL SKIPBL(TEXT, I) IF(.NOT.(TEXT(I) .EQ. 0))GOTO 23170 LINARA(J) = START J = J + 1 GOTO 23171 23170 CONTINUE IF(.NOT.(INDEX(SEPR8R, TEXT(I)) .GT. 0))GOTO 23172 I = I + 1 STOP = CTOI(TEXT, I) IF(.NOT.(STOP .LE. 0 .OR. STOP .GT. NMSGS))GOTO 23174 STATUS = -3 GOTO 23159 23174 CONTINUE IF(.NOT.(STOP .GE. START))GOTO 23176 DIF = 1 GOTO 23177 23176 CONTINUE DIF = -1 23177 CONTINUE STOP = STOP + DIF K=START 23178 IF(.NOT.(K .NE. STOP))GOTO 23180 LINARA(J) = K J = J + 1 23179 K=K+DIF GOTO 23178 23180 CONTINUE GOTO 23173 23172 CONTINUE STATUS = -3 GOTO 23159 23173 CONTINUE 23171 CONTINUE IF(.NOT.(TRMN8R .EQ. 44))GOTO 23181 CTR = 1 C=GETCH(C,1) 23183 IF(.NOT.(INDEX(SKPSTR,C) .GT. 0))GOTO 23185 IF(.NOT.(C .EQ. 8 .OR. C .EQ. 127))GOTO 23186 IF(.NOT.(CTR .GT. 1))GOTO 23188 CALL PTMLIN(BSBLBS, 2) CTR = CTR - 1 23188 CONTINUE GOTO 23187 23186 CONTINUE CALL MPUTCH(C, 2) IF(.NOT.(C .EQ. 13 .OR. C .EQ. 10))GOTO 23190 CTR = 1 GOTO 23191 23190 CONTINUE CTR = CTR + 1 23191 CONTINUE 23187 CONTINUE 23184 C=GETCH(C,1) GOTO 23183 23185 CONTINUE 23181 CONTINUE IF(.NOT.(TYPE(C) .NE. 2))GOTO 23192 STATUS = -3 GOTO 23159 23192 CONTINUE 23158 IF(.NOT.(TRMN8R .NE. 44))GOTO 23157 23159 CONTINUE IF(.NOT.(STATUS .EQ. -3))GOTO 23194 J = 1 23194 CONTINUE LINARA(J) = 0 GSEQNO = STATUS RETURN END INTEGER FUNCTION GTCONF(STATUS) INTEGER STATUS LOGICAL*1 C LOGICAL*1 CLOWER, GETCH LOGICAL*1 CONFST(26) DATA CONFST(1)/32/,CONFST(2)/91/,CONFST(3)/116/,CONFST(4)/121/,CON *FST(5)/112/,CONFST(6)/101/,CONFST(7)/32/,CONFST(8)/83/,CONFST(9)/8 *0/,CONFST(10)/65/,CONFST(11)/67/,CONFST(12)/69/,CONFST(13)/32/,CON *FST(14)/116/,CONFST(15)/111/,CONFST(16)/32/,CONFST(17)/99/,CONFST( *18)/111/,CONFST(19)/110/,CONFST(20)/102/,CONFST(21)/105/,CONFST(22 *)/114/,CONFST(23)/109/,CONFST(24)/93/,CONFST(25)/32/,CONFST(26)/0/ CALL PTMLIN(CONFST, 2) C = CLOWER(GETCH(C, 1)) IF(.NOT.(C .NE. 13 .AND. C .NE. 10))GOTO 23196 CALL MPUTCH(C, 2) 23196 CONTINUE IF(.NOT.(C .EQ. 32))GOTO 23198 STATUS = 1 GOTO 23199 23198 CONTINUE STATUS = 0 23199 CONTINUE GTCONF = STATUS RETURN END INTEGER FUNCTION GTCONT(STRNG) INTEGER INDEX LOGICAL*1 C, STRNG(100) LOGICAL*1 GETCH LOGICAL*1 STR(25) LOGICAL*1 CONSTR(2) DATA STR(1)/91/,STR(2)/116/,STR(3)/121/,STR(4)/112/,STR(5)/101/,ST *R(6)/32/,STR(7)/83/,STR(8)/80/,STR(9)/65/,STR(10)/67/,STR(11)/69/, *STR(12)/32/,STR(13)/116/,STR(14)/111/,STR(15)/32/,STR(16)/99/,STR( *17)/111/,STR(18)/110/,STR(19)/116/,STR(20)/105/,STR(21)/110/,STR(2 *2)/117/,STR(23)/101/,STR(24)/93/,STR(25)/0/ DATA CONSTR(1)/32/,CONSTR(2)/0/ IF(.NOT.(STRNG(1) .EQ. 0))GOTO 23200 CALL PTMLIN(STR, 2) GOTO 23201 23200 CONTINUE CALL PTMLIN(STRNG, 2) 23201 CONTINUE C = GETCH(C, 1) IF(.NOT.(INDEX(CONSTR, C) .GT. 0))GOTO 23202 CALL MPUTCH(10, 2) GTCONT = 1 GOTO 23203 23202 CONTINUE GTCONT = 0 23203 CONTINUE RETURN END SUBROUTINE GTHPTR(IN) REAL JDATE INTEGER I, GETLIN, MATCH, EQUAL, N, J, INDEX, IN INTEGER*4 TEMP COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL LOGICAL*1 ERRSTR(19) DATA ERRSTR(1)/84/,ERRSTR(2)/111/,ERRSTR(3)/111/,ERRSTR(4)/32/,ERR *STR(5)/109/,ERRSTR(6)/97/,ERRSTR(7)/110/,ERRSTR(8)/121/,ERRSTR(9)/ *32/,ERRSTR(10)/109/,ERRSTR(11)/101/,ERRSTR(12)/115/,ERRSTR(13)/115 */,ERRSTR(14)/97/,ERRSTR(15)/103/,ERRSTR(16)/101/,ERRSTR(17)/115/,E *RRSTR(18)/33/,ERRSTR(19)/0/ I = 1 23204 CONTINUE CALL MARKL(IN, TEMP) CALL MARKL(UNIT, HADDR(I)) IF(.NOT.(GETLIN(BUF, IN) .EQ. -1))GOTO 23207 GOTO 23206 23207 CONTINUE CALL PUTLIN(BUF, UNIT) IF(.NOT.(EQUAL(BUF, HDRPAT) .EQ. 1))GOTO 23209 IF(.NOT.(I .GE. 40))GOTO 23211 CALL MPUTCH(10, 2) CALL PTMLIN(ERRSTR, 2) CALL MSGEND 23211 CONTINUE HFROM(1,I) = 0 HSUBJ(1,I) = 0 HDATE(1,I) = 0 RDATE(I) = 0. N=GETLIN(BUF,IN) 23213 IF(.NOT.(N .GT. 1 .AND. N .NE. -1))GOTO 23215 CALL FOLD(BUF) IF(.NOT.(MATCH(BUF, FROMPT) .EQ. 1))GOTO 23216 CALL GETFLD(BUF, 6, 20, HFROM(1,I)) GOTO 23217 23216 CONTINUE IF(.NOT.(MATCH(BUF, SUBJPT) .EQ. 1))GOTO 23218 CALL GETFLD(BUF, 9, 30, HSUBJ(1,I)) GOTO 23219 23218 CONTINUE IF(.NOT.(MATCH(BUF, DATEPT) .EQ. 1))GOTO 23220 CALL GETFLD(BUF, 6, 12, HDATE(1,I)) IF(.NOT.(INDEX(HDATE(1,I), 45) .GT. 0))GOTO 23222 J = INDEX(HDATE(1,I), 32) IF(.NOT.(J .GT. 0))GOTO 23224 HDATE(J,I) = 0 23224 CONTINUE 23222 CONTINUE RDATE(I) = JDATE(BUF(6)) 23220 CONTINUE 23219 CONTINUE 23217 CONTINUE 23214 N=GETLIN(BUF,IN) GOTO 23213 23215 CONTINUE CALL SEEK(TEMP, IN) N = GETLIN(BUF, IN) CALL MARKL(IN, TEMP) M=GETLIN(BUF,IN) 23226 IF(.NOT.(M .NE. -1))GOTO 23228 IF(.NOT.(EQUAL(BUF, HDRPAT) .EQ. 1))GOTO 23229 GOTO 23228 23229 CONTINUE N = N + M CALL PUTLIN(BUF, UNIT) 23230 CONTINUE CALL MARKL(IN, TEMP) 23227 M=GETLIN(BUF,IN) GOTO 23226 23228 CONTINUE HSIZE(I) = N CALL SEEK(TEMP, IN) HDELE(I) = 0 I = I + 1 23209 CONTINUE 23205 GOTO 23204 23206 CONTINUE NMSGS = I - 1 RETURN END SUBROUTINE HEADMF(CH, LINARA, INT, PAGE) LOGICAL*1 CH INTEGER LINARA(40), INT, I, PAGE, J INTEGER GTCONT IF(.NOT.(CH .NE. 0))GOTO 23231 CALL MPUTCH(CH, INT) 23231 CONTINUE J = 0 I=1 23233 IF(.NOT.(I .LT. 40 .AND. LINARA(I) .NE. 0))GOTO 23235 IF(.NOT.(PAGE .GT. 0 .AND. J .GE. PAGE))GOTO 23236 IF(.NOT.(GTCONT(0) .EQ. 0))GOTO 23238 GOTO 23235 23238 CONTINUE J = 0 23239 CONTINUE 23236 CONTINUE CALL PUTHDR(LINARA(I), INT) J = J + 1 23234 I=I+1 GOTO 23233 23235 CONTINUE RETURN END INTEGER FUNCTION INIHLP(FILE, PTRARA, PTRSIZ, UNIT) INTEGER PTRSIZ, UNIT, I INTEGER*4 PTRARA(PTRSIZ) LOGICAL*1 FILE(40) INTEGER OPEN, GETHDR COMMON / CHELP / SIZE, NAME(40), BUF(400) INTEGER SIZE LOGICAL*1 NAME LOGICAL*1 BUF CALL CLOSE(UNIT) UNIT = OPEN(FILE, 1) IF(.NOT.(UNIT .NE. -3))GOTO 23240 I=1 23242 IF(.NOT.(I .LT. PTRSIZ))GOTO 23244 CALL MARKL(UNIT, PTRARA(I)) IF(.NOT.(GETHDR(UNIT, BUF, NAME, SIZE) .NE. 1))GOTO 23245 GOTO 23244 23245 CONTINUE CALL FSKIP(UNIT, SIZE) 23243 I=I+1 GOTO 23242 23244 CONTINUE CALL CPYPTR(0, PTRARA(I)) INIHLP = 0 GOTO 23241 23240 CONTINUE INIHLP = -3 23241 CONTINUE RETURN END SUBROUTINE INIMSH INTEGER I INTEGER INIHLP COMMON / CMHELP / HLPINT, HLPPTR(30), HLPSCR(30) INTEGER HLPINT INTEGER*4 HLPPTR INTEGER*4 HLPSCR COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL LOGICAL*1 MSGHLP(7) DATA MSGHLP(1)/109/,MSGHLP(2)/115/,MSGHLP(3)/103/,MSGHLP(4)/104/,M *SGHLP(5)/108/,MSGHLP(6)/112/,MSGHLP(7)/0/ CALL GETDIR(5, 6, SCRFIL) CALL CONCAT(SCRFIL, MSGHLP, SCRFIL) I = INIHLP(SCRFIL, HLPPTR, 30, HLPINT) RETURN END REAL FUNCTION JDATE(BUF) LOGICAL*1 BUF(100) JDATE = 0. RETURN END INTEGER FUNCTION MFSAVE(OUTFIL, ACCESS, LINARA, IFNOT) LOGICAL*1 OUTFIL(40) INTEGER ACCESS, LINARA(40), IFNOT, INT, J, I INTEGER CREATE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE LOGICAL*1 SAVSTR(12) DATA SAVSTR(1)/117/,SAVSTR(2)/112/,SAVSTR(3)/100/,SAVSTR(4)/97/,SA *VSTR(5)/116/,SAVSTR(6)/105/,SAVSTR(7)/110/,SAVSTR(8)/103/,SAVSTR(9 *)/46/,SAVSTR(10)/46/,SAVSTR(11)/46/,SAVSTR(12)/0/ INT = CREATE(OUTFIL, ACCESS) IF(.NOT.(INT .NE. -3))GOTO 23247 IF(.NOT.(IFNOT .EQ. 1))GOTO 23249 CALL MPUTCH(10, 2) CALL PTMLIN(SAVSTR, 2) 23249 CONTINUE J = 1 I=1 23251 IF(.NOT.(I .LE. NMSGS))GOTO 23253 IF(.NOT.(HDELE(I) .EQ. 0))GOTO 23254 LINARA(J) = I J = J + 1 23254 CONTINUE 23252 I=I+1 GOTO 23251 23253 CONTINUE LINARA(J) = 0 CALL PUTCH(10, INT) CALL PUTMF(HDRPAT, LINARA, INT, -1) CALL CLOSE(INT) MFSAVE = 0 GOTO 23248 23247 CONTINUE MFSAVE = -3 23248 CONTINUE RETURN END SUBROUTINE MPUTCH(C, INT) INTEGER INT, RAW LOGICAL*1 C COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / CRLF / CRLF(10) LOGICAL*1 CRLF IF(.NOT.(INT .EQ. 2 .AND. RAWOUT .EQ. 1 .AND. (C .EQ. 13 .OR. C .E *Q. 10)))GOTO 23256 CALL PUTLIN(CRLF, INT) GOTO 23257 23256 CONTINUE CALL PUTCH(C, INT) 23257 CONTINUE RETURN END INTEGER FUNCTION MRKHLP(UNIT, PTRARA, KEY, OUTARA) INTEGER*4 PTRARA(100), OUTARA(100) INTEGER UNIT, J, I, JUNK, DOALL INTEGER EQUAL, GETHDR, EQLPTR LOGICAL*1 KEY(100) COMMON / CHELP / SIZE, NAME(40), BUF(400) INTEGER SIZE LOGICAL*1 NAME LOGICAL*1 BUF LOGICAL*1 SUMMAR(2) LOGICAL*1 ALL(2) DATA SUMMAR(1)/37/,SUMMAR(2)/0/ DATA ALL(1)/63/,ALL(2)/0/ IF(.NOT.(EQUAL(KEY, SUMMAR) .EQ. 1 .OR. EQUAL(KEY, ALL) .EQ. 1))GO *TO 23258 DOALL = 1 GOTO 23259 23258 CONTINUE DOALL = 0 23259 CONTINUE J = 1 I=1 23260 IF(.NOT.(EQLPTR(PTRARA(I), 0) .EQ. 0))GOTO 23262 CALL SEEK(PTRARA(I), UNIT) JUNK = GETHDR(UNIT, BUF, NAME, SIZE) IF(.NOT.(DOALL .EQ. 1 .OR. EQUAL(NAME, KEY) .EQ. 1))GOTO 23263 CALL CPYPTR(PTRARA(I), OUTARA(J)) J = J + 1 23263 CONTINUE IF(.NOT.(J .GT. 1 .AND. DOALL .EQ. 0))GOTO 23265 GOTO 23262 23265 CONTINUE 23261 I=I+1 GOTO 23260 23262 CONTINUE CALL CPYPTR(0, OUTARA(J)) IF(.NOT.(J .GT. 1))GOTO 23267 MRKHLP = 0 GOTO 23268 23267 CONTINUE MRKHLP = -3 23268 CONTINUE RETURN END INTEGER FUNCTION MSGCMD(C) LOGICAL*1 C INTEGER DOANSW, DOBACK, DOCURR, DODELE, DOEXIT, DOFORW, DOINFO, DO *GOTO, DOHEAD, DOJUMP, DOLIST, DOMOVE, DONEXT, DOOVER, DOPUT, DOQUI *T, DOREAD, DOSNDM, DOTYPE, DOUNDE, DOWRIT, DONEWS, DOHELP, DOINTR COMMON / CMLINE / LINARA(40) INTEGER LINARA LOGICAL*1 ESTR(40) DATA ESTR(1)/32/,ESTR(2)/63/,ESTR(3)/32/,ESTR(4)/78/,ESTR(5)/111/, *ESTR(6)/32/,ESTR(7)/115/,ESTR(8)/117/,ESTR(9)/99/,ESTR(10)/104/,ES *TR(11)/32/,ESTR(12)/99/,ESTR(13)/111/,ESTR(14)/109/,ESTR(15)/109/, *ESTR(16)/97/,ESTR(17)/110/,ESTR(18)/100/,ESTR(19)/46/,ESTR(20)/32/ *,ESTR(21)/91/,ESTR(22)/84/,ESTR(23)/121/,ESTR(24)/112/,ESTR(25)/10 *1/,ESTR(26)/32/,ESTR(27)/39/,ESTR(28)/63/,ESTR(29)/39/,ESTR(30)/32 */,ESTR(31)/102/,ESTR(32)/111/,ESTR(33)/114/,ESTR(34)/32/,ESTR(35)/ *104/,ESTR(36)/101/,ESTR(37)/108/,ESTR(38)/112/,ESTR(39)/93/,ESTR(4 *0)/0/ IF(.NOT.(C .EQ. 97))GOTO 23269 MSGCMD = DOANSW(C) GOTO 23270 23269 CONTINUE IF(.NOT.(C .EQ. 98))GOTO 23271 MSGCMD = DOBACK(LINARA) GOTO 23272 23271 CONTINUE IF(.NOT.(C .EQ. 99))GOTO 23273 MSGCMD = DOCURR(C) GOTO 23274 23273 CONTINUE IF(.NOT.(C .EQ. 100))GOTO 23275 MSGCMD = DODELE(LINARA) GOTO 23276 23275 CONTINUE IF(.NOT.(C .EQ. 101))GOTO 23277 MSGCMD = DOEXIT(LINARA) GOTO 23278 23277 CONTINUE IF(.NOT.(C .EQ. 102))GOTO 23279 MSGCMD = DOFORW(C) GOTO 23280 23279 CONTINUE IF(.NOT.(C .EQ. 103))GOTO 23281 MSGCMD = DOGOTO(C) GOTO 23282 23281 CONTINUE IF(.NOT.(C .EQ. 104))GOTO 23283 MSGCMD = DOHEAD(LINARA) GOTO 23284 23283 CONTINUE IF(.NOT.(C .EQ. 105))GOTO 23285 MSGCMD = DOINFO(X) GOTO 23286 23285 CONTINUE IF(.NOT.(C .EQ. 106))GOTO 23287 MSGCMD = DOJUMP(C) GOTO 23288 23287 CONTINUE IF(.NOT.(C .EQ. 108))GOTO 23289 MSGCMD = DOLIST(LINARA) GOTO 23290 23289 CONTINUE IF(.NOT.(C .EQ. 109))GOTO 23291 MSGCMD = DOMOVE(LINARA) GOTO 23292 23291 CONTINUE IF(.NOT.(C .EQ. 110))GOTO 23293 MSGCMD = DONEXT(LINARA) GOTO 23294 23293 CONTINUE IF(.NOT.(C .EQ. 111))GOTO 23295 MSGCMD = DOOVER(LINARA) GOTO 23296 23295 CONTINUE IF(.NOT.(C .EQ. 112))GOTO 23297 MSGCMD = DOPUT(LINARA) GOTO 23298 23297 CONTINUE IF(.NOT.(C .EQ. 113))GOTO 23299 MSGCMD = DOQUIT(C) GOTO 23300 23299 CONTINUE IF(.NOT.(C .EQ. 114))GOTO 23301 MSGCMD = DOREAD(LINARA) GOTO 23302 23301 CONTINUE IF(.NOT.(C .EQ. 115))GOTO 23303 MSGCMD = DOSNDM(C) GOTO 23304 23303 CONTINUE IF(.NOT.(C .EQ. 116))GOTO 23305 MSGCMD = DOTYPE(LINARA) GOTO 23306 23305 CONTINUE IF(.NOT.(C .EQ. 117))GOTO 23307 MSGCMD = DOUNDE(LINARA) GOTO 23308 23307 CONTINUE IF(.NOT.(C .EQ. 119))GOTO 23309 MSGCMD = DOWRIT(LINARA) GOTO 23310 23309 CONTINUE IF(.NOT.(C .EQ. 35))GOTO 23311 MSGCMD = DONEWS(C) GOTO 23312 23311 CONTINUE IF(.NOT.(C .EQ. 63))GOTO 23313 MSGCMD = DOHELP(C) GOTO 23314 23313 CONTINUE IF(.NOT.(C .EQ. 37))GOTO 23315 MSGCMD = DOINTR(C) GOTO 23316 23315 CONTINUE CALL MPUTCH(C, 2) CALL PTMLIN(ESTR, 2) MSGCMD = -3 23316 CONTINUE 23314 CONTINUE 23312 CONTINUE 23310 CONTINUE 23308 CONTINUE 23306 CONTINUE 23304 CONTINUE 23302 CONTINUE 23300 CONTINUE 23298 CONTINUE 23296 CONTINUE 23294 CONTINUE 23292 CONTINUE 23290 CONTINUE 23288 CONTINUE 23286 CONTINUE 23284 CONTINUE 23282 CONTINUE 23280 CONTINUE 23278 CONTINUE 23276 CONTINUE 23274 CONTINUE 23272 CONTINUE 23270 CONTINUE RETURN END SUBROUTINE MSGEND COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT CALL MPUTCH(10, 2) CALL CLOSE(UNIT) CALL REMOVE(SCRAT) CALL R4EXIT(0) RETURN END SUBROUTINE MSGINT LOGICAL*1 CLOWER INTEGER GETPAT, I, OPEN, GETARG, READMF, J, CTOI, PAD REAL JDATE COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / CRLF / CRLF(10) LOGICAL*1 CRLF COMMON / CMHELP / HLPINT, HLPPTR(30), HLPSCR(30) INTEGER HLPINT INTEGER*4 HLPPTR INTEGER*4 HLPSCR COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL COMMON / CMLINE / LINARA(40) INTEGER LINARA LOGICAL*1 MYMAIL(7) LOGICAL*1 MSG(4) LOGICAL*1 FROMS(7) LOGICAL*1 SUBJS(10) LOGICAL*1 DATES(7) LOGICAL*1 PATRNS(29) LOGICAL*1 BLNK(2) DATA MYMAIL(1)/109/,MYMAIL(2)/121/,MYMAIL(3)/109/,MYMAIL(4)/97/,MY *MAIL(5)/105/,MYMAIL(6)/108/,MYMAIL(7)/0/ DATA MSG(1)/109/,MSG(2)/115/,MSG(3)/103/,MSG(4)/0/ DATA FROMS(1)/37/,FROMS(2)/102/,FROMS(3)/114/,FROMS(4)/111/,FROMS( *5)/109/,FROMS(6)/58/,FROMS(7)/0/ DATA SUBJS(1)/37/,SUBJS(2)/115/,SUBJS(3)/117/,SUBJS(4)/98/,SUBJS(5 *)/106/,SUBJS(6)/101/,SUBJS(7)/99/,SUBJS(8)/116/,SUBJS(9)/58/,SUBJS *(10)/0/ DATA DATES(1)/37/,DATES(2)/100/,DATES(3)/97/,DATES(4)/116/,DATES(5 *)/101/,DATES(6)/58/,DATES(7)/0/ DATA PATRNS(1)/69/,PATRNS(2)/114/,PATRNS(3)/114/,PATRNS(4)/111/,PA *TRNS(5)/114/,PATRNS(6)/32/,PATRNS(7)/105/,PATRNS(8)/110/,PATRNS(9) */32/,PATRNS(10)/103/,PATRNS(11)/101/,PATRNS(12)/110/,PATRNS(13)/10 *1/,PATRNS(14)/114/,PATRNS(15)/97/,PATRNS(16)/116/,PATRNS(17)/105/, *PATRNS(18)/110/,PATRNS(19)/103/,PATRNS(20)/32/,PATRNS(21)/112/,PAT *RNS(22)/97/,PATRNS(23)/116/,PATRNS(24)/116/,PATRNS(25)/101/,PATRNS *(26)/114/,PATRNS(27)/110/,PATRNS(28)/46/,PATRNS(29)/0/ DATA BLNK(1)/32/,BLNK(2)/0/ IF(.NOT.(RAWIN .EQ. 1 .AND. RAWOUT .EQ. 1))GOTO 23317 PAGESZ = 22 GOTO 23318 23317 CONTINUE PAGESZ = -1 23318 CONTINUE HDRPAT(1) = 1 HDRPAT(2) = 1 HDRPAT(3) = 10 HDRPAT(4) = 0 CALL INIMSH CALL GDATE(SCRFIL) CALL CONCAT(SCRFIL, BLNK, SCRFIL) CALL GTIME(BUF) CALL CONCAT(SCRFIL, BUF, SCRFIL) TDATE = JDATE(SCRFIL) IF(.NOT.(GETPAT(FROMS, FROMPT) .EQ. -3))GOTO 23319 CALL ERROR(PATRNS) 23319 CONTINUE IF(.NOT.(GETPAT(SUBJS, SUBJPT) .EQ. -3))GOTO 23321 CALL ERROR(PATRNS) 23321 CONTINUE IF(.NOT.(GETPAT(DATES, DATEPT) .EQ. -3))GOTO 23323 CALL ERROR(PATRNS) 23323 CONTINUE CALL MAILID(SCRAT, HOME) CALL SCRATF(MSG, SCRAT) UNIT = -3 CALL CONCAT(HOME, MYMAIL, SCRFIL) DEFALT = 1 PAD = 5 I=1 23325 IF(.NOT.(GETARG(I, BUF, 40) .NE. -1))GOTO 23327 IF(.NOT.(BUF(1) .EQ. 63))GOTO 23328 CALL ERROR(33Husage: msg [-fn] [-p[n]] [file].) GOTO 23329 23328 CONTINUE IF(.NOT.(BUF(1) .EQ. 45))GOTO 23330 I23332=(CLOWER(BUF(2))) GOTO 23332 23334 CONTINUE J = 3 PAD = CTOI(BUF, J) PAD = MIN0(PAD, 7) PAD = MAX0(PAD, 0) GOTO 23333 23335 CONTINUE IF(.NOT.(RAWIN .EQ. 1 .AND. RAWOUT .EQ. 1))GOTO 23336 J = 3 PAGESZ = CTOI(BUF, J) IF(.NOT.(PAGESZ .LE. 0))GOTO 23338 PAGESZ = -1 23338 CONTINUE 23336 CONTINUE GOTO 23333 23340 CONTINUE GOTO 23333 23332 CONTINUE IF(I23332.EQ.102)GOTO 23334 IF(I23332.EQ.112)GOTO 23335 GOTO 23340 23333 CONTINUE GOTO 23331 23330 CONTINUE CALL SCOPY(BUF, 1, SCRFIL, 1) DEFALT = 0 23331 CONTINUE 23329 CONTINUE 23326 I=I+1 GOTO 23325 23327 CONTINUE CRLF(1) = 13 CRLF(2) = 10 J = 3 CALL PCHAR(128, PAD, CRLF, J) CRLF(J) = 0 CALL BANNER IF(.NOT.(READMF(SCRFIL, 0, 1, LINARA) .EQ. -3))GOTO 23341 CALL ERROR(25HError opening input file.) 23341 CONTINUE CALL CLOSE(3) RETURN END INTEGER FUNCTION MSGSEQ(LINARA) INTEGER LINARA(40), I, J, VALUE INTEGER GETPAT, MATCH, LENGTH, DOSEQU LOGICAL*1 GETCH, CLOWER, GETRLN, TYPE, GSEQNO LOGICAL*1 C, TEXT(40), PAT(40), TRMARA(4) COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE LOGICAL*1 MSGSTR(21) LOGICAL*1 ALLSTR(13) LOGICAL*1 FRMSTR(14) LOGICAL*1 SUBST(17) LOGICAL*1 DELSTR(17) LOGICAL*1 UNDSTR(3) LOGICAL*1 SEQERR(29) DATA MSGSTR(1)/32/,MSGSTR(2)/40/,MSGSTR(3)/109/,MSGSTR(4)/101/,MSG *STR(5)/115/,MSGSTR(6)/115/,MSGSTR(7)/97/,MSGSTR(8)/103/,MSGSTR(9)/ *101/,MSGSTR(10)/32/,MSGSTR(11)/115/,MSGSTR(12)/101/,MSGSTR(13)/113 */,MSGSTR(14)/117/,MSGSTR(15)/101/,MSGSTR(16)/110/,MSGSTR(17)/99/,M *SGSTR(18)/101/,MSGSTR(19)/41/,MSGSTR(20)/32/,MSGSTR(21)/0/ DATA ALLSTR(1)/97/,ALLSTR(2)/108/,ALLSTR(3)/108/,ALLSTR(4)/32/,ALL *STR(5)/109/,ALLSTR(6)/101/,ALLSTR(7)/115/,ALLSTR(8)/115/,ALLSTR(9) */97/,ALLSTR(10)/103/,ALLSTR(11)/101/,ALLSTR(12)/115/,ALLSTR(13)/0/ DATA FRMSTR(1)/102/,FRMSTR(2)/114/,FRMSTR(3)/111/,FRMSTR(4)/109/,F *RMSTR(5)/32/,FRMSTR(6)/115/,FRMSTR(7)/116/,FRMSTR(8)/114/,FRMSTR(9 *)/105/,FRMSTR(10)/110/,FRMSTR(11)/103/,FRMSTR(12)/58/,FRMSTR(13)/3 *2/,FRMSTR(14)/0/ DATA SUBST(1)/115/,SUBST(2)/117/,SUBST(3)/98/,SUBST(4)/106/,SUBST( *5)/101/,SUBST(6)/99/,SUBST(7)/116/,SUBST(8)/32/,SUBST(9)/115/,SUBS *T(10)/116/,SUBST(11)/114/,SUBST(12)/105/,SUBST(13)/110/,SUBST(14)/ *103/,SUBST(15)/58/,SUBST(16)/32/,SUBST(17)/0/ DATA DELSTR(1)/100/,DELSTR(2)/101/,DELSTR(3)/108/,DELSTR(4)/101/,D *ELSTR(5)/116/,DELSTR(6)/101/,DELSTR(7)/100/,DELSTR(8)/32/,DELSTR(9 *)/109/,DELSTR(10)/101/,DELSTR(11)/115/,DELSTR(12)/115/,DELSTR(13)/ *97/,DELSTR(14)/103/,DELSTR(15)/101/,DELSTR(16)/115/,DELSTR(17)/0/ DATA UNDSTR(1)/117/,UNDSTR(2)/110/,UNDSTR(3)/0/ DATA SEQERR(1)/32/,SEQERR(2)/63/,SEQERR(3)/32/,SEQERR(4)/73/,SEQER *R(5)/110/,SEQERR(6)/118/,SEQERR(7)/97/,SEQERR(8)/108/,SEQERR(9)/10 *5/,SEQERR(10)/100/,SEQERR(11)/32/,SEQERR(12)/109/,SEQERR(13)/101/, *SEQERR(14)/115/,SEQERR(15)/115/,SEQERR(16)/97/,SEQERR(17)/103/,SEQ *ERR(18)/101/,SEQERR(19)/32/,SEQERR(20)/115/,SEQERR(21)/101/,SEQERR *(22)/113/,SEQERR(23)/117/,SEQERR(24)/101/,SEQERR(25)/110/,SEQERR(2 *6)/99/,SEQERR(27)/101/,SEQERR(28)/33/,SEQERR(29)/0/ DATA TRMARA/13, 10, 27, 0/ 23343 CONTINUE CALL PTMLIN(MSGSTR, 2) C = CLOWER(GETCH(C, 1)) IF(.NOT.(C .EQ. 63))GOTO 23346 J = DOSEQU(C) 23346 CONTINUE 23344 IF(.NOT.(C .NE. 63))GOTO 23343 23345 CONTINUE IF(.NOT.(C .EQ. 102))GOTO 23348 CALL PTMLIN(FRMSTR, 2) C = GETRLN(TEXT, 1, 1, 2, TRMARA) CALL FOLD(TEXT) J = 1 IF(.NOT.(GETPAT(TEXT, PAT) .NE. -3 .AND. LENGTH(TEXT) .GT. 0))GOTO * 23350 I=1 23352 IF(.NOT.(I .LE. NMSGS))GOTO 23354 IF(.NOT.(MATCH(HFROM(1,I), PAT) .EQ. 1))GOTO 23355 LINARA(J) = I J = J + 1 23355 CONTINUE 23353 I=I+1 GOTO 23352 23354 CONTINUE LINARA(J) = 0 MSGSEQ = 0 GOTO 23351 23350 CONTINUE MSGSEQ = -3 23351 CONTINUE GOTO 23349 23348 CONTINUE IF(.NOT.(C .EQ. 115))GOTO 23357 CALL PTMLIN(SUBST, 2) C = GETRLN(TEXT, 1, 1, 2, TRMARA) CALL FOLD(TEXT) J = 1 IF(.NOT.(GETPAT(TEXT, PAT) .NE. -3 .AND. LENGTH(TEXT) .GT. 0))GOTO * 23359 I=1 23361 IF(.NOT.(I .LE. NMSGS))GOTO 23363 IF(.NOT.(MATCH(HSUBJ(1,I), PAT) .EQ. 1))GOTO 23364 LINARA(J) = I J = J + 1 23364 CONTINUE 23362 I=I+1 GOTO 23361 23363 CONTINUE LINARA(J) = 0 MSGSEQ = 0 GOTO 23360 23359 CONTINUE MSGSEQ = -3 23360 CONTINUE GOTO 23358 23357 CONTINUE IF(.NOT.(C .EQ. 97))GOTO 23366 CALL PTMLIN(ALLSTR, 2) I=1 23368 IF(.NOT.(I .LE. NMSGS))GOTO 23370 LINARA(I) = I 23369 I=I+1 GOTO 23368 23370 CONTINUE LINARA(I) = 0 MSGSEQ = 0 GOTO 23367 23366 CONTINUE IF(.NOT.(C .EQ. 100 .OR. C .EQ. 117))GOTO 23371 IF(.NOT.(C .EQ. 100))GOTO 23373 VALUE = 1 GOTO 23374 23373 CONTINUE VALUE = 0 CALL PTMLIN(UNDSTR, 2) 23374 CONTINUE CALL PTMLIN(DELSTR, 2) J = 1 I=1 23375 IF(.NOT.(I .LE. NMSGS))GOTO 23377 IF(.NOT.(HDELE(I) .EQ. VALUE))GOTO 23378 LINARA(J) = I J = J + 1 23378 CONTINUE 23376 I=I+1 GOTO 23375 23377 CONTINUE LINARA(J) = 0 GOTO 23372 23371 CONTINUE IF(.NOT.(C .EQ. 13 .OR. C .EQ. 10))GOTO 23380 LINARA(1) = CURMSG LINARA(2) = 0 MSGSEQ = 0 GOTO 23381 23380 CONTINUE IF(.NOT.(TYPE(C) .EQ. 2))GOTO 23382 IF(.NOT.(GSEQNO(C, LINARA) .EQ. -3))GOTO 23384 MSGSEQ = -3 GOTO 23385 23384 CONTINUE MSGSEQ = 0 23385 CONTINUE GOTO 23383 23382 CONTINUE MSGSEQ = -3 23383 CONTINUE 23381 CONTINUE 23372 CONTINUE 23367 CONTINUE 23358 CONTINUE 23349 CONTINUE IF(.NOT.(MSGSEQ .EQ. -3))GOTO 23386 CALL PTMLIN(SEQERR, 2) 23386 CONTINUE RETURN END SUBROUTINE NOTIMP LOGICAL*1 IMPSTR(16) DATA IMPSTR(1)/32/,IMPSTR(2)/32/,IMPSTR(3)/85/,IMPSTR(4)/78/,IMPST *R(5)/73/,IMPSTR(6)/77/,IMPSTR(7)/80/,IMPSTR(8)/76/,IMPSTR(9)/69/,I *MPSTR(10)/77/,IMPSTR(11)/69/,IMPSTR(12)/78/,IMPSTR(13)/84/,IMPSTR( *14)/69/,IMPSTR(15)/68/,IMPSTR(16)/0/ CALL PTMLIN(IMPSTR, 2) RETURN END SUBROUTINE ONEMSG(N) INTEGER N, LINARA(2) COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 MSGHDR(27) DATA MSGHDR(1)/32/,MSGHDR(2)/40/,MSGHDR(3)/109/,MSGHDR(4)/101/,MSG *HDR(5)/115/,MSGHDR(6)/115/,MSGHDR(7)/97/,MSGHDR(8)/103/,MSGHDR(9)/ *101/,MSGHDR(10)/32/,MSGHDR(11)/35/,MSGHDR(12)/44/,MSGHDR(13)/32/,M *SGHDR(14)/42/,MSGHDR(15)/32/,MSGHDR(16)/99/,MSGHDR(17)/104/,MSGHDR *(18)/97/,MSGHDR(19)/114/,MSGHDR(20)/97/,MSGHDR(21)/99/,MSGHDR(22)/ *116/,MSGHDR(23)/101/,MSGHDR(24)/114/,MSGHDR(25)/115/,MSGHDR(26)/41 */,MSGHDR(27)/0/ DATA LINARA(2) /0/ LINARA(1) = N MSGHDR(1) = 10 CALL PUTMF(MSGHDR, LINARA, 2, PAGESZ) RETURN END SUBROUTINE PCHAR(C, N, LIN, J) LOGICAL*1 C, LIN(100) INTEGER N, I, J I=1 23388 IF(.NOT.(I .LE. N))GOTO 23390 LIN(J) = C J = J + 1 23389 I=I+1 GOTO 23388 23390 CONTINUE RETURN END SUBROUTINE PTMLIN(LIN, INT) LOGICAL*1 LIN(100), BUF(200) INTEGER INT COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / CRLF / CRLF(10) LOGICAL*1 CRLF IF(.NOT.(INT .EQ. 2 .AND. RAWOUT .EQ. 1))GOTO 23391 CALL SBST(LIN, 10, BUF, CRLF) CALL PUTLIN(BUF, INT) GOTO 23392 23391 CONTINUE CALL PUTLIN(LIN, INT) 23392 CONTINUE RETURN END SUBROUTINE PUTHDR(N, INT) INTEGER N, INT, M, ITOC, LENGTH, I LOGICAL*1 TEMP(10), BUF(100) COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT IF(.NOT.(N .GE. 1 .AND. N .LE. NMSGS))GOTO 23393 I = 1 M = 4 - ITOC(N, TEMP, 10) CALL PCHAR(32, M, BUF, I) CALL STCOPY(TEMP, 1, BUF, I) IF(.NOT.(HDELE(N) .EQ. 1))GOTO 23395 CALL CHCOPY(42, BUF, I) GOTO 23396 23395 CONTINUE CALL CHCOPY(32, BUF, I) 23396 CONTINUE M = 6 - ITOC(HSIZE(N), TEMP, 10) CALL PCHAR(32, M, BUF, I) CALL STCOPY(TEMP, 1, BUF, I) CALL CHCOPY(32, BUF, I) M = 14 - LENGTH(HDATE(1,N)) CALL STCOPY(HDATE(1,N), 1, BUF, I) CALL PCHAR(32, M, BUF, I) M = 20 - LENGTH(HFROM(1,N)) CALL STCOPY(HFROM(1,N), 1, BUF, I) CALL PCHAR(32, M, BUF, I) CALL STCOPY(HSUBJ(1,N), 1, BUF, I) CALL CHCOPY(10, BUF, I) BUF(I) = 0 CALL PTMLIN(BUF, INT) 23393 CONTINUE RETURN END SUBROUTINE PUTHLP(UNIT, OUTARA, KEY, OUT, PUTOUT) INTEGER*4 OUTARA(100) INTEGER UNIT, OUT, I, DOSUMM, JUNK INTEGER GETHDR, GETLIN, EQUAL, EQLPTR LOGICAL*1 KEY(100) EXTERNAL PUTOUT COMMON / CHELP / SIZE, NAME(40), BUF(400) INTEGER SIZE LOGICAL*1 NAME LOGICAL*1 BUF LOGICAL*1 SUMMAR(2) DATA SUMMAR(1)/37/,SUMMAR(2)/0/ DOSUMM = EQUAL(KEY, SUMMAR) I=1 23397 IF(.NOT.(EQLPTR(OUTARA(I), 0) .EQ. 0))GOTO 23399 CALL SEEK(OUTARA(I), UNIT) JUNK = GETHDR(UNIT, BUF, NAME, SIZE) IF(.NOT.(DOSUMM .EQ. 1))GOTO 23400 JUNK = GETLIN(BUF, UNIT) CALL PUTOUT(BUF, OUT) GOTO 23401 23400 CONTINUE SIZE = SIZE - GETLIN(BUF, UNIT) JUNK = GETLIN(BUF, UNIT) 23402 IF(.NOT.(SIZE .GT. 0))GOTO 23404 CALL PUTOUT(BUF, OUT) SIZE = SIZE - JUNK 23403 JUNK = GETLIN(BUF, UNIT) GOTO 23402 23404 CONTINUE 23401 CONTINUE 23398 I=I+1 GOTO 23397 23399 CONTINUE RETURN END SUBROUTINE PUTMF(HDRSTR, LINARA, INT, PAGE) LOGICAL*1 HDRSTR(100), TEMP(75) INTEGER LINARA(40), INT, I, N, JUNK, PAGE INTEGER ITOC, LENGTH, GTCONT COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE LOGICAL*1 CONSTR(30) DATA CONSTR(1)/91/,CONSTR(2)/116/,CONSTR(3)/121/,CONSTR(4)/112/,CO *NSTR(5)/101/,CONSTR(6)/32/,CONSTR(7)/83/,CONSTR(8)/80/,CONSTR(9)/6 *5/,CONSTR(10)/67/,CONSTR(11)/69/,CONSTR(12)/32/,CONSTR(13)/102/,CO *NSTR(14)/111/,CONSTR(15)/114/,CONSTR(16)/32/,CONSTR(17)/110/,CONST *R(18)/101/,CONSTR(19)/120/,CONSTR(20)/116/,CONSTR(21)/32/,CONSTR(2 *2)/109/,CONSTR(23)/101/,CONSTR(24)/115/,CONSTR(25)/115/,CONSTR(26) */97/,CONSTR(27)/103/,CONSTR(28)/101/,CONSTR(29)/93/,CONSTR(30)/0/ I=1 23405 IF(.NOT.(I .LT. 40 .AND. LINARA(I) .NE. 0))GOTO 23407 IF(.NOT.(I .GT. 1 .AND. PAGE .GT. 0))GOTO 23408 IF(.NOT.(GTCONT(CONSTR) .EQ. 0))GOTO 23410 GOTO 23407 23410 CONTINUE 23408 CONTINUE N = LINARA(I) JUNK = ITOC(N, SCRFIL, 10) CALL SBST(HDRSTR, 35, TEMP, SCRFIL) JUNK = ITOC(HSIZE(N), SCRFIL, 10) CALL SBST(TEMP, 42, BUF, SCRFIL) CALL PTMLIN(BUF, INT) JUNK = LENGTH(BUF) IF(.NOT.(BUF(JUNK) .NE. 10))GOTO 23412 CALL MPUTCH(10, INT) 23412 CONTINUE CALL PUTMSG(N, INT, PAGE) 23406 I=I+1 GOTO 23405 23407 CONTINUE RETURN END SUBROUTINE PUTMSG(N, INT, PAGE) INTEGER N, INT, I, M, J, PAGE INTEGER GETLIN, GTCONT COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL IF(.NOT.(N .GE. 1 .AND. N .LE. NMSGS))GOTO 23414 CALL SEEK(HADDR(N), UNIT) I = GETLIN(BUF, UNIT) J = 0 M=GETLIN(BUF,UNIT) 23416 IF(.NOT.(I .LT. HSIZE(N)))GOTO 23418 IF(.NOT.(PAGE .GT. 0 .AND. J .GE. PAGE))GOTO 23419 IF(.NOT.(GTCONT(0) .EQ. 0))GOTO 23421 GOTO 23418 23421 CONTINUE J = 0 23422 CONTINUE 23419 CONTINUE CALL PTMLIN(BUF, INT) J = J + 1 I = I + M 23417 M=GETLIN(BUF,UNIT) GOTO 23416 23418 CONTINUE 23414 CONTINUE RETURN END INTEGER FUNCTION READMF(TFILE, IFNOT, IFLIST, LINARA) LOGICAL*1 TFILE(100) INTEGER OPEN, CREATE INTEGER IFNOT, IN, IFLIST, I, LINARA(40) COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT LOGICAL*1 REDSTR(11) DATA REDSTR(1)/114/,REDSTR(2)/101/,REDSTR(3)/97/,REDSTR(4)/100/,RE *DSTR(5)/105/,REDSTR(6)/110/,REDSTR(7)/103/,REDSTR(8)/46/,REDSTR(9) */46/,REDSTR(10)/46/,REDSTR(11)/0/ IF(.NOT.(UNIT .NE. -3))GOTO 23423 CALL CLOSE(UNIT) 23423 CONTINUE IN = OPEN(TFILE, 1) IF(.NOT.(IN .EQ. -3))GOTO 23425 READMF = -3 RETURN 23425 CONTINUE UNIT = CREATE(SCRAT, 3) IF(.NOT.(UNIT .NE. -3))GOTO 23427 CALL SCOPY(TFILE, 1, FILE, 1) IF(.NOT.(IFNOT .EQ. 1))GOTO 23429 CALL PTMLIN(REDSTR, 2) 23429 CONTINUE CALL GTHPTR(IN) CURMSG = MIN0(1, NMSGS) IF(.NOT.(IFLIST .EQ. 1))GOTO 23431 I=1 23433 IF(.NOT.(I .LE. NMSGS))GOTO 23435 LINARA(I) = I 23434 I=I+1 GOTO 23433 23435 CONTINUE LINARA(I) = 0 CALL HEADMF(10, LINARA, 2, PAGESZ) 23431 CONTINUE 23427 CONTINUE CALL CLOSE(IN) READMF = UNIT RETURN END INTEGER FUNCTION SAVEMF(LINARA) INTEGER LINARA(40), I, ACCESS, MMSGS INTEGER CREATE, MFSAVE, READMF COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, TDATE, HOME(40), FILE(40), SCRAT(40), HDRPAT(4), FROMPT(20), SUB *JPT(20), DATEPT(20) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 FROMPT LOGICAL*1 SUBJPT LOGICAL*1 DATEPT COMMON / CHDRS / HSIZE(40), HADDR(40), RDATE(40), HDATE(12, 40), H *FROM(20, 40), HSUBJ(30, 40), HDELE(40) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE COMMON / MSGSCR / BUF(400), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL LOGICAL*1 MBOX(5) LOGICAL*1 MYMAIL(7) DATA MBOX(1)/109/,MBOX(2)/98/,MBOX(3)/111/,MBOX(4)/120/,MBOX(5)/0/ DATA MYMAIL(1)/109/,MYMAIL(2)/121/,MYMAIL(3)/109/,MYMAIL(4)/97/,MY *MAIL(5)/105/,MYMAIL(6)/108/,MYMAIL(7)/0/ IF(.NOT.(DEFALT .EQ. 1))GOTO 23436 CALL CONCAT(HOME, MBOX, FILE) ACCESS = 4 GOTO 23437 23436 CONTINUE ACCESS = 2 23437 CONTINUE IF(.NOT.(MFSAVE(FILE, ACCESS, LINARA, 1) .EQ. -3))GOTO 23438 SAVEMF = -3 GOTO 23439 23438 CONTINUE IF(.NOT.(DEFALT .EQ. 1))GOTO 23440 MMSGS = NMSGS CALL CONCAT(HOME, MYMAIL, SCRFIL) IF(.NOT.(READMF(SCRFIL, 0, 0, LINARA) .EQ. -3))GOTO 23442 SAVEMF = -3 GOTO 23443 23442 CONTINUE I=1 23444 IF(.NOT.(I .LE. MMSGS))GOTO 23446 HDELE(I) = 1 23445 I=I+1 GOTO 23444 23446 CONTINUE SAVEMF = MFSAVE(SCRFIL, 2, LINARA, 0) 23443 CONTINUE CALL CONCAT(HOME, MBOX, FILE) DEFALT = 0 GOTO 23441 23440 CONTINUE SAVEMF = 0 23441 CONTINUE 23439 CONTINUE RETURN END SUBROUTINE SBST (IN,CHAR,OUT,SUBARA) LOGICAL*1 IN(100), CHAR, OUT(100), SUBARA(100) INTEGER I, J J = 1 I=1 23447 IF(.NOT.(IN(I) .NE. 0))GOTO 23449 IF(.NOT.(IN(I) .EQ. CHAR))GOTO 23450 CALL STCOPY(SUBARA, 1, OUT, J) GOTO 23451 23450 CONTINUE CALL CHCOPY(IN(I), OUT, J) 23451 CONTINUE 23448 I=I+1 GOTO 23447 23449 CONTINUE OUT(J) = 0 RETURN END SUBROUTINE CPYPTR(IN, OUT) INTEGER IN(2), OUT(2) OUT(1) = IN(1) IF(.NOT.(IN(1) .NE. 0))GOTO 23452 OUT(2) = IN(2) 23452 CONTINUE RETURN END INTEGER FUNCTION EQLPTR(PTR1, PTR2) INTEGER PTR1(2), PTR2(2) EQLPTR = 0 IF(.NOT.(PTR1(1) .EQ. PTR2(1)))GOTO 23454 IF(.NOT.(PTR1(1) .EQ. 0))GOTO 23456 EQLPTR = 1 GOTO 23457 23456 CONTINUE IF(.NOT.(PTR1(2) .EQ. PTR2(2)))GOTO 23458 EQLPTR = 1 23458 CONTINUE 23457 CONTINUE 23454 CONTINUE RETURN END INTEGER FUNCTION SPWNIT(BUF) LOGICAL*1 BUF(100), IMAGE(40), PATH(80) INTEGER I, JUNK INTEGER GETWRD, LOCCOM, SSPAWN I = 1 JUNK = GETWRD(BUF, I, IMAGE) CALL IMPATH(PATH) JUNK = LOCCOM(IMAGE, PATH, IMAGE) CALL MPUTCH(10, 2) SPWNIT = SSPAWN(IMAGE, BUF, PATH, 119) RETURN END INTEGER FUNCTION DOSEQU(X) LOGICAL*1 X INTEGER MRKHLP COMMON / CMHELP / HLPINT, HLPPTR(30), HLPSCR(30) INTEGER HLPINT INTEGER*4 HLPPTR INTEGER*4 HLPSCR EXTERNAL PTMLIN LOGICAL*1 INTSTR(31) LOGICAL*1 SEQU(5) LOGICAL*1 ERRMSG(52) DATA INTSTR(1)/63/,INTSTR(2)/32/,INTSTR(3)/109/,INTSTR(4)/97/,INTS *TR(5)/121/,INTSTR(6)/32/,INTSTR(7)/98/,INTSTR(8)/101/,INTSTR(9)/32 */,INTSTR(10)/97/,INTSTR(11)/110/,INTSTR(12)/121/,INTSTR(13)/32/,IN *TSTR(14)/111/,INTSTR(15)/102/,INTSTR(16)/32/,INTSTR(17)/116/,INTST *R(18)/104/,INTSTR(19)/101/,INTSTR(20)/32/,INTSTR(21)/102/,INTSTR(2 *2)/111/,INTSTR(23)/108/,INTSTR(24)/108/,INTSTR(25)/111/,INTSTR(26) */119/,INTSTR(27)/105/,INTSTR(28)/110/,INTSTR(29)/103/,INTSTR(30)/5 *8/,INTSTR(31)/0/ DATA SEQU(1)/115/,SEQU(2)/101/,SEQU(3)/113/,SEQU(4)/117/,SEQU(5)/0 */ DATA ERRMSG(1)/63/,ERRMSG(2)/32/,ERRMSG(3)/83/,ERRMSG(4)/111/,ERRM *SG(5)/114/,ERRMSG(6)/114/,ERRMSG(7)/121/,ERRMSG(8)/44/,ERRMSG(9)/3 *2/,ERRMSG(10)/110/,ERRMSG(11)/111/,ERRMSG(12)/32/,ERRMSG(13)/104/, *ERRMSG(14)/101/,ERRMSG(15)/108/,ERRMSG(16)/112/,ERRMSG(17)/32/,ERR *MSG(18)/97/,ERRMSG(19)/118/,ERRMSG(20)/97/,ERRMSG(21)/105/,ERRMSG( *22)/108/,ERRMSG(23)/97/,ERRMSG(24)/98/,ERRMSG(25)/108/,ERRMSG(26)/ *101/,ERRMSG(27)/59/,ERRMSG(28)/32/,ERRMSG(29)/99/,ERRMSG(30)/111/, *ERRMSG(31)/110/,ERRMSG(32)/115/,ERRMSG(33)/117/,ERRMSG(34)/108/,ER *RMSG(35)/116/,ERRMSG(36)/32/,ERRMSG(37)/116/,ERRMSG(38)/104/,ERRMS *G(39)/101/,ERRMSG(40)/32/,ERRMSG(41)/77/,ERRMSG(42)/83/,ERRMSG(43) */71/,ERRMSG(44)/32/,ERRMSG(45)/112/,ERRMSG(46)/114/,ERRMSG(47)/105 */,ERRMSG(48)/109/,ERRMSG(49)/101/,ERRMSG(50)/114/,ERRMSG(51)/46/,E *RRMSG(52)/0/ CALL PTMLIN(INTSTR, 2) IF(.NOT.(MRKHLP(HLPINT, HLPPTR, SEQU, HLPSCR) .EQ. -3))GOTO 23460 CALL PTMLIN(ERRMSG, 2) DOSEQU = -3 GOTO 23461 23460 CONTINUE CALL MPUTCH(10, 2) CALL PUTHLP(HLPINT, HLPSCR, SEQU, 2, PTMLIN) DOSEQU = 0 23461 CONTINUE RETURN END INTEGER FUNCTION DOINTR(X) LOGICAL*1 X INTEGER MRKHLP COMMON / CMHELP / HLPINT, HLPPTR(30), HLPSCR(30) INTEGER HLPINT INTEGER*4 HLPPTR INTEGER*4 HLPSCR EXTERNAL PTMLIN LOGICAL*1 INTSTR(22) LOGICAL*1 INTR(5) LOGICAL*1 ERRMSG(60) DATA INTSTR(1)/37/,INTSTR(2)/32/,INTSTR(3)/73/,INTSTR(4)/110/,INTS *TR(5)/116/,INTSTR(6)/114/,INTSTR(7)/111/,INTSTR(8)/100/,INTSTR(9)/ *117/,INTSTR(10)/99/,INTSTR(11)/116/,INTSTR(12)/105/,INTSTR(13)/111 */,INTSTR(14)/110/,INTSTR(15)/32/,INTSTR(16)/116/,INTSTR(17)/111/,I *NTSTR(18)/32/,INTSTR(19)/77/,INTSTR(20)/83/,INTSTR(21)/71/,INTSTR( *22)/0/ DATA INTR(1)/105/,INTR(2)/110/,INTR(3)/116/,INTR(4)/114/,INTR(5)/0 */ DATA ERRMSG(1)/63/,ERRMSG(2)/32/,ERRMSG(3)/83/,ERRMSG(4)/111/,ERRM *SG(5)/114/,ERRMSG(6)/114/,ERRMSG(7)/121/,ERRMSG(8)/44/,ERRMSG(9)/3 *2/,ERRMSG(10)/110/,ERRMSG(11)/111/,ERRMSG(12)/32/,ERRMSG(13)/105/, *ERRMSG(14)/110/,ERRMSG(15)/116/,ERRMSG(16)/114/,ERRMSG(17)/111/,ER *RMSG(18)/100/,ERRMSG(19)/117/,ERRMSG(20)/99/,ERRMSG(21)/116/,ERRMS *G(22)/105/,ERRMSG(23)/111/,ERRMSG(24)/110/,ERRMSG(25)/32/,ERRMSG(2 *6)/97/,ERRMSG(27)/118/,ERRMSG(28)/97/,ERRMSG(29)/105/,ERRMSG(30)/1 *08/,ERRMSG(31)/97/,ERRMSG(32)/98/,ERRMSG(33)/108/,ERRMSG(34)/101/, *ERRMSG(35)/59/,ERRMSG(36)/32/,ERRMSG(37)/99/,ERRMSG(38)/111/,ERRMS *G(39)/110/,ERRMSG(40)/115/,ERRMSG(41)/117/,ERRMSG(42)/108/,ERRMSG( *43)/116/,ERRMSG(44)/32/,ERRMSG(45)/116/,ERRMSG(46)/104/,ERRMSG(47) */101/,ERRMSG(48)/32/,ERRMSG(49)/77/,ERRMSG(50)/83/,ERRMSG(51)/71/, *ERRMSG(52)/32/,ERRMSG(53)/112/,ERRMSG(54)/114/,ERRMSG(55)/105/,ERR *MSG(56)/109/,ERRMSG(57)/101/,ERRMSG(58)/114/,ERRMSG(59)/46/,ERRMSG *(60)/0/ CALL PTMLIN(INTSTR, 2) IF(.NOT.(MRKHLP(HLPINT, HLPPTR, INTR, HLPSCR) .EQ. -3))GOTO 23462 CALL PTMLIN(ERRMSG, 2) DOINTR = -3 GOTO 23463 23462 CONTINUE CALL MPUTCH(10, 2) CALL PUTHLP(HLPINT, HLPSCR, INTR, 2, PTMLIN) DOINTR = 0 23463 CONTINUE RETURN END