EXTERNALROUTINE VIEWTELL(STRING (255)S) EXTERNALINTEGERFNSPEC C DCONNECT(STRING (6)USER, STRING (11)FILE, INTEGER FSYS, MODE, APF, C INTEGERNAME SEG, GAP) EXTERNALINTEGERFNSPEC C DDISCONNECT(STRING (6)USER, STRING (11)FILE, INTEGER FSYS,DSTRY) EXTERNALINTEGERFNSPEC C NWFILEAD(STRING (11)FILE, INTEGER PGS) SYSTEMROUTINESPEC C MOVE(INTEGER LEN, FROM, TO) RECORDFORMAT C UINFF (STRING (6) USER, STRING (31) JOBDOCFILE, C INTEGER MARK, FSYS, PROCNO, ISUFF, REASON, BATCHID, SESSICLIM, C SCIDENSAD, SCIDENS, STARTCNSL, AIOSTAT, SCT DATE, C SYNC1 DEST, SYNC2 DEST, ASYNC DEST, AACCT REC, AIC REVS, C STRING (15)JOBNAME, STRING (31)BASEFILE, INTEGER PREVIC, C INTEGER ITADDRO, ITADDR1, ITADDR2, ITADDR3, ITADDR4, C STREAM ID, DIDENT, SCARCITY, PREEMPTAT, STRING (11)SPOOLRFILE, C INTEGER FUNDS, SESSLEN, PRIORITY, TAPES, DISCS, UEND) EXTERNALROUTINESPEC VIEW(STRING (63) S) ROUTINESPEC GET LAST MSG(INTEGER B,INTEGERNAME PP) INTEGER A, J, SEG, GAP RECORD (UINFF) NAME UINF HALFINTEGER VSTART INTEGER BASE,PTR,LEN,NEWPTR,SUCCESS,WRAP,RSTART,TOP INTEGER ST,FI,DIFF,REST,LASTPTR STRING (4) VFINISH OWNINTEGER BELL=X'07' WRAP=0 SUCCESS=0 VSTART=M'!<' VFINISH=" !> " ST=ADDR(VSTART) FI=ADDR(VFINISH)+1 UINF == RECORD(9<<18) S = UINF_USER IF S = "" SEG = 0 GAP = 0 J = DCONNECT(S, "#MSG", -1, 11, 0, SEG, GAP) UNLESS 0 # J # 34 START A =NWFILEAD("T#OUT", 1) UNLESS A = 0 START MOVE(4096, SEG<<18, A) INTEGER(A+12) = 3; ! CH FILE PRINTSTRING("T#OUT WRITTEN") NEWLINE FINISH ELSE START PRINTSTRING("NWFILEAD FAILED") WRITE(A,1); NEWLINE FINISH BASE=NWFILEAD("SS#RETELL",2) IF BASE=0 THEN START PRINTSTRING("NWFILEAD FAILED ") WRITE(BASE,1); NEWLINE RETURN FINISH INTEGER(BASE+12)=3 NEWPTR=32 TOP=INTEGER(A+8) PTR=INTEGER(A+24) RSTART=PTR CYCLE LASTPTR=PTR GET LAST MSG(A,PTR) EXIT IF SUCCESS=1 MOVE(2,ST,BASE+NEWPTR) NEWPTR=NEWPTR+2 UNLESS WRAP=2 THEN START LEN=LASTPTR-PTR MOVE(LEN,A+PTR,BASE+NEWPTR) FINISH ELSE START DIFF=TOP-PTR MOVE(DIFF,A+PTR,BASE+NEWPTR) REST=LASTPTR-32 MOVE(REST,A+32,BASE+NEWPTR+DIFF) LEN=DIFF+REST FINISH MOVE(4,FI,BASE+NEWPTR+LEN) NEWPTR=NEWPTR+LEN+4 REPEAT IF SUCCESS=1 THEN START PRINTSTRING("SS#RETELL WRITTEN SUCCESSFULLY") NEWLINE INTEGER(BASE)=NEWPTR VIEW("SS#RETELL") FINISH J = DDISCONNECT(S, "#MSG", -1, 0) IF J = 0 FINISH PRINTSTRING("J =") AND WRITE(J, 1) IF 34 # J # 0 NEWLINE ROUTINE GET LAST MSG(INTEGER B,INTEGERNAME PP) INTEGER P,SAVE,X P=PP IF WRAP=2 THEN WRAP=1 CYCLE CYCLE P=P-1 IF P<=31 THEN P=TOP-1 AND WRAP=2 IF WRAP>0 AND P<RSTART THEN SUCCESS=1 AND RETURN REPEAT UNTIL BYTEINTEGER (B+P)='*' IF BYTEINTEGER (B+P-1)='*' THEN START P=P-1 PP=P IF BYTEINTEGER(B+P+8)#BELL THEN CONTINUE X=B+P+1 SAVE=BYTEINTEGER(X) BYTEINTEGER(X)=6 IF STRING(X)="MAILER" ORC STRING(X)="VOLUMS" ORC STRING(X)=S THEN START BYTEINTEGER(X)=SAVE LASTPTR=P IF WRAP=2 THEN WRAP=1 CONTINUE FINISH BYTEINTEGER(X)=SAVE EXIT FINISH REPEAT END END ENDOFFILE