*DECK NVFOPHC USETEXT TEXTNVF USETEXT TEXTSS USETEXT TXCMDNV USETEXT TXTAPSS PROC NVFOPHC; # TITLE NVFOPHC - PROCESS HISTORY COMMAND # BEGIN # NVFOPHC # # ** NVFOPHC - PERFORM HISTORY COMMAND. * * A. LIM. 82/04/07. * * THIS PROCEDURE-S MAIN FUNCTION IS TO PERFORM A HOP HISTORY * COMMAND. IT IS CALLED INTO EXECUTION BY: * *NVFODHC* *NVFOAPE* * * PROC NVFOPHC * * ENTRY HOP HISTORY COMMAND IN *WCBUF[1]*, *HDRCMD[1]*, AND * *PARMS[0]* WITH *WCBUF* DEFINED IN TEXTSS, AND * *HDRCMD* AND *PARMS* DEFINED IN TXCMDNV. * * EXIT TERMINAL-TEXT LINES SENT TO CONNECTION-TRAFFIC-QUEUE * *CTQ*. * * METHOD IF COMMAND IS "HISTORY,ALL", SEND THE ENTIRE HISTORY * BUFFER TEXT LINES TO *CTQ*. * IF COMMAND IS "HISTORY", SEND ONLY THE LAST PAGE OF * HISTORY BUFFER TO *CTQ* # # **** PROC NVFOPHC XREF LIST # XREF BEGIN PROC SSTAQE; # SS- ACCEPT A QUEUE ENTRY # END # **** # ITEM HPTR I; # HISTORY BUF PTR (PER CM WORD) # ITEM I I; # LOOP INDUCTION VAR # ITEM J I; # LOOP INDUCTION VAR # ITEM NLINES I; # LOOP EXIT VAR # # BLANKLN - A BLANK LINE. # ARRAY BLANKLN[00:00] S(1); BEGIN ITEM BLK$BLANK C(00,00,08) = [" "]; ITEM BLK$ZERO U(00,48,12) = [0]; END CONTROL EJECT; WCB$WORD[1] = 0; # CLEAR WC WORD 1 # ABHWORD[1] = 0; # CLEAR ABH WORD 1 # ABHABT[1] = HOPTX$; # PRESET ABT TO HOP TEXT # # * IF HISTORY BUFFER EMPTY, SEND A NULL TEXT WITH INPUT ALLOW FLAG * SET TO CONNECTION-TRAFFIC-QUEUE, AND QUIT. # IF HSBL EQ 0 THEN BEGIN # HISTORY BUFFER EMPTY, SEND A NULL TEXT TO CTQ # WCB$WC[1] = 2; WCB$IAF[1] = TRUE; # SET INPUT-ALLOW-FLAG # SSTAQE(P,WCBUF[1],ABHBUF[1],MSGBUF[0]); RETURN; # EXIT # END # DETERMINE IF "HISTORY,ALL" OR "HISTORY" COMMAND # IF HDR$SPCNT[1] GR 2 THEN BEGIN # "HISTORY,ALL", SEND HEADERS # WCB$WC[1] = SSBUILD$ + 2; # SEND NVF BUILD MSG # SBD$ANAME[0] = "NVF "; SSTAQE(P,WCBUF[1],ABHBUF[1],SBUILD[0]); WCB$WORD[1] = 0; # CLEAR WC WORD 1 # WCB$WC[1] = LCFVRN$ + 2; # SEND LCF VERSION MSG # SSTAQE(P,WCBUF[1],ABHBUF[1],LCFVRN[0]); WCB$WORD[1] = 0; WCB$WC[1] = 3; # SEND A BLANK LINE # SSTAQE(P,WCBUF[1],ABHBUF[1],BLANKLN[0]); HPTR = 0; # SET HIS-BUF PTR TO BEGINNING OF BUF # END ELSE BEGIN # "HISTORY" # IF HSBCNT LQ LEFTPL THEN HPTR = 0; # H-BUF CONTAINS ONLY 1 PAGE OR LESS LINES# ELSE BEGIN # MORE THAN 1 PAGE # NLINES = 0; FOR HPTR = HSBL-1 STEP -1 WHILE (NLINES LQ LEFTPL) DO BEGIN # SKIP BACKWARD LEFTPL LINES # IF HSB$ZERO[HPTR] EQ 0 THEN NLINES = NLINES + 1; # END OF A LINE # END HPTR = HPTR + 2; # ADJUST HPTR # END END J = 0; WCB$WORD[1] = 0; FOR I = HPTR STEP 1 WHILE I LS HSBL DO BEGIN # PROCESS ALL LINES IN H-BUF # MSG$WORD[J] = HSB$WORD[I]; # MOVE 1 WORD FR H-BUF TO M-BUF # J = J + 1; # INCREMENT INDEX # WCB$WC[1] = WCB$WC[1] + 1; # INCREMENT WC COUNT # IF HSB$ZERO[I] EQ 0 THEN BEGIN # END OF LINE # IF I EQ HSBL - 1 THEN BEGIN # LAST LINE # WCB$IAF[1] = TRUE; # SET IAF TRUE # END WCB$WC[1] = WCB$WC[1] + 2; # ADD WC AND ABH WORDS # SSTAQE(P,WCBUF[1],ABHBUF[1],MSGBUF[0]); # SEND TEXT # J = 0; # RESET INDEX # WCB$WORD[1] = 0; # CLEAR WC WORD # END END END # NVFOPHC # TERM