SUBROUTINE MAIN INTEGER STMODE, STATUS, MSGCMD LOGICAL*1 C, CLOWER, GETCH COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT LOGICAL*1 PSTR(4) DATA PSTR(1)/60/,PSTR(2)/45/,PSTR(3)/32/,PSTR(4)/0/ CALL QUERY(33Husage: msg [-fn] [-p[n]] [file].) RAWIN = STMODE(1, 1) RAWOUT = STMODE(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 2301 *2 CALL PUTHLP(HLPINT, HLPSCR, BANNST, 2, PTMLIN) 23012 CONTINUE RETURN END SUBROUTINE CURFIL(INT) COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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(50), I, N COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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. 50 .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, JUNK INTEGER GMSGNO, CREATE, GETLIN, MATCH, INDEXC, REMOVE COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT COMMON / MSGSCR / BUF(512), 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 = INDEXC(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 JUNK = REMOVE(TFILE) DOANSW = 0 GOTO 23020 23019 CONTINUE DOANSW = -3 23020 CONTINUE 23018 CONTINUE RETURN END INTEGER FUNCTION DOBACK(LINARA) INTEGER LINARA(50) COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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(50) 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(50), 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, JUNK INTEGER GMSGNO, CREATE, SPWNIT, REMOVE COMMON / MSGSCR / BUF(512), 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 JUNK = 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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(50) INTEGER MSGSEQ COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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, PTREQ 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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 230 *46 CALL PTMLIN(ERRMSG, 2) DOHELP = -3 GOTO 23047 23046 CONTINUE CALL PTRCPY(0, HLPTMP(2)) CALL MPUTCH(10, 2) J = 0 I=1 23048 IF (.NOT.(PTREQ (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 PTRCPY(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(512), 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 230 *61 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 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 23063 CALL PTMLIN(ERRMSG, 2) DOINTR = -3 GOTO 23064 23063 CONTINUE CALL MPUTCH(10, 2) CALL PUTHLP(HLPINT, HLPSCR, INTR, 2, PTMLIN) DOINTR = 0 23064 CONTINUE RETURN END INTEGER FUNCTION DOJUMP(X) LOGICAL*1 X INTEGER GTCONF, SPWNIT INTEGER I COMMON / MSGSCR / BUF(512), 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 23065 CALL SCOPY(SH, 1, BUF, 1) IF (.NOT.(SPWNIT(BUF) .EQ. -3))GOTO 23067 CALL PTMLIN(SPNERR, 2) 23067 CONTINUE DOJUMP = 0 GOTO 23066 23065 CONTINUE DOJUMP = -3 23066 CONTINUE RETURN END INTEGER FUNCTION DOLIST(LINARA) INTEGER LINARA(50), INT INTEGER MSGSEQ, GETMF, CREATE COMMON / MSGSCR / BUF(512), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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 23069 DOLIST = -3 GOTO 23070 23069 CONTINUE CALL MPUTCH(10, 2) CALL PTMLIN(ONS, 2) IF (.NOT.(GETMF(SCRFIL) .LE. 0))GOTO 23071 DOLIST = -3 GOTO 23072 23071 CONTINUE INT = CREATE(SCRFIL, 2) IF (.NOT.(INT .NE. -3))GOTO 23073 CALL HEADMF(12, LINARA, INT, -1) LISPAT(1) = 12 CALL PUTMF(LISPAT, LINARA, INT, -1) CALL CLOSE(INT) DOLIST = 0 GOTO 23074 23073 CONTINUE DOLIST = -3 23074 CONTINUE 23072 CONTINUE IF (.NOT.(DOLIST .EQ. -3))GOTO 23075 CALL PTMLIN(ERRMSG, 2) CALL PTMLIN(SCRFIL, 2) 23075 CONTINUE 23070 CONTINUE RETURN END INTEGER FUNCTION DOMOVE(LINARA) INTEGER LINARA(50), INT INTEGER MSGSEQ, CREATE, GETMF COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT COMMON / MSGSCR / BUF(512), 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 23077 DOMOVE = -3 GOTO 23078 23077 CONTINUE CALL MPUTCH(10, 2) CALL PTMLIN(INTOS, 2) IF (.NOT.(GETMF(SCRFIL) .LE. 0))GOTO 23079 DOMOVE = -3 GOTO 23080 23079 CONTINUE INT = CREATE(SCRFIL, 4) IF (.NOT.(INT .NE. -3))GOTO 23081 CALL PUTMF(HDRPAT, LINARA, INT, -1) CALL CLOSE(INT) CALL DELEMF(LINARA) DOMOVE = 0 GOTO 23082 23081 CONTINUE DOMOVE = -3 23082 CONTINUE 23080 CONTINUE IF (.NOT.(DOMOVE .EQ. -3))GOTO 23083 CALL PTMLIN(ERRMSG, 2) CALL PTMLIN(SCRFIL, 2) 23083 CONTINUE 23078 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 23085 CALL PTMLIN(ERRMSG, 2) DONEWS = -3 GOTO 23086 23085 CONTINUE CALL MPUTCH(10, 2) CALL PUTHLP(HLPINT, HLPSCR, NEWS, 2, PTMLIN) DONEWS = 0 23086 CONTINUE RETURN END INTEGER FUNCTION DONEXT(LINARA) INTEGER LINARA(50) COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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 23087 CURMSG = CURMSG + 1 CALL ONEMSG(CURMSG) DONEXT = 0 GOTO 23088 23087 CONTINUE CALL PTMLIN(ERRMSG, 2) DONEXT = -3 23088 CONTINUE RETURN END INTEGER FUNCTION DOOVER(LINARA) INTEGER LINARA(100), STATUS INTEGER SAVEMF, READMF, GTCONF COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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 23089 DOOVER = -3 GOTO 23090 23089 CONTINUE IF (.NOT.(SAVEMF(LINARA) .EQ. -3))GOTO 23091 DOOVER = -3 GOTO 23092 23091 CONTINUE IF (.NOT.(READMF(FILE, 0, 1, LINARA) .EQ. -3))GOTO 23093 DOOVER = -3 GOTO 23094 23093 CONTINUE DOOVER = 0 23094 CONTINUE 23092 CONTINUE 23090 CONTINUE IF (.NOT.(DOOVER .EQ. -3))GOTO 23095 CALL PTMLIN(ERRMSG, 2) 23095 CONTINUE RETURN END INTEGER FUNCTION DOPUT(LINARA) INTEGER LINARA(50), INT INTEGER MSGSEQ, CREATE, GETMF COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT COMMON / MSGSCR / BUF(512), 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 23097 DOPUT = -3 GOTO 23098 23097 CONTINUE CALL MPUTCH(10, 2) CALL PTMLIN(INTOS, 2) IF (.NOT.(GETMF(SCRFIL) .LE. 0))GOTO 23099 DOPUT = -3 GOTO 23100 23099 CONTINUE INT = CREATE(SCRFIL, 4) IF (.NOT.(INT .NE. -3))GOTO 23101 CALL PUTMF(HDRPAT, LINARA, INT, -1) CALL CLOSE(INT) DOPUT = 0 GOTO 23102 23101 CONTINUE DOPUT = -3 23102 CONTINUE 23100 CONTINUE IF (.NOT.(DOPUT .EQ. -3))GOTO 23103 CALL PTMLIN(ERRMSG, 2) CALL PTMLIN(SCRFIL, 2) 23103 CONTINUE 23098 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 23105 DOQUIT = -1 GOTO 23106 23105 CONTINUE DOQUIT = -3 23106 CONTINUE RETURN END INTEGER FUNCTION DOREAD(LINARA) INTEGER LINARA(50) INTEGER READMF, GETMF COMMON / MSGSCR / BUF(512), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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 23107 DOREAD = -3 GOTO 23108 23107 CONTINUE IF (.NOT.(READMF(SCRFIL, 1, 1, LINARA) .EQ. -3))GOTO 23109 DOREAD = -3 GOTO 23110 23109 CONTINUE DEFALT = 0 DOREAD = 0 23110 CONTINUE 23108 CONTINUE 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 23111 CALL PTMLIN(ERRMSG, 2) DOSEQU = -3 GOTO 23112 23111 CONTINUE CALL MPUTCH(10, 2) CALL PUTHLP(HLPINT, HLPSCR, SEQU, 2, PTMLIN) DOSEQU = 0 23112 CONTINUE RETURN END INTEGER FUNCTION DOSNDM(X) LOGICAL*1 X INTEGER GTCONF, SPWNIT INTEGER I COMMON / MSGSCR / BUF(512), 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 23113 CALL SCOPY(STR, 1, BUF, 1) IF (.NOT.(SPWNIT(BUF) .EQ. -3))GOTO 23115 CALL PTMLIN(SPNERR, 2) 23115 CONTINUE DOSNDM = 0 GOTO 23114 23113 CONTINUE DOSNDM = -3 23114 CONTINUE RETURN END INTEGER FUNCTION DOTYPE(LINARA) INTEGER LINARA(50), I INTEGER MSGSEQ COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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 23117 DOTYPE = -3 GOTO 23118 23117 CONTINUE CALL MPUTCH(10, 2) TYPHDR(1) = 10 CALL PUTMF(TYPHDR, LINARA, 2, PAGESZ) DOTYPE = 0 I=1 23119 IF (.NOT.(LINARA(I) .NE. 0))GOTO 23121 23120 I=I+1 GOTO 23119 23121 CONTINUE IF (.NOT.( I .GT. 1 ))GOTO 23122 CURMSG = LINARA(I-1) GOTO 23123 23122 CONTINUE CURMSG = 0 23123 CONTINUE 23118 CONTINUE RETURN END INTEGER FUNCTION DOUNDE(LINARA) INTEGER LINARA(50), I INTEGER MSGSEQ COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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 23124 DOUNDE = -3 GOTO 23125 23124 CONTINUE I=1 23126 IF (.NOT.(I .LT. 50 .AND. LINARA(I) .NE. 0))GOTO 23128 J = LINARA(I) HDELE(J) = 0 23127 I=I+1 GOTO 23126 23128 CONTINUE DOUNDE = 0 23125 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 23129 IF (.NOT.(BUF(J) .NE. 10 .AND. BUF(J) .NE. 0 .AND. K .LT. LIMIT))G *OTO 23131 ARRAY(K) = BUF(J) J = J + 1 23130 K=K+1 GOTO 23129 23131 CONTINUE ARRAY(K) = 0 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 23132 FILE(1) = 0 23132 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 INDEXC 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 23134 CONTINUE C = GETCH(C, IN) IF (.NOT.(INDEXC(TRMARA, C) .GT. 0))GOTO 23137 GOTO 23136 23137 CONTINUE IF (.NOT.(C .EQ. 8 .OR. C .EQ. 127))GOTO 23139 IF (.NOT.(I .GT. START))GOTO 23141 CALL PUTLIN(BSBLBS, OUT) I = I - 1 GOTO 23142 23141 CONTINUE C = 127 GOTO 23136 23142 CONTINUE GOTO 23140 23139 CONTINUE IF (.NOT.(C .EQ. 21))GOTO 23143 23145 IF (.NOT.(I .GT. START))GOTO 23147 CALL PUTLIN(BSBLBS, OUT) 23146 I = I - 1 GOTO 23145 23147 CONTINUE GOTO 23144 23143 CONTINUE IF (.NOT.(C .EQ. 18 .AND. I .GT. START))GOTO 23148 CALL PUTLIN(NOTSTR, OUT) BUF(I) = 0 CALL PUTLIN(BUF, OUT) GOTO 23149 23148 CONTINUE BUF(I) = C I = I + 1 CALL PUTCH(C, OUT) 23149 CONTINUE 23144 CONTINUE 23140 CONTINUE 23135 GOTO 23134 23136 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT COMMON / MSGSCR / BUF(512), 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 23150 CALL PTMLIN(FIRST, 2) N = 1 GOTO 23151 23150 CONTINUE IF (.NOT.(C .EQ. 108))GOTO 23152 CALL PTMLIN(LAST, 2) N = NMSGS GOTO 23153 23152 CONTINUE IF (.NOT.(C .EQ. 13 .OR. C .EQ. 10))GOTO 23154 CALL PTMLIN(CURRNT, 2) N = CURMSG GOTO 23155 23154 CONTINUE IF (.NOT.(TYPE(C) .EQ. 2))GOTO 23156 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 23158 CALL PTMLIN(ERRMSG, 2) N = -3 23158 CONTINUE GOTO 23157 23156 CONTINUE IF (.NOT.(C .EQ. 27))GOTO 23160 N = -3 GOTO 23161 23160 CONTINUE CALL MPUTCH(C, 2) CALL PTMLIN(ERRMSG, 2) N = -3 23161 CONTINUE 23157 CONTINUE 23155 CONTINUE 23153 CONTINUE 23151 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(50), START, STOP, DIF, K, STATUS, CTR INTEGER CTOI, INDEXC, TYPE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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 23162 CONTINUE TEXT(1) = C CALL MPUTCH(C, 2) TRMN8R = GETRLN(TEXT, 2, 1, 2, TRMARA) IF (.NOT.(TRMN8R .EQ. 127))GOTO 23165 CALL PTMLIN(BSBLBS, 2) 23165 CONTINUE 23167 IF (.NOT.(TRMN8R .EQ. 127))GOTO 23168 TRMN8R = GETRLN(TEXT, 1, 1, 2, TRMARA) GOTO 23167 23168 CONTINUE IF (.NOT.(TRMN8R .EQ. 44))GOTO 23169 CALL MPUTCH(44, 2) GOTO 23170 23169 CONTINUE IF (.NOT.(TRMN8R .EQ. 24))GOTO 23171 CALL PTMLIN(CTRXST, 2) STATUS = -3 GOTO 23164 23171 CONTINUE 23170 CONTINUE I = 1 START = CTOI(TEXT, I) IF (.NOT.(START .LE. 0 .OR. START .GT. NMSGS))GOTO 23173 STATUS = -3 GOTO 23164 23173 CONTINUE CALL SKIPBL(TEXT, I) IF (.NOT.(TEXT(I) .EQ. 0))GOTO 23175 LINARA(J) = START J = J + 1 GOTO 23176 23175 CONTINUE IF (.NOT.(INDEXC(SEPR8R, TEXT(I)) .GT. 0))GOTO 23177 I = I + 1 STOP = CTOI(TEXT, I) IF (.NOT.(STOP .LE. 0 .OR. STOP .GT. NMSGS))GOTO 23179 STATUS = -3 GOTO 23164 23179 CONTINUE IF (.NOT.(STOP .GE. START))GOTO 23181 DIF = 1 GOTO 23182 23181 CONTINUE DIF = -1 23182 CONTINUE STOP = STOP + DIF K=START 23183 IF (.NOT.(K .NE. STOP))GOTO 23185 LINARA(J) = K J = J + 1 23184 K=K+DIF GOTO 23183 23185 CONTINUE GOTO 23178 23177 CONTINUE STATUS = -3 GOTO 23164 23178 CONTINUE 23176 CONTINUE IF (.NOT.(TRMN8R .EQ. 44))GOTO 23186 CTR = 1 C=GETCH(C,1) 23188 IF (.NOT.(INDEXC(SKPSTR,C) .GT. 0))GOTO 23190 IF (.NOT.(C .EQ. 8 .OR. C .EQ. 127))GOTO 23191 IF (.NOT.(CTR .GT. 1))GOTO 23193 CALL PTMLIN(BSBLBS, 2) CTR = CTR - 1 23193 CONTINUE GOTO 23192 23191 CONTINUE CALL MPUTCH(C, 2) IF (.NOT.(C .EQ. 13 .OR. C .EQ. 10))GOTO 23195 CTR = 1 GOTO 23196 23195 CONTINUE CTR = CTR + 1 23196 CONTINUE 23192 CONTINUE 23189 C=GETCH(C,1) GOTO 23188 23190 CONTINUE 23186 CONTINUE IF (.NOT.(TYPE(C) .NE. 2))GOTO 23197 STATUS = -3 GOTO 23164 23197 CONTINUE 23163 IF (.NOT.(TRMN8R .NE. 44))GOTO 23162 23164 CONTINUE IF (.NOT.(STATUS .EQ. -3))GOTO 23199 J = 1 23199 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 23201 CALL MPUTCH(C, 2) 23201 CONTINUE IF (.NOT.(C .EQ. 32))GOTO 23203 STATUS = 1 GOTO 23204 23203 CONTINUE STATUS = 0 23204 CONTINUE GTCONF = STATUS RETURN END INTEGER FUNCTION GTCONT(STRNG) INTEGER INDEXC 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 23205 CALL PTMLIN(STR, 2) GOTO 23206 23205 CONTINUE CALL PTMLIN(STRNG, 2) 23206 CONTINUE C = GETCH(C, 1) IF (.NOT.(INDEXC(CONSTR, C) .GT. 0))GOTO 23207 CALL MPUTCH(10, 2) GTCONT = 1 GOTO 23208 23207 CONTINUE GTCONT = 0 23208 CONTINUE RETURN END SUBROUTINE GTHPTR(IN) REAL JDATE INTEGER I, GETLIN, MATCH, EQUAL, N, J, INDEXC, IN INTEGER NOTE INTEGER JUNK INTEGER*4 TEMP COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT COMMON / MSGSCR / BUF(512), 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 23209 CONTINUE JUNK = NOTE( TEMP, IN) JUNK = NOTE( HADDR(I), UNIT) IF (.NOT.(GETLIN(BUF, IN) .EQ. -1))GOTO 23212 GOTO 23211 23212 CONTINUE CALL PUTLIN(BUF, UNIT) IF (.NOT.(EQUAL(BUF, HDRPAT) .EQ. 1))GOTO 23214 IF (.NOT.(I .GE. 50))GOTO 23216 CALL MPUTCH(10, 2) CALL PTMLIN(ERRSTR, 2) CALL MSGEND 23216 CONTINUE HFROM(1,I) = 0 HSUBJ(1,I) = 0 HDATE(1,I) = 0 RDATE(I) = 0. N=GETLIN(BUF,IN) 23218 IF (.NOT.(N .GT. 1 .AND. N .NE. -1))GOTO 23220 CALL FOLD(BUF) IF (.NOT.(MATCH(BUF, FROMPT) .EQ. 1))GOTO 23221 CALL GETFLD(BUF, 6, 20, HFROM(1,I)) GOTO 23222 23221 CONTINUE IF (.NOT.(MATCH(BUF, SUBJPT) .EQ. 1))GOTO 23223 CALL GETFLD(BUF, 9, 30, HSUBJ(1,I)) GOTO 23224 23223 CONTINUE IF (.NOT.(MATCH(BUF, DATEPT) .EQ. 1))GOTO 23225 CALL GETFLD(BUF, 6, 12, HDATE(1,I)) IF (.NOT.(INDEXC(HDATE(1,I), 45) .GT. 0))GOTO 23227 J = INDEXC(HDATE(1,I), 32) IF (.NOT.(J .GT. 0))GOTO 23229 HDATE(J,I) = 0 23229 CONTINUE 23227 CONTINUE RDATE(I) = JDATE(BUF(6)) 23225 CONTINUE 23224 CONTINUE 23222 CONTINUE 23219 N=GETLIN(BUF,IN) GOTO 23218 23220 CONTINUE CALL SEEK(TEMP, IN) N = GETLIN(BUF, IN) JUNK = NOTE( TEMP, IN) M=GETLIN(BUF,IN) 23231 IF (.NOT.(M .NE. -1))GOTO 23233 IF (.NOT.(EQUAL(BUF, HDRPAT) .EQ. 1))GOTO 23234 GOTO 23233 23234 CONTINUE N = N + M CALL PUTLIN(BUF, UNIT) 23235 CONTINUE JUNK = NOTE( TEMP, IN) 23232 M=GETLIN(BUF,IN) GOTO 23231 23233 CONTINUE HSIZE(I) = N CALL SEEK(TEMP, IN) HDELE(I) = 0 I = I + 1 23214 CONTINUE 23210 GOTO 23209 23211 CONTINUE NMSGS = I - 1 RETURN END SUBROUTINE HEADMF(CH, LINARA, INT, PAGE) LOGICAL*1 CH INTEGER LINARA(50), INT, I, PAGE, J INTEGER GTCONT IF (.NOT.(CH .NE. 0))GOTO 23236 CALL MPUTCH(CH, INT) 23236 CONTINUE J = 0 I=1 23238 IF (.NOT.(I .LT. 50 .AND. LINARA(I) .NE. 0))GOTO 23240 IF (.NOT.(PAGE .GT. 0 .AND. J .GE. PAGE))GOTO 23241 IF (.NOT.(GTCONT(0) .EQ. 0))GOTO 23243 GOTO 23240 23243 CONTINUE J = 0 23244 CONTINUE 23241 CONTINUE CALL PUTHDR(LINARA(I), INT) J = J + 1 23239 I=I+1 GOTO 23238 23240 CONTINUE RETURN END SUBROUTINE INIMSH INTEGER INIHLP COMMON / CMHELP / HLPINT, HLPPTR(30), HLPSCR(30) INTEGER HLPINT INTEGER*4 HLPPTR INTEGER*4 HLPSCR COMMON / MSGSCR / BUF(512), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL LOGICAL*1 ERRMSG(58) LOGICAL*1 MSGHLP(7) DATA ERRMSG(1)/63/,ERRMSG(2)/32/,ERRMSG(3)/69/,ERRMSG(4)/114/,ERRM *SG(5)/114/,ERRMSG(6)/111/,ERRMSG(7)/114/,ERRMSG(8)/58/,ERRMSG(9)/3 *2/,ERRMSG(10)/102/,ERRMSG(11)/105/,ERRMSG(12)/108/,ERRMSG(13)/101/ *,ERRMSG(14)/32/,ERRMSG(15)/96/,ERRMSG(16)/96/,ERRMSG(17)/126/,ERRM *SG(18)/109/,ERRMSG(19)/115/,ERRMSG(20)/103/,ERRMSG(21)/47/,ERRMSG( *22)/109/,ERRMSG(23)/115/,ERRMSG(24)/103/,ERRMSG(25)/104/,ERRMSG(26 *)/108/,ERRMSG(27)/112/,ERRMSG(28)/39/,ERRMSG(29)/39/,ERRMSG(30)/32 */,ERRMSG(31)/105/,ERRMSG(32)/115/,ERRMSG(33)/32/,ERRMSG(34)/109/,E *RRMSG(35)/105/,ERRMSG(36)/115/,ERRMSG(37)/115/,ERRMSG(38)/105/,ERR *MSG(39)/110/,ERRMSG(40)/103/,ERRMSG(41)/32/,ERRMSG(42)/111/,ERRMSG *(43)/114/,ERRMSG(44)/32/,ERRMSG(45)/105/,ERRMSG(46)/110/,ERRMSG(47 *)/97/,ERRMSG(48)/99/,ERRMSG(49)/99/,ERRMSG(50)/101/,ERRMSG(51)/115 */,ERRMSG(52)/115/,ERRMSG(53)/97/,ERRMSG(54)/98/,ERRMSG(55)/108/,ER *RMSG(56)/101/,ERRMSG(57)/46/,ERRMSG(58)/0/ 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) IF (.NOT.( INIHLP(SCRFIL, HLPPTR, 30, HLPINT) .EQ. -3 ))GOTO 23245 CALL ERROR(ERRMSG) 23245 CONTINUE 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(50), IFNOT, INT, J, I INTEGER CREATE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT COMMON / CRLF / CRLF(10) LOGICAL*1 CRLF IF (.NOT.(INT .EQ. 2 .AND. RAWOUT .NE. 0 .AND. (C .EQ. 13 .OR. C . *EQ. 10)))GOTO 23256 CALL PUTLIN(CRLF, INT) GOTO 23257 23256 CONTINUE CALL PUTCH(C, INT) 23257 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(50) 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 23258 MSGCMD = DOANSW(C) GOTO 23259 23258 CONTINUE IF (.NOT.(C .EQ. 98))GOTO 23260 MSGCMD = DOBACK(LINARA) GOTO 23261 23260 CONTINUE IF (.NOT.(C .EQ. 99))GOTO 23262 MSGCMD = DOCURR(C) GOTO 23263 23262 CONTINUE IF (.NOT.(C .EQ. 100))GOTO 23264 MSGCMD = DODELE(LINARA) GOTO 23265 23264 CONTINUE IF (.NOT.(C .EQ. 101))GOTO 23266 MSGCMD = DOEXIT(LINARA) GOTO 23267 23266 CONTINUE IF (.NOT.(C .EQ. 102))GOTO 23268 MSGCMD = DOFORW(C) GOTO 23269 23268 CONTINUE IF (.NOT.(C .EQ. 103))GOTO 23270 MSGCMD = DOGOTO(C) GOTO 23271 23270 CONTINUE IF (.NOT.(C .EQ. 104))GOTO 23272 MSGCMD = DOHEAD(LINARA) GOTO 23273 23272 CONTINUE IF (.NOT.(C .EQ. 105))GOTO 23274 MSGCMD = DOINFO(X) GOTO 23275 23274 CONTINUE IF (.NOT.(C .EQ. 106))GOTO 23276 MSGCMD = DOJUMP(C) GOTO 23277 23276 CONTINUE IF (.NOT.(C .EQ. 108))GOTO 23278 MSGCMD = DOLIST(LINARA) GOTO 23279 23278 CONTINUE IF (.NOT.(C .EQ. 109))GOTO 23280 MSGCMD = DOMOVE(LINARA) GOTO 23281 23280 CONTINUE IF (.NOT.(C .EQ. 110))GOTO 23282 MSGCMD = DONEXT(LINARA) GOTO 23283 23282 CONTINUE IF (.NOT.(C .EQ. 111))GOTO 23284 MSGCMD = DOOVER(LINARA) GOTO 23285 23284 CONTINUE IF (.NOT.(C .EQ. 112))GOTO 23286 MSGCMD = DOPUT(LINARA) GOTO 23287 23286 CONTINUE IF (.NOT.(C .EQ. 113))GOTO 23288 MSGCMD = DOQUIT(C) GOTO 23289 23288 CONTINUE IF (.NOT.(C .EQ. 114))GOTO 23290 MSGCMD = DOREAD(LINARA) GOTO 23291 23290 CONTINUE IF (.NOT.(C .EQ. 115))GOTO 23292 MSGCMD = DOSNDM(C) GOTO 23293 23292 CONTINUE IF (.NOT.(C .EQ. 116))GOTO 23294 MSGCMD = DOTYPE(LINARA) GOTO 23295 23294 CONTINUE IF (.NOT.(C .EQ. 117))GOTO 23296 MSGCMD = DOUNDE(LINARA) GOTO 23297 23296 CONTINUE IF (.NOT.(C .EQ. 119))GOTO 23298 MSGCMD = DOWRIT(LINARA) GOTO 23299 23298 CONTINUE IF (.NOT.(C .EQ. 35))GOTO 23300 MSGCMD = DONEWS(C) GOTO 23301 23300 CONTINUE IF (.NOT.(C .EQ. 63))GOTO 23302 MSGCMD = DOHELP(C) GOTO 23303 23302 CONTINUE IF (.NOT.(C .EQ. 37))GOTO 23304 MSGCMD = DOINTR(C) GOTO 23305 23304 CONTINUE CALL MPUTCH(C, 2) CALL PTMLIN(ESTR, 2) MSGCMD = -3 23305 CONTINUE 23303 CONTINUE 23301 CONTINUE 23299 CONTINUE 23297 CONTINUE 23295 CONTINUE 23293 CONTINUE 23291 CONTINUE 23289 CONTINUE 23287 CONTINUE 23285 CONTINUE 23283 CONTINUE 23281 CONTINUE 23279 CONTINUE 23277 CONTINUE 23275 CONTINUE 23273 CONTINUE 23271 CONTINUE 23269 CONTINUE 23267 CONTINUE 23265 CONTINUE 23263 CONTINUE 23261 CONTINUE 23259 CONTINUE RETURN END SUBROUTINE MSGEND INTEGER JUNK INTEGER REMOVE COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT CALL MPUTCH(10, 2) CALL CLOSE(UNIT) JUNK = REMOVE(SCRAT) CALL ENDST(0) RETURN END SUBROUTINE MSGINT LOGICAL*1 CLOWER LOGICAL*1 C INTEGER GETPAT, I, OPEN, GETARG, READMF, J, CTOI, PAD, NOW(7) REAL JDATE COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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(512), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL COMMON / CMLINE / LINARA(50) 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 .NE. 0 .AND. RAWOUT .NE. 0 ))GOTO 23306 PAGESZ = 22 GOTO 23307 23306 CONTINUE PAGESZ = -1 23307 CONTINUE HDRPAT(1) = 1 HDRPAT(2) = 1 HDRPAT(3) = 10 HDRPAT(4) = 0 CALL INIMSH CALL GETNOW(NOW) CALL FMTDAT(SCRFIL, BUF, NOW, 1) CALL CONCAT(SCRFIL, BLNK, SCRFIL) CALL CONCAT(SCRFIL, BUF, SCRFIL) TDATE = JDATE(SCRFIL) IF (.NOT.(GETPAT(FROMS, FROMPT) .EQ. -3))GOTO 23308 CALL ERROR(PATRNS) 23308 CONTINUE IF (.NOT.(GETPAT(SUBJS, SUBJPT) .EQ. -3))GOTO 23310 CALL ERROR(PATRNS) 23310 CONTINUE IF (.NOT.(GETPAT(DATES, DATEPT) .EQ. -3))GOTO 23312 CALL ERROR(PATRNS) 23312 CONTINUE CALL HOMDIR(HOME, 6) CALL SCRATF(MSG, SCRAT) UNIT = -3 CALL CONCAT(HOME, MYMAIL, SCRFIL) DEFALT = 1 PAD = 5 I=1 23314 IF (.NOT.(GETARG(I, BUF, 40) .NE. -1))GOTO 23316 IF (.NOT.(BUF(1) .EQ. 45))GOTO 23317 C = CLOWER(BUF(2)) IF (.NOT.(C .EQ. 102))GOTO 23319 J = 3 PAD = CTOI(BUF, J) PAD = MIN0(PAD, 7) PAD = MAX0(PAD, 0) GOTO 23320 23319 CONTINUE IF (.NOT.(C .EQ. 112))GOTO 23321 IF (.NOT.( RAWIN .NE. 0 .AND. RAWOUT .NE. 0 ))GOTO 23323 J = 3 PAGESZ = CTOI(BUF, J) IF (.NOT.(PAGESZ .LE. 0))GOTO 23325 PAGESZ = -1 23325 CONTINUE 23323 CONTINUE GOTO 23322 23321 CONTINUE CALL BADARG(BUF) 23322 CONTINUE 23320 CONTINUE GOTO 23318 23317 CONTINUE CALL STRCPY(BUF, SCRFIL) DEFALT = 0 23318 CONTINUE 23315 I=I+1 GOTO 23314 23316 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 23327 CALL PUTLIN(SCRFIL, 3) CALL REMARK(33H : cannot open. Use Read command.) 23327 CONTINUE RETURN END INTEGER FUNCTION MSGSEQ(LINARA) INTEGER LINARA(50), I, J, PAT(132), VALUE INTEGER GETPAT, MATCH, LENGTH, DOSEQU LOGICAL*1 GETCH, CLOWER, GETRLN, TYPE, GSEQNO LOGICAL*1 C, TEXT(40), TRMARA(4) COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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/ 23329 CONTINUE CALL PTMLIN(MSGSTR, 2) C = CLOWER(GETCH(C, 1)) IF (.NOT.(C .EQ. 63))GOTO 23332 J = DOSEQU(C) 23332 CONTINUE 23330 IF (.NOT.(C .NE. 63))GOTO 23329 23331 CONTINUE IF (.NOT.(C .EQ. 102))GOTO 23334 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))GOT *O 23336 I=1 23338 IF (.NOT.(I .LE. NMSGS))GOTO 23340 IF (.NOT.(MATCH(HFROM(1,I), PAT) .EQ. 1))GOTO 23341 LINARA(J) = I J = J + 1 23341 CONTINUE 23339 I=I+1 GOTO 23338 23340 CONTINUE LINARA(J) = 0 MSGSEQ = 0 GOTO 23337 23336 CONTINUE MSGSEQ = -3 23337 CONTINUE GOTO 23335 23334 CONTINUE IF (.NOT.(C .EQ. 115))GOTO 23343 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))GOT *O 23345 I=1 23347 IF (.NOT.(I .LE. NMSGS))GOTO 23349 IF (.NOT.(MATCH(HSUBJ(1,I), PAT) .EQ. 1))GOTO 23350 LINARA(J) = I J = J + 1 23350 CONTINUE 23348 I=I+1 GOTO 23347 23349 CONTINUE LINARA(J) = 0 MSGSEQ = 0 GOTO 23346 23345 CONTINUE MSGSEQ = -3 23346 CONTINUE GOTO 23344 23343 CONTINUE IF (.NOT.(C .EQ. 97))GOTO 23352 CALL PTMLIN(ALLSTR, 2) I=1 23354 IF (.NOT.(I .LE. NMSGS))GOTO 23356 LINARA(I) = I 23355 I=I+1 GOTO 23354 23356 CONTINUE LINARA(I) = 0 MSGSEQ = 0 GOTO 23353 23352 CONTINUE IF (.NOT.(C .EQ. 100 .OR. C .EQ. 117))GOTO 23357 IF (.NOT.(C .EQ. 100))GOTO 23359 VALUE = 1 GOTO 23360 23359 CONTINUE VALUE = 0 CALL PTMLIN(UNDSTR, 2) 23360 CONTINUE CALL PTMLIN(DELSTR, 2) J = 1 I=1 23361 IF (.NOT.(I .LE. NMSGS))GOTO 23363 IF (.NOT.(HDELE(I) .EQ. VALUE))GOTO 23364 LINARA(J) = I J = J + 1 23364 CONTINUE 23362 I=I+1 GOTO 23361 23363 CONTINUE LINARA(J) = 0 GOTO 23358 23357 CONTINUE IF (.NOT.(C .EQ. 13 .OR. C .EQ. 10))GOTO 23366 LINARA(1) = CURMSG LINARA(2) = 0 MSGSEQ = 0 GOTO 23367 23366 CONTINUE IF (.NOT.(TYPE(C) .EQ. 2))GOTO 23368 IF (.NOT.(GSEQNO(C, LINARA) .EQ. -3))GOTO 23370 MSGSEQ = -3 GOTO 23371 23370 CONTINUE MSGSEQ = 0 23371 CONTINUE GOTO 23369 23368 CONTINUE MSGSEQ = -3 23369 CONTINUE 23367 CONTINUE 23358 CONTINUE 23353 CONTINUE 23344 CONTINUE 23335 CONTINUE IF (.NOT.(MSGSEQ .EQ. -3))GOTO 23372 CALL PTMLIN(SEQERR, 2) 23372 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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 23374 IF (.NOT.(I .LE. N))GOTO 23376 LIN(J) = C J = J + 1 23375 I=I+1 GOTO 23374 23376 CONTINUE RETURN END SUBROUTINE PTMLIN(LIN, INT) LOGICAL*1 LIN(100), BUF(200) INTEGER INT COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT COMMON / CRLF / CRLF(10) LOGICAL*1 CRLF IF (.NOT.(INT .EQ. 2 .AND. RAWOUT .NE. 0))GOTO 23377 CALL SBST(LIN, 10, BUF, CRLF) CALL PUTLIN(BUF, INT) GOTO 23378 23377 CONTINUE CALL PUTLIN(LIN, INT) 23378 CONTINUE RETURN END SUBROUTINE PUTHDR(N, INT) INTEGER N, INT, M, ITOC, LENGTH, I LOGICAL*1 TEMP(10), BUF(100) COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT IF (.NOT.(N .GE. 1 .AND. N .LE. NMSGS))GOTO 23379 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 23381 CALL CHCOPY(42, BUF, I) GOTO 23382 23381 CONTINUE CALL CHCOPY(32, BUF, I) 23382 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) 23379 CONTINUE RETURN END SUBROUTINE PUTMF(HDRSTR, LINARA, INT, PAGE) LOGICAL*1 HDRSTR(100), TEMP(75) INTEGER LINARA(50), INT, I, N, JUNK, PAGE INTEGER ITOC, LENGTH, GTCONT COMMON / MSGSCR / BUF(512), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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 23383 IF (.NOT.(I .LT. 50 .AND. LINARA(I) .NE. 0))GOTO 23385 IF (.NOT.(I .GT. 1 .AND. PAGE .GT. 0))GOTO 23386 IF (.NOT.(GTCONT(CONSTR) .EQ. 0))GOTO 23388 GOTO 23385 23388 CONTINUE 23386 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.( JUNK .EQ. 0 ))GOTO 23390 CALL MPUTCH( 10, INT) GOTO 23391 23390 CONTINUE IF (.NOT.( BUF(JUNK) .NE. 10 ))GOTO 23392 CALL MPUTCH(10, INT) 23392 CONTINUE 23391 CONTINUE CALL PUTMSG(N, INT, PAGE) 23384 I=I+1 GOTO 23383 23385 CONTINUE RETURN END SUBROUTINE PUTMSG(N, INT, PAGE) INTEGER N, INT, I, M, J, PAGE INTEGER GETLIN, GTCONT COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) 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 *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT COMMON / MSGSCR / BUF(512), SCRFIL(40) LOGICAL*1 BUF LOGICAL*1 SCRFIL IF (.NOT.(N .GE. 1 .AND. N .LE. NMSGS))GOTO 23394 CALL SEEK(HADDR(N), UNIT) I = GETLIN(BUF, UNIT) J = 0 M=GETLIN(BUF,UNIT) 23396 IF (.NOT.(I .LT. HSIZE(N)))GOTO 23398 IF (.NOT.(PAGE .GT. 0 .AND. J .GE. PAGE))GOTO 23399 IF (.NOT.(GTCONT(0) .EQ. 0))GOTO 23401 GOTO 23398 23401 CONTINUE J = 0 23402 CONTINUE 23399 CONTINUE CALL PTMLIN(BUF, INT) J = J + 1 I = I + M 23397 M=GETLIN(BUF,UNIT) GOTO 23396 23398 CONTINUE 23394 CONTINUE RETURN END INTEGER FUNCTION READMF(TFILE, IFNOT, IFLIST, LINARA) LOGICAL*1 TFILE(100) INTEGER OPEN, CREATE INTEGER IFNOT, IN, IFLIST, I, LINARA(50) COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT 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 23403 CALL CLOSE(UNIT) 23403 CONTINUE IN = OPEN(TFILE, 1) IF (.NOT.(IN .EQ. -3))GOTO 23405 READMF = -3 RETURN 23405 CONTINUE UNIT = CREATE(SCRAT, 3) IF (.NOT.(UNIT .NE. -3))GOTO 23407 CALL SCOPY(TFILE, 1, FILE, 1) IF (.NOT.(IFNOT .EQ. 1))GOTO 23409 CALL PTMLIN(REDSTR, 2) 23409 CONTINUE CALL GTHPTR(IN) CURMSG = MIN0(0, NMSGS) IF (.NOT.(IFLIST .EQ. 1))GOTO 23411 I=1 23413 IF (.NOT.(I .LE. NMSGS))GOTO 23415 LINARA(I) = I 23414 I=I+1 GOTO 23413 23415 CONTINUE LINARA(I) = 0 CALL HEADMF(10, LINARA, 2, PAGESZ) 23411 CONTINUE 23407 CONTINUE CALL CLOSE(IN) READMF = UNIT RETURN END INTEGER FUNCTION SAVEMF(LINARA) INTEGER LINARA(50), I, ACCESS, MMSGS INTEGER CREATE, MFSAVE, READMF COMMON / CMSG / NMSGS, CURMSG, UNIT, DEFALT, RAWIN, RAWOUT, PAGESZ *, FROMPT(20), SUBJPT(20), DATEPT(20), TDATE, HOME(40), FILE(40), S *CRAT(40), HDRPAT(4) INTEGER NMSGS INTEGER CURMSG INTEGER UNIT INTEGER DEFALT INTEGER RAWIN INTEGER RAWOUT INTEGER PAGESZ INTEGER FROMPT INTEGER SUBJPT INTEGER DATEPT REAL TDATE LOGICAL*1 HOME LOGICAL*1 FILE LOGICAL*1 SCRAT LOGICAL*1 HDRPAT COMMON / CHDRS / HSIZE(50), HADDR(50), RDATE(50), HDATE(12, 50), H *FROM(20, 50), HSUBJ(30, 50), HDELE(50) INTEGER HSIZE INTEGER*4 HADDR REAL RDATE LOGICAL*1 HDATE LOGICAL*1 HFROM LOGICAL*1 HSUBJ LOGICAL*1 HDELE COMMON / MSGSCR / BUF(512), 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 23416 CALL CONCAT(HOME, MBOX, FILE) ACCESS = 4 GOTO 23417 23416 CONTINUE ACCESS = 2 23417 CONTINUE IF (.NOT.(MFSAVE(FILE, ACCESS, LINARA, 1) .EQ. -3))GOTO 23418 SAVEMF = -3 GOTO 23419 23418 CONTINUE IF (.NOT.(DEFALT .EQ. 1))GOTO 23420 MMSGS = NMSGS CALL CONCAT(HOME, MYMAIL, SCRFIL) IF (.NOT.(READMF(SCRFIL, 0, 0, LINARA) .EQ. -3))GOTO 23422 SAVEMF = -3 GOTO 23423 23422 CONTINUE I=1 23424 IF (.NOT.(I .LE. MMSGS))GOTO 23426 HDELE(I) = 1 23425 I=I+1 GOTO 23424 23426 CONTINUE SAVEMF = MFSAVE(SCRFIL, 3, LINARA, 0) 23423 CONTINUE CALL CONCAT(HOME, MBOX, FILE) DEFALT = 0 GOTO 23421 23420 CONTINUE SAVEMF = 0 23421 CONTINUE 23419 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 23427 IF (.NOT.(IN(I) .NE. 0))GOTO 23429 IF (.NOT.(IN(I) .EQ. CHAR))GOTO 23430 CALL STCOPY(SUBARA, 1, OUT, J) GOTO 23431 23430 CONTINUE CALL CHCOPY(IN(I), OUT, J) 23431 CONTINUE 23428 I=I+1 GOTO 23427 23429 CONTINUE OUT(J) = 0 RETURN END INTEGER FUNCTION SPWNIT(BUF) LOGICAL*1 BUF(100), IMAGE(40), PATH(120), TEMP(40) INTEGER I, JUNK INTEGER GETWRD, LOCCOM, SSPAWN LOGICAL*1 SUFFIX(7) DATA SUFFIX(1)/46/,SUFFIX(2)/116/,SUFFIX(3)/115/,SUFFIX(4)/107/,SU *FFIX(5)/0/,SUFFIX(6)/10/,SUFFIX(7)/0/ I = 1 JUNK = GETWRD(BUF, I, TEMP) CALL IMPATH(PATH) JUNK = LOCCOM(TEMP, PATH, SUFFIX, IMAGE) CALL MPUTCH(10, 2) SPWNIT = SSPAWN(IMAGE, BUF, PATH, 119) RETURN END