From:	CRDGW2::CRDGW2::MRGATE::"SMTP::CRVAX.SRI.COM::RELAY-INFO-VAX" 29-AUG-1989 15:08
To:	MRGATE::"ARISIA::EVERHART"
Subj:	SNAP part 3 of 8

Message-Id:  <8908291901.AA27507@crdgw1.ge.com>
Received: From KL.SRI.COM by CRVAX.SRI.COM with TCP; Tue, 29 AUG 89 11:18:40 PDT
Received: from drcvax.af.mil by KL.SRI.COM with TCP; Tue, 29 Aug 89 10:47:32 PDT
Date: 29 Aug 89 13:30:00 EST
From: "Daniel J. Graham" <graham@drcvax.af.mil>
Subject: SNAP part 3 of 8
To: "info-vax" <info-vax@kl.sri.com>

-+-+-+-+-+-+-+-+ START OF PART 3 -+-+-+-+-+-+-+-+
X`009INTEGER*4 PID,ISTATE,PID2,WSSIZE,ALTPID(MAX_PROCESSES),DIRIO,PAGEFLTS
X`009INTEGER*4 PRI,PRIB,CPUTIM,LOGINTIM(2),DAYS,HOURS,MINUTES,TEMP
X`009INTEGER*4 SECONDS,HUNDREDTHS,IDUIC,NEWPRIB,CHAN,CURTIM(2),BUFIO,
X`0091`009DIFTIM(2),PGFLQUOTA,WSQUO,WSEXT,PRCCNT,DFWSCNT
X
X`009STATUS = SYS$SETPRI(,,%VAL(5),)
X
X`009STATUS = SMG$CREATE_PASTEBOARD (PB_ID)
X`009STATUS = SMG$CREATE_VIRTUAL_KEYBOARD (KB_ID)
X
X`009OPT_ROW = 24
X`009OPT_COL = 80
X`009STATUS = SMG$CREATE_VIRTUAL_DISPLAY(OPT_ROW,OPT_COL,VD1_ID)
X`009OPT_ROW = 18
X`009OPT_COL = 78
X`009STATUS = SMG$CREATE_VIRTUAL_DISPLAY(OPT_ROW,OPT_COL,VD2_ID,
X`0091`009SMG$M_BORDER)
X
X`009TOP_LINE = 'Username     Process name    State Term    Mem  Image'
X`009STATUS = SMG$PUT_CHARS (VD1_ID,TOP_LINE,
X`0091`009%REF(2),%REF(3),,,)
X`009TOP_LINE = 'Again   Delete  Force   View    Stats   Cont    Modify  UAF
V     Exit    '
X`009STATUS = SMG$PUT_CHARS (VD1_ID,TOP_LINE,
X`0091`009%REF(24),%REF(1),,,)
X
X`009STATUS = SMG$PASTE_VIRTUAL_DISPLAY (
X`0091`009VD1_ID,PB_ID,%REF(1),%REF(1))
X`009STATUS = SMG$PASTE_VIRTUAL_DISPLAY (
X`0091`009VD2_ID,PB_ID,%REF(4),%REF(2))
X
X`009HELP_LINE(1) = '                        +------+------+------+------+'
X`009HELP_LINE(2) = '                        `124      `124 This `124Redraw`1
V24 Exit `124'
X`009HELP_LINE(3) = '                        `124      `124 Help `124Screen`1
V24Screen`124'
X`009HELP_LINE(4) = '                        +------+------+------+------+'
X`009HELP_LINE(5) = '                        `124Modify`124 UAF  `124Again/`1
V24Top of`124'
X`009HELP_LINE(6) = '                        `124 Proc `124 Info `124system`1
V24 List `124'
X`009HELP_LINE(7) = '                        +------+------+------+------+'
X`009HELP_LINE(8) = '                        `124 View `124 Proc `124 Show `1
V24End of`124'
X`009HELP_LINE(9) = '                        `124 Term `124Stats `124 Cont `1
V24 List `124'
X`009HELP_LINE(10) = '                        +------+------+------+------+'
X`009HELP_LINE(11) = '                        `124  Do  `124Delete`124Force `
V124      `124'
X`009HELP_LINE(12) = '                        `124Again `124Proc  `124  `094Y
V  `124Press `124'
X`009HELP_LINE(13) = '                        +------+------+------+ for  +'
X`009HELP_LINE(14) = '                        `124             `124      `124
Vaction`124'
X`009HELP_LINE(15) = '                        `124             `124      `124
V      `124'
X`009HELP_LINE(16) = '                        +-------------+------+------+'
X
X`009LOGICAL_LIST(1).BUFLEN = 8
X`009LOGICAL_LIST(1).ITMCOD = LNM$_STRING
X`009LOGICAL_LIST(1).BUFADR = %LOC(NODENAME)
X`009LOGICAL_LIST(1).RETADR = 0
X`009LOGICAL_LIST(2).END_LIST = 0
X`009UAI_LIST(1).BUFLEN = 20
X`009UAI_LIST(1).ITMCOD = UAI$_DEFDEV
X`009UAI_LIST(1).BUFADR = %LOC(DEFDEV)
X`009UAI_LIST(1).RETADR = 0
X`009UAI_LIST(2).BUFLEN = 20
X`009UAI_LIST(2).ITMCOD = UAI$_DEFDIR
X`009UAI_LIST(2).BUFADR = %LOC(DEFDIR)
X`009UAI_LIST(2).RETADR = 0
X`009UAI_LIST(3).BUFLEN = 4
X`009UAI_LIST(3).ITMCOD = UAI$_WSEXTENT
X`009UAI_LIST(3).BUFADR = %LOC(WSEXT)
X`009UAI_LIST(3).RETADR = 0
X`009UAI_LIST(4).BUFLEN = 4
X`009UAI_LIST(4).ITMCOD = UAI$_UIC
X`009UAI_LIST(4).BUFADR = %LOC(UAFUIC)
X`009UAI_LIST(4).RETADR = 0
X`009UAI_LIST(5).BUFLEN = 30
X`009UAI_LIST(5).ITMCOD = UAI$_OWNER
X`009UAI_LIST(5).BUFADR = %LOC(OWNER)
X`009UAI_LIST(5).RETADR = 0
X`009UAI_LIST(6).BUFLEN = 8
X`009UAI_LIST(6).ITMCOD = UAI$_LASTLOGIN_I
X`009UAI_LIST(6).BUFADR = %LOC(LASTLOGIN)
X`009UAI_LIST(6).RETADR = 0
X`009UAI_LIST(7).BUFLEN = 1
X`009UAI_LIST(7).ITMCOD = UAI$_PRI
X`009UAI_LIST(7).BUFADR = %LOC(UAFPRI)
X`009UAI_LIST(7).RETADR = 0
X`009UAI_LIST(8).BUFLEN = 4
X`009UAI_LIST(8).ITMCOD = UAI$_PGFLQUOTA
X`009UAI_LIST(8).BUFADR = %LOC(PGFLQUOTA)
X`009UAI_LIST(8).RETADR = 0
X`009UAI_LIST(9).BUFLEN = 4
X`009UAI_LIST(9).ITMCOD = UAI$_WSQUOTA
X`009UAI_LIST(9).BUFADR = %LOC(WSQUO)
X`009UAI_LIST(9).RETADR = 0
X`009UAI_LIST(10).BUFLEN = 4
X`009UAI_LIST(10).ITMCOD = UAI$_DFWSCNT
X`009UAI_LIST(10).BUFADR = %LOC(DFWSCNT)
X`009UAI_LIST(10).RETADR = 0
X`009UAI_LIST(11).BUFLEN = 2
X`009UAI_LIST(11).ITMCOD = UAI$_MAXJOBS
X`009UAI_LIST(11).BUFADR = %LOC(MAXJOBS)
X`009UAI_LIST(11).RETADR = 0
X`009UAI_LIST(12).BUFLEN = 4
X`009UAI_LIST(12).ITMCOD = UAI$_PRCCNT
X`009UAI_LIST(12).BUFADR = %LOC(PRCCNT)
X`009UAI_LIST(12).RETADR = 0
X`009UAI_LIST(13).BUFLEN = 2
X`009UAI_LIST(13).ITMCOD = UAI$_ENQLM
X`009UAI_LIST(13).BUFADR = %LOC(ENQLM)
X`009UAI_LIST(13).RETADR = 0
X`009UAI_LIST(14).BUFLEN = 2
X`009UAI_LIST(14).ITMCOD = UAI$_FILLM
X`009UAI_LIST(14).BUFADR = %LOC(FILLM)
X`009UAI_LIST(14).RETADR = 0
X`009UAI_LIST(15).BUFLEN = 4
X`009UAI_LIST(15).ITMCOD = UAI$_BYTLM
X`009UAI_LIST(15).BUFADR = %LOC(BYTLM)
X`009UAI_LIST(15).RETADR = 0
X`009UAI_LIST(16).BUFLEN = 34
X`009UAI_LIST(16).ITMCOD = UAI$_LGICMD
X`009UAI_LIST(16).BUFADR = %LOC(LGICMD)
X`009UAI_LIST(16).RETADR = 0
X`009UAI_LIST(17).END_LIST = 0
X
X`009DVI_LIST(1).BUFLEN = 8
X`009DVI_LIST(1).ITMCOD = DVI$_TT_PHYDEVNAM
X`009DVI_LIST(1).BUFADR = %LOC(PHY_TERM)
X`009DVI_LIST(1).RETADR = 0
X`009DVI_LIST(2).END_LIST = 0
X`009JPI_LIST(1).BUFLEN = 12
X`009JPI_LIST(1).ITMCOD = JPI$_USERNAME
X`009JPI_LIST(1).BUFADR = %LOC(USERNAME)
X`009JPI_LIST(1).RETADR = 0
X`009JPI_LIST(2).BUFLEN = 100
X`009JPI_LIST(2).ITMCOD = JPI$_IMAGNAME
X`009JPI_LIST(2).BUFADR = %LOC(IMAGE)
X`009JPI_LIST(2).RETADR = 0
X`009JPI_LIST(3).BUFLEN = 4
X`009JPI_LIST(3).ITMCOD = JPI$_PID
X`009JPI_LIST(3).BUFADR = %LOC(PID2)
X`009JPI_LIST(3).RETADR = 0
X`009JPI_LIST(4).BUFLEN = 15
X`009JPI_LIST(4).ITMCOD = JPI$_PRCNAM
X`009JPI_LIST(4).BUFADR = %LOC(PRCNAM)
X`009JPI_LIST(4).RETADR = 0
X`009JPI_LIST(5).BUFLEN = 4
X`009JPI_LIST(5).ITMCOD = JPI$_STATE
X`009JPI_LIST(5).BUFADR = %LOC(ISTATE)
X`009JPI_LIST(5).RETADR = 0
X`009JPI_LIST(6).BUFLEN = 7
X`009JPI_LIST(6).ITMCOD = JPI$_TERMINAL
X`009JPI_LIST(6).BUFADR = %LOC(TERMINAL)
X`009JPI_LIST(6).RETADR = 0
X`009JPI_LIST(7).BUFLEN = 4
X`009JPI_LIST(7).ITMCOD = JPI$_WSSIZE
X`009JPI_LIST(7).BUFADR = %LOC(WSSIZE)
X`009JPI_LIST(7).RETADR = 0
X`009JPI_LIST(8).BUFLEN = 8
X`009JPI_LIST(8).ITMCOD = JPI$_ACCOUNT
X`009JPI_LIST(8).BUFADR = %LOC(ACCOUNT)
X`009JPI_LIST(8).RETADR = 0
X`009JPI_LIST(9).BUFLEN = 4
X`009JPI_LIST(9).ITMCOD = JPI$_BUFIO
X`009JPI_LIST(9).BUFADR = %LOC(BUFIO)
X`009JPI_LIST(9).RETADR = 0
X`009JPI_LIST(10).BUFLEN = 4
X`009JPI_LIST(10).ITMCOD = JPI$_DIRIO
X`009JPI_LIST(10).BUFADR = %LOC(DIRIO)
X`009JPI_LIST(10).RETADR = 0
X`009JPI_LIST(11).BUFLEN = 4
X`009JPI_LIST(11).ITMCOD = JPI$_PAGEFLTS
X`009JPI_LIST(11).BUFADR = %LOC(PAGEFLTS)
X`009JPI_LIST(11).RETADR = 0
X`009JPI_LIST(12).BUFLEN = 4
X`009JPI_LIST(12).ITMCOD = JPI$_PRI
X`009JPI_LIST(12).BUFADR = %LOC(PRI)
X`009JPI_LIST(12).RETADR = 0
X`009JPI_LIST(13).BUFLEN = 4
X`009JPI_LIST(13).ITMCOD = JPI$_PRIB
X`009JPI_LIST(13).BUFADR = %LOC(PRIB)
X`009JPI_LIST(13).RETADR = 0
X`009JPI_LIST(14).BUFLEN = 4
X`009JPI_LIST(14).ITMCOD = JPI$_CPUTIM
X`009JPI_LIST(14).BUFADR = %LOC(CPUTIM)
X`009JPI_LIST(14).RETADR = 0
X`009JPI_LIST(15).BUFLEN = 8
X`009JPI_LIST(15).ITMCOD = JPI$_LOGINTIM
X`009JPI_LIST(15).BUFADR = %LOC(LOGINTIM)
X`009JPI_LIST(15).RETADR = 0
X`009JPI_LIST(16).BUFLEN = 4
X`009JPI_LIST(16).ITMCOD = JPI$_UIC
X`009JPI_LIST(16).BUFADR = %LOC(UIC)
X`009JPI_LIST(16).RETADR = 0
X`009JPI_LIST(17).BUFLEN = 4
X`009JPI_LIST(17).ITMCOD = JPI$_JOBTYPE
X`009JPI_LIST(17).BUFADR = %LOC(JOBTYPE)
X`009JPI_LIST(17).RETADR = 0
X`009JPI_LIST(18).END_LIST = 0
X
XC
XC IF THERE IS AN 'S' ON THE COMMMAND LINE, ALL SYSTEM PROCESSES WILL BE`032
XC DISPLAYED TOO.  (I KNOW, I KNOW, A SLOPPY WAY TO DO IT, BUT...)
XC
X`009CALL LIB$GET_FOREIGN(%DESCR(FLAG),)
X`009CALL LIB$DATE_TIME(TOD)
X`009STATUS = SYS$TRNLNM(,'LNM$SYSTEM','SYS$NODE',,LOGICAL_LIST)
X`009IF (STATUS) DECNET = 1
X`009STATUS = SMG$PUT_CHARS (VD1_ID,NODENAME,%REF(1),%REF(1),,,)
X
XC
XC -1 PID ALLOWS GATHERING OF ALL PROCESSES' INFORMATION
XC
X5`009CALL LIB$DATE_TIME(TOD)
X`009STATUS = SMG$PUT_CHARS (VD1_ID,TOD,%REF(1),%REF(10),,,)
X`009PROC_CNT = 0
X`009PID = -1
X`009ICOUNT = 1
X`009NULL = 0
X`009STATUS = SS$_NORMAL
X10`009DO WHILE (STATUS .EQ. SS$_NORMAL)
X`009    STATUS = SYS$GETJPIW(,PID,,JPI_LIST,,,)
X`009    IF (STATUS) PROC_CNT = PROC_CNT + 1
X`009    SUSFLAG = 0
X`009    OUTFLAG = 0
XC
XC DEAL WITH SUSPENDED PROCESSES, IF WE DON'T, LIST WILL END AT THE FIRST`032
XC SUSPENDED PROCESSES ENCOUNTERED.  SAME IS TRUE FOR OUTSWAPPED ONES.
XC
X`009    IF (STATUS .EQ. SS$_SUSPENDED) THEN
X`009`009STATUS = SS$_NORMAL
X`009`009SUSFLAG = 1
X`009    ENDIF
X`009    IF (ISTATE .EQ. SCH$C_LEFO .OR. ISTATE .EQ. SCH$C_HIBO .OR.`032
X`0091`009  ISTATE .EQ. SCH$C_COMO) THEN
X`009`009STATUS = SS$_NORMAL
X`009`009OUTFLAG = 1
X`009    ENDIF
X`009    IF (.NOT. STATUS) GOTO 10
X`009    IF (FLAG .EQ. 'S') GOTO 11
XC
XC YOU CAH CHANGE THIS TO SUIT YOUR NEEDS, WE HAD ORACLE AND A FEW SPACIEL`03
V2
XC USERNAMES BEGINNING WITH A ZERO.
XC
X`009    IF (USERNAME .EQ. 'SYSTEM' .OR. USERNAME .EQ. 'DECNET' .OR.`032
X`0091`009USERNAME .EQ. 'ORACLE' .OR. USERNAME .EQ. 'MRMANAGER'`032
X`0091`009.OR. USERNAME .EQ. 'FIELD' .OR. ICHAR(USERNAME(1:2))`032
X`0091`009.EQ. 0 .OR. USERNAME .EQ. 'MRNET' .OR. USERNAME .EQ.`032
X`0091`009'MBWATCH') GOTO 10
X11`009    IF (ISTATE .EQ. SCH$C_CUR) `009STATE = 'CUR  '
X`009    IF (ISTATE .EQ. SCH$C_LEF) `009STATE = 'LEF  '
X`009    IF (ISTATE .EQ. SCH$C_HIB) STATE = 'HIB  '
X`009    IF (ISTATE .EQ. SCH$C_COM) STATE = 'COM  '
X`009    IF (ISTATE .EQ. SCH$C_CEF) STATE = 'CEF  '
X`009    IF (ISTATE .EQ. SCH$C_COMO) STATE = 'COMO '
X`009    IF (ISTATE .EQ. SCH$C_COLPG) STATE = 'COLPG'
X`009    IF (ISTATE .EQ. SCH$C_FPG) STATE = 'FPG  '
X`009    IF (ISTATE .EQ. SCH$C_HIBO) STATE = 'HIBO '
X`009    IF (ISTATE .EQ. SCH$C_LEFO) STATE = 'LEFO '
X`009    IF (ISTATE .EQ. SCH$C_MWAIT) STATE = 'MWAIT'
X`009    IF (ISTATE .EQ. SCH$C_PFW) STATE = 'PFW  '
X`009    IF (ISTATE .EQ. SCH$C_SUSP) STATE = 'SUSP  '
X`009    IF (ISTATE .EQ. SCH$C_SUSPO) STATE = 'SUSPO '
X`009    I = 0
X`009    ISP = 0
X`009    IPL = 0
XC
XC ELIMINATE THE DOUBLE DIRECTORY ENTRY FROM SYSTEM IMAGES
XC
X`009    IPL = INDEX(IMAGE,'`093')+1
XC
XC CONVERT TRAILING NULLS IN STRINGS TO SPACES
XC
X`009    ISP = INDEX(IMAGE,CHAR(NULL))
X`009    IF (IPL .EQ. 1 .OR. ISP .EQ. 1) THEN
X`009`009IMAGE = '---(DCL)---'
X`009`009IPL = 1
X`009`009ISP = 11
X`009    ENDIF
X`009    IF (SUSFLAG .EQ. 1) THEN
X`009`009IMAGE = '---(SUSPENDED)---'
X`009`009IPL = 1
X`009`009ISP = 17
X`009    ENDIF
X`009    IF (OUTFLAG .EQ. 1) THEN
X`009`009IMAGE = '---(OUTSWAPPED)---'
X`009`009IPL = 1
X`009`009ISP = 18
X`009`009WSSIZE = 0
X`009    ENDIF
X`009    IF (PRCNAM(1:4) .EQ. 'NULL' .OR. PRCNAM(1:7) .EQ. 'SWAPPER') THEN
X`009`009IMAGE = '---(NO DATA)---'
X`009`009IPL = 1
X`009`009ISP = 15
X`009    ENDIF
X`009    DO I=1,15
X`009`009IF (PRCNAM(I:I) .EQ. CHAR(NULL)) PRCNAM(I:I) = ' '
X`009    ENDDO
X`009    DO I=1,12
X`009`009IF (USERNAME(I:I) .EQ. CHAR(NULL)) USERNAME(I:I) = ' '
X`009    ENDDO
X33`009    IF (TERMINAL(1:1) .NE. CHAR(NULL)) THEN
X`009    `009STATUS = SYS$GETDVIW(,,TERMINAL,DVI_LIST,,,,)
X`009`009IF (TERMINAL(1:3) .EQ. 'VTA' .AND. PHY_TERM(1:1) .NE. '_') THEN
X`009`009    TERMINAL = '--Dis--'
X`009`009ELSE
X`009    `009    TERMINAL = PHY_TERM(2:)
X`009`009ENDIF
X`009    ENDIF
X`009    DO I=1,7
X`009`009IF (TERMINAL(I:I) .EQ. CHAR(NULL)) TERMINAL(I:I) = ' '
X`009    ENDDO
X`009    IF (TERMINAL(2:2) .EQ. ' ' .AND. JOBTYPE .EQ. JPI$K_BATCH)
X`0091`009TERMINAL = '-Batch-'
X`009    IF (TERMINAL(2:2) .EQ. ' ' .AND. JOBTYPE .EQ. JPI$K_DETACHED)
X`0091`009TERMINAL = '--Det--'
X`009    IF (TERMINAL(2:2) .EQ. ' ')`009TERMINAL = '--Sub--'
X`009    CALL OTS$CVT_L_TI(WSSIZE,MEM)
X`009    PIMAGE = IMAGE(IPL:ISP)
X`009    DATA_LINE(ICOUNT) = SPACE//USERNAME//' '//PRCNAM//' '
X`0091`009//STATE//' '//TERMINAL//' '//MEM//' '//PIMAGE
XC
XC KEEP TRACK OF THE PID OF ALL DISPLAYED PROCESSES FOR DELETION,`032
XC MODIFICATION OR STATUS REPORTING
XC
X`009    ALTPID(ICOUNT) = PID2
X`009    ICOUNT = ICOUNT + 1
X`009ENDDO
X
X`009STATUS = SMG$ERASE_CHARS (VD1_ID,%REF(80),%REF(23),%REF(1))
X`009LINE_COUNT = ICOUNT - 1
X`009STATUS = OTS$CVT_L_TI (LINE_COUNT,PCOUNT)
X`009PAGES = INT(LINE_COUNT / 18) + 1
X`009IF (LINE_COUNT .GT. 17 .AND. MOD(LINE_COUNT,18) .EQ. 0) PAGES = PAGES -
V 1
X`009IPAGES = 1
X`009STATUS = OTS$CVT_L_TI (PROC_CNT,PROC_CNTP)
X`009STATUS = OTS$CVT_L_TI (PAGES,PGCOUNT)
X`009STATUS = OTS$CVT_L_TI (IPAGES,IPGCOUNT)
X`009PROC_COUNT = 'Procs: seen = '//PCOUNT//', total = '//PROC_CNTP//', Page
V '//IPGCOUNT//' of '//PGCOUNT
X`009STATUS = SMG$PUT_CHARS (VD1_ID,PROC_COUNT,%REF(1),%REF(32),,,)
X`009IF (LINE_COUNT .GT. 18) THEN
X`009    INIT_COUNT = 18
X`009ELSE
X`009    INIT_COUNT = LINE_COUNT
X`009ENDIF
X`009DO I=1,INIT_COUNT
X`009    STATUS = SMG$PUT_WITH_SCROLL (
X`0091`009VD2_ID,DATA_LINE(I),SMG$M_UP)
X`009ENDDO
X`009STATUS = SMG$SET_CURSOR_ABS(VD1_ID,%REF(24),%REF(1))
X`009STATUS = SMG$CHANGE_RENDITION(VD1_ID,%REF(24),%REF(1),
X`0091   %REF(1),%REF(7),SMG$M_REVERSE)
X`009SCROLL_TOP = 1
X`009IF (LINE_COUNT .LT. 18) THEN
X`009    SCROLL_BOTTOM = LINE_COUNT
X`009ELSE
X`009    SCROLL_BOTTOM = 18
X`009ENDIF
X`009CUR_COL = 1
X
X15`009TERM_CODE = 0
X`009DO WHILE (TERM_CODE .NE. 13 .AND. TERM_CODE .NE. 270)
X`009    STATUS = SMG$READ_KEYSTROKE (KB_ID,TERM_CODE)
X`009    IF (TERM_CODE .EQ. SMG$K_TRM_CTRLW .OR.
X`0091`009TERM_CODE .EQ. SMG$K_TRM_PF3) STATUS = SMG$REPAINT_SCREEN (PB_ID)
X`009    IF (TERM_CODE .EQ. SMG$K_TRM_KP9) THEN
X`009`009FLAG = 'S'
X`009        STATUS = SMG$ERASE_DISPLAY (VD2_ID)
X`009`009GOTO 5
X`009    ENDIF
X`009    IF (TERM_CODE .EQ. SMG$K_TRM_PF2) THEN
X`009    `009STATUS = SMG$ERASE_DISPLAY (VD2_ID)
X`009`009DO I=1,16
X`009    `009    STATUS = SMG$PUT_WITH_SCROLL (
X`0091`009`009VD2_ID,HELP_LINE(I),SMG$M_UP)
X`009`009ENDDO
X`009        STATUS = SMG$PUT_CHARS (VD1_ID,'    Press RETURN to continue...'
V,
X`0091`009  %REF(23),%REF(1),,,)
X`009    `009STATUS = SMG$CHANGE_RENDITION(VD1_ID,%REF(24),CUR_COL,
X`0091   `009%REF(1),%REF(8),SMG$M_NORMAL)
X`009        STATUS = SMG$READ_KEYSTROKE (KB_ID,DUMMY)
X`009    `009STATUS = SMG$ERASE_DISPLAY (VD2_ID)
X`009    `009GOTO 5
X`009    ENDIF
X`009    IF (TERM_CODE .EQ. SMG$K_TRM_UPPERCASE_E .OR.
X`0091`009TERM_CODE .EQ. SMG$K_TRM_UPPERCASE_Q .OR.
X`0091`009TERM_CODE .EQ. SMG$K_TRM_CTRLZ .OR.
X`0091`009TERM_CODE .EQ. SMG$K_TRM_PF4 .OR.
X`0091`009TERM_CODE .EQ. SMG$K_TRM_LOWERCASE_E .OR.
X`0091`009TERM_CODE .EQ. SMG$K_TRM_LOWERCASE_Q) GOTO 999
+-+-+-+-+-+-+-+-  END  OF PART 3 +-+-+-+-+-+-+-+-


