SUBROUTINE PUT_STRING(LINE, COLUMN, BUFFER) C---------------------------------------------------------------------- C- C- Purpose and Methods : Write a string to a position on the screen C- C- Inputs : LINE The line to write on C- COLUMN The column to write on C- BUFFER The string to write out C- UNIT_NUM Common block variable holding the unit number to write C- to. C- Outputs : screen output C- Controls: none C- C- NOTE: If this is called with LINE = 0 and COLUMN = 0, then the given C- string as added to the LIST. C- C- If this is called with LINE = -1 and COLUMN = 0, then no movement C- is performed prior to writing the string out, and it is not added to C- the file or to the. C- C- C- Created 11-OCT-1990 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' INCLUDE 'LV1_MON_SCREEN_LAYOUT.PARAMS' CHARACTER*100 MON_STRIP_STRING EXTERNAL MON_STRIP_STRING INTEGER TRULEN EXTERNAL TRULEN INTEGER LINE, COLUMN CHARACTER*(*) BUFFER CHARACTER*3 LINEHOLD, COLHOLD PARAMETER ESC = CHAR(27) CHARACTER*100 DUMMY C INTEGER WIDTH C C ESC = CHAR(27) C C IF ((LINE .EQ. PS_NOMOVE) .AND. (COLUMN .EQ. 0)) THEN WIDTH = LEN(BUFFER) OUTPUT_BUFFER(BUFFER_POSITION:BUFFER_POSITION+WIDTH-1) = BUFFER BUFFER_POSITION = BUFFER_POSITION + WIDTH IF (BUFFER_POSITION .GT. BREAK_POINT) CALL FLUSH_SCREEN() GOTO 999 ENDIF C C PUT_STRING no longer performs these functions 8-MAY-1991 C C Reset margins and clear screen C C IF ((LINE .EQ. -1) .AND. (COLUMN .EQ. -1)) THEN C WRITE (OUTPUT_BUFFER(BUFFER_POSITION:BUFFER_POSITION+11),100) C & ESC, LINES, ESC C 100 FORMAT( A1, '[1;', I3.3, 'r', A1, '[2J') C BUFFER_POSITION = BUFFER_POSITION + 12 C IF (BUFFER_POSITION .GT. BREAK_POINT) CALL FLUSH_SCREEN() C GOTO 999 C ENDIF C C Clear to end of line C C IF ((LINE .EQ. -2) .AND. (COLUMN .EQ. -2)) THEN C WRITE (OUTPUT_BUFFER(BUFFER_POSITION:BUFFER_POSITION+3), 150) C & ESC C 150 FORMAT( A1, '[0K') C BUFFER_POSITION = BUFFER_POSITION + 4 C IF (BUFFER_POSITION .GT. BREAK_POINT) CALL FLUSH_SCREEN() C GOTO 999 C ENDIF C C C Handle put at r,c C IF (LINE .NE. PS_LIST) THEN CALL INTTOSTR(LINE, LINEHOLD, 3) CALL INTTOSTR(COLUMN, COLHOLD, 3) C WIDTH = 10 + LEN(BUFFER) OUTPUT_BUFFER(BUFFER_POSITION:BUFFER_POSITION + WIDTH -1) = & ESC // '[' // LINEHOLD // ';' // COLHOLD // 'H' // BUFFER BUFFER_POSITION = BUFFER_POSITION + WIDTH IF (BUFFER_POSITION .GT. BREAK_POINT) CALL FLUSH_SCREEN() C IF (LINE .LE. FILE_LINES) THEN DUMMY = MON_STRIP_STRING(BUFFER) FILE_COPY(LINE)(COLUMN:COLUMN+TRULEN(DUMMY)-1) = & DUMMY(1:TRULEN(DUMMY)) FILE_LINE = LINE FILE_COLUMN = COLUMN + LEN(BUFFER)-1 ENDIF ELSE C C Handle add to list C Strip out escape codes C IF (LIST_LINE .LE. FILE_LINES) THEN LIST_COPY(LIST_LINE) = BUFFER LIST_LINE = LIST_LINE + 1 ENDIF C ENDIF 999 RETURN END C---------------------------------------------------------------------- C C C SUBROUTINE INIT_PUT_STRING() C---------------------------------------------------------------------- C- C- Purpose and Methods : Initialize common block variables needed for IO C- buffering. Handles screen-to-file function. C- C- Inputs : none C- Outputs : none C- Controls: none C- C- Created 7-FEB-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' INTEGER COUNT C BUFFER_POSITION = 1 DUMP_FILE_OPENED = .FALSE. DUMP_FILE_NAME = 'TRGMON_DUMP.TXT' DO COUNT = 1, FILE_LINES FILE_COPY(COUNT) = ' ' LIST_COPY(COUNT) = ' ' END DO FILE_LINE = 1 FILE_COLUMN = 1 LIST_LINE = 1 LIST_DISPLAY_BEGIN = 1 LIST_DISPLAY_END = 1 LIST_PAGE = 1 LIST_LINE_START = 1 LIST_COL_START = 1 MORE = .FALSE. MORE_UP = .FALSE. MORE_DOWN = .FALSE. C---------------------------------------------------------------------- 999 RETURN END C C C SUBROUTINE FLUSH_SCREEN() C---------------------------------------------------------------------- C- C- Purpose and Methods : Flush the IO buffer, writing an entire screenfull in C- one WRITE. C- C- Inputs : BUFFER and BUFFER_POSITION from above C- Outputs : screen output C- Controls: none C- C- Created 24-JAN-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' C C There is a problem with output quotas if too many bytes are written out C at once, so break into two parts if necessary. C IF (BUFFER_POSITION .GT. BREAK_POINT) THEN WRITE(UNIT_NUM, 200) OUTPUT_BUFFER(1:BREAK_POINT) WRITE(UNIT_NUM, 200) OUTPUT_BUFFER( & BREAK_POINT+1:BUFFER_POSITION-1) BUFFER_POSITION = 1 ELSEIF (BUFFER_POSITION .GT. 1) THEN WRITE(UNIT_NUM, 200) OUTPUT_BUFFER(1:BUFFER_POSITION-1) BUFFER_POSITION = 1 ENDIF 200 FORMAT (A) RETURN END C---------------------------------------------------------------------- C C C SUBROUTINE CLEAR_SCREEN() C---------------------------------------------------------------------- C- C- Purpose and Methods : Send a VT100 control sequence to clear the screen. C- Handles screen-to-file function. C- C- Inputs : none C- Outputs : none C- Controls: none C- C- Created 31-JAN-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' C CHARACTER*1 ESC INTEGER COUNT C ESC = CHAR(27) CALL SETSCROLL(1,LINES) OUTPUT_BUFFER(BUFFER_POSITION:BUFFER_POSITION+3) = ESC // '[2J' BUFFER_POSITION = BUFFER_POSITION + 4 IF (BUFFER_POSITION .GT. BREAK_POINT) CALL FLUSH_SCREEN() C DO COUNT = 1, FILE_LINES FILE_COPY(COUNT) = ' ' LIST_COPY(COUNT) = ' ' END DO FILE_LINE = 1 FILE_COLUMN = 1 LIST_LINE = 1 LIST_DISPLAY_BEGIN = 1 LIST_DISPLAY_END = 1 C RETURN END C---------------------------------------------------------------------- C C C SUBROUTINE CLEAR_TO_EOS() C---------------------------------------------------------------------- C- C- Purpose and Methods : Clear the screen from the current cursor position C- to the end of screen. Handles screen to file function. C- C- Inputs : none C- Outputs : none C- Controls: none C- C- Created 4-FEB-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' C CHARACTER*1 ESC INTEGER COUNT C ESC = CHAR(27) OUTPUT_BUFFER(BUFFER_POSITION:BUFFER_POSITION + 3) = ESC // '[0J' BUFFER_POSITION = BUFFER_POSITION + 4 IF (BUFFER_POSITION .GT. BREAK_POINT) CALL FLUSH_SCREEN() C IF ((FILE_COLUMN .LT. FILE_COLUMNS) .AND. & (FILE_LINE .LE. FILE_LINES)) THEN FILE_COPY(FILE_LINE)(FILE_COLUMN:FILE_COLUMNS) = ' ' ENDIF C DO COUNT = FILE_LINE +1, FILE_LINES FILE_COPY(COUNT) = ' ' END DO RETURN END C---------------------------------------------------------------------- C C C SUBROUTINE MOVE_CURSOR_SAFE() C---------------------------------------------------------------------- C- C- Purpose and Methods : Move the cursor to the lower right corner of the C- screen. Handles screen-to-file function. C- C- Inputs : none C- Outputs : screen output C- Controls: LINES a common block variable describing the number of lines C- on the screen. C- C- Created 12-OCT-1990 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' INCLUDE 'LV1_MON_ALARMS.PARAMS' INCLUDE 'LV1_MON_ALARMS.INC' C PARAMETER ESC = CHAR(27) PARAMETER EL = ESC // '[0K' CHARACTER*8 ALARM_STRING C IF (TWB_ALARM_BEEP_FLAG .EQV. .TRUE.) THEN ALARM_STRING = ' ALARM ' ELSE ALARM_STRING = ' ' ENDIF C CALL SETSCROLL(LINES-1, LINES) C C OUTPUT_BUFFER(BUFFER_POSITION:BUFFER_POSITION+1) = & ESC // '[' CALL INTTOSTR(LINES, & OUTPUT_BUFFER(BUFFER_POSITION+2:BUFFER_POSITION+4), 3) OUTPUT_BUFFER(BUFFER_POSITION+5:BUFFER_POSITION+7) = & ';0H' BUFFER_POSITION = BUFFER_POSITION + 8 OUTPUT_BUFFER(BUFFER_POSITION:BUFFER_POSITION+74) = & ESC // '#6' // ESC // '[7m AGAIN ' // ESC // '[0m ' // & ESC // '[7m' // ALARM_STRING // ESC // '[0m ' // & ESC // '[7m PRINT ' // ESC // '[0m ' // & ESC // '[7m BACK ' // ESC // '[0m' BUFFER_POSITION = BUFFER_POSITION + 75 C IF (BUFFER_POSITION .GT. BREAK_POINT) CALL FLUSH_SCREEN() C C IF (FILE_LINE .LT. FILE_LINES) THEN FILE_COPY(FILE_LINE+1) = '[ AGAIN ] [ ' & // ALARM_STRING & // ' ] [ PRINT ] [ BACK ]' FILE_COLUMN = 77 ENDIF C C---------------------------------------------------------------------- RETURN END C C C SUBROUTINE SETSCROLL( TOP, BOTTOM ) C---------------------------------------------------------------------- C- C- Purpose and Methods : Set the scrolling region on the terminal. C- C- Inputs : TOP The top of the scrolling region C- BOTTOM The bottom of the scrolling region C- common block variable UNIT_NUM C- Unit number for screen IO. C- Outputs : screen output C- Controls: none C- C- Created 12-OCT-1990 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' C CHARACTER*1 ESC INTEGER TOP, BOTTOM C ESC = CHAR(27) OUTPUT_BUFFER(BUFFER_POSITION:BUFFER_POSITION+1) = & CHAR(27) // '[' CALL INTTOSTR( TOP, & OUTPUT_BUFFER(BUFFER_POSITION+2:BUFFER_POSITION+4), 3) OUTPUT_BUFFER(BUFFER_POSITION+5:BUFFER_POSITION+5) = ';' CALL INTTOSTR( BOTTOM, & OUTPUT_BUFFER(BUFFER_POSITION+6:BUFFER_POSITION+8), 3) OUTPUT_BUFFER(BUFFER_POSITION+9:BUFFER_POSITION+9) = 'r' BUFFER_POSITION = BUFFER_POSITION + 10 IF (BUFFER_POSITION .GT. BREAK_POINT) CALL FLUSH_SCREEN() C C---------------------------------------------------------------------- RETURN END C C C SUBROUTINE RESET_LIST() C---------------------------------------------------------------------- C- C- Purpose and Methods : Reset the LIST element count C- C- Inputs : none C- Outputs : common block variables C- Controls: none C- C- Created 10-MAY-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' INTEGER COUNT C MORE = .FALSE. MORE_UP = .FALSE. MORE_DOWN = .FALSE. LIST_LINE = 1 DO COUNT = 1, FILE_LINES LIST_COPY(COUNT) = ' ' END DO C---------------------------------------------------------------------- 999 RETURN END C C C SUBROUTINE PUT_LIST(START_LINE, COLUMN) C---------------------------------------------------------------------- C- C- Purpose and Methods : Put the list somewhere on the screen. NOTE: the C- scrolling region should not be needed for this application. C- C- Inputs : START_LINE The display line corresponding to the first C- displayed line of the list C- COLUMN The column to start each line on C- C- Outputs : none C- Controls: none C- C- Created 10-MAY-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- Updated 2-JUL-1992 Philippe Laurens, Steven Klocek C- Handle case where the last character of a line is at column 80. C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' INCLUDE 'LV1_MON_SCREEN_LAYOUT.PARAMS' INTEGER TRULEN EXTERNAL TRULEN CHARACTER*100 MON_STRIP_STRING EXTERNAL MON_STRIP_STRING C INTEGER START_LINE,COLUMN C INTEGER COUNT PARAMETER ESC = CHAR(27) PARAMETER EL = ESC // '[0K' PARAMETER SCREEN_WIDTH = 80 INTEGER WIDTH INTEGER SLENGTH CHARACTER*80 BUFFER C LIST_LINE_START = START_LINE LIST_COL_START = 1 WIDTH = FILE_COLUMNS CALL GET_LIST_BOUNDARIES(START_LINE) C C Note: this writes to the file copy as well as the screen. Everything it C does is overwritten in the file copy by the clear to C EOS and the code below it. C IF ((MORE .EQV. .TRUE.) .AND. (COLUMN .EQ. 1)) THEN BUFFER = & 'xx out of xxx lines shown. ' & // 'Use the [PREV] and [NEXT] keys to view others.' CALL INTTOSTR(LIST_DISPLAY_END - LIST_DISPLAY_BEGIN + 1, & BUFFER(PL_MANY_C:PL_MANY_E), 1) CALL INTTOSTR(LIST_LINE -1, BUFFER(PL_OUTOF_C:PL_OUTOF_E), 1) CALL PUT_STRING(LINES-1, 1, BUFFER(1:TRULEN(BUFFER))) ENDIF C DO COUNT = LIST_DISPLAY_BEGIN, LIST_DISPLAY_END C SLENGTH = TRULEN(LIST_COPY(COUNT)(1:WIDTH)) C IF (SLENGTH + LEN(EL) .LT. SCREEN_WIDTH) THEN C IF (COUNT .EQ. LIST_DISPLAY_BEGIN) THEN CALL PUT_STRING(START_LINE + COUNT - LIST_DISPLAY_BEGIN, & 1, LIST_COPY(COUNT)(1:SLENGTH) // EL) ELSE CALL PUT_STRING(PS_NOMOVE, 0, CHAR(13) // CHAR(10) // & LIST_COPY(COUNT)(1:SLENGTH) // EL) ENDIF C ELSE C IF (COUNT .EQ. LIST_DISPLAY_BEGIN) THEN CALL PUT_STRING(START_LINE + COUNT - LIST_DISPLAY_BEGIN, & 1, LIST_COPY(COUNT)(1:SCREEN_WIDTH)) ELSE CALL PUT_STRING(PS_NOMOVE, 0, CHAR(13) // CHAR(10) // & LIST_COPY(COUNT)(1:SCREEN_WIDTH)) ENDIF C ENDIF C END DO C IF (MORE .EQV. .FALSE.) THEN CALL CLEAR_TO_EOS() ELSE IF ((MORE_UP .EQV. .TRUE.) .AND. (COLUMN .EQ. 1)) THEN CALL PUT_STRING(START_LINE, 1, '^') ENDIF IF ((MORE_DOWN .EQV. .TRUE.) .AND. (COLUMN .EQ. 1)) THEN CALL PUT_STRING(START_LINE + LIST_DISPLAY_END & - LIST_DISPLAY_BEGIN, 1, 'v') ENDIF ENDIF C FILE_LINE = START_LINE DO COUNT = 1, LIST_LINE IF (FILE_LINE .LE. FILE_LINES) THEN FILE_COPY(FILE_LINE)(1:FILE_COLUMNS) = & MON_STRIP_STRING(LIST_COPY(COUNT)) FILE_LINE = FILE_LINE +1 ENDIF END DO FILE_COLUMN = FILE_COLUMNS C C---------------------------------------------------------------------- 999 RETURN END C C C SUBROUTINE GET_LIST_BOUNDARIES(FIRST_SCREEN_LINE) C---------------------------------------------------------------------- C- C- Purpose and Methods : Calculate the first and last lines of the LIST to be C- displayed. C- C- Inputs : FIRST_SCREEN_LINE The upper boundary of the screen to use C- Outputs : common block variables C- Controls: common block variables C- C- Created 10-MAY-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- Updated 30-APR-1992 Philippe Laurens, Steven Klocek C- Change so the screen is paged only (SCREEN_LINES-1) lines at a C- time. C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' C INTEGER FIRST_SCREEN_LINE INTEGER LINES_TO_USE C MORE = .FALSE. MORE_UP = .FALSE. MORE_DOWN = .FALSE. C IF (LIST_LINE .EQ. 1) THEN LIST_PAGE = 1 LIST_DISPLAY_BEGIN = 1 LIST_DISPLAY_END = 1 GOTO 999 ENDIF C LINES_TO_USE = MAX(LINES - FIRST_SCREEN_LINE - 1, 3) IF (LIST_LINE -1 .LE. LINES_TO_USE) THEN LIST_DISPLAY_BEGIN = 1 LIST_DISPLAY_END = LIST_LINE -1 LIST_PAGE = 1 GOTO 999 ENDIF C MORE = .TRUE. LIST_DISPLAY_BEGIN = (LIST_PAGE -1) * (LINES_TO_USE-1) + 1 LIST_DISPLAY_END = LIST_DISPLAY_BEGIN + LINES_TO_USE - 1 IF (LIST_DISPLAY_END .GT. LIST_LINE -1) THEN LIST_DISPLAY_END = LIST_LINE -1 LIST_DISPLAY_BEGIN = LIST_LINE - LINES_TO_USE ENDIF C IF (LIST_DISPLAY_BEGIN .NE. 1) THEN MORE_UP = .TRUE. ENDIF C IF (LIST_DISPLAY_END .NE. LIST_LINE -1) THEN MORE_DOWN = .TRUE. ENDIF C LIST_PAGE = ((LIST_DISPLAY_END-1) / LINES_TO_USE) + 1 C---------------------------------------------------------------------- 999 RETURN END C C C SUBROUTINE MON_DISPLAY_TO_FILE() C---------------------------------------------------------------------- C- C- Purpose and Methods : Make a copy of the monitoring display to a file. C- C- Inputs : none C- Outputs : file output C- Controls: common block variable DISPLAY_TO_FILENAME C- C- Created 10-MAY-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' INTEGER TRULEN EXTERNAL TRULEN INTEGER READPF, PFNUM EXTERNAL READPF, PFNUM INTEGER PFKEY C INTEGER COUNT INTEGER IOSTAT INTEGER LAST_LINE PARAMETER FORM_FEED = CHAR(12) C C C C CALL OUTMSG('1 ') CALL PFLABL( 'PRINT', 'CLOSE', 'CHANGE', 'RETURN') CALL LIBREP() CALL OUTMSG(' ') CALL OUTMSG( ' A copy of the monitoring display' & // ' can be written to the dump file:') CALL OUTMSG(' ' // DUMP_FILE_NAME) CALL OUTMSG(' ') CALL OUTMSG(' ') 100 CONTINUE CALL OUTMSG(' ') CALL OUTMSG(' ') CALL OUTMSG(' Press PF1 to append this screen to dump file ' ) CALL OUTMSG(' PF2 to close current dump file ' ) CALL OUTMSG(' PF3 to change dump file name ' ) CALL OUTMSG(' PF4 to return to display mode ' ) CALL OUTMSG(' ') C PFKEY = 0 PFKEY = READPF() IF ( PFKEY .EQ. 1) THEN GOTO 200 C ELSE IF ( PFKEY .EQ. 2) THEN CALL CLOSE_DISPLAY_DUMP_FILE() CALL OUTMSG(' File closed; next PRINT will start a new file ' ) GOTO 100 C ELSE IF ( PFKEY .EQ. 3) THEN CALL OUTMSG(' The current screen dump file name is:') CALL OUTMSG(' '// DUMP_FILE_NAME) CALL GETPAR(1, & 'Enter the new screen dump file name> ', 'U', & DUMP_FILE_NAME) IF (PFNUM() .EQ. 0) THEN IF (DUMP_FILE_OPENED .EQV. .TRUE.) & CALL CLOSE_DISPLAY_DUMP_FILE() ENDIF CALL OUTMSG(' ') CALL OUTMSG(' ') CALL OUTMSG(' The new screen dump file name is:') CALL OUTMSG(' '// DUMP_FILE_NAME) GOTO 100 C ELSE GOTO 999 ENDIF C 200 CONTINUE IF (DUMP_FILE_OPENED .EQV. .FALSE.) THEN CALL OPEN_DISPLAY_DUMP_FILE(IOSTAT) IF (IOSTAT .NE. 0) THEN WRITE (6,*) 'Error opening display dump file. IOSTAT =', & IOSTAT GOTO 999 ENDIF DUMP_FILE_OPENED = .TRUE. ELSE WRITE (DUMP_FILE_UNIT_NUM, 600, IOSTAT = IOSTAT, ERR = 300) & '----------------------------------------' // & '---------------------------------------', & FORM_FEED ENDIF C LAST_LINE = 1 DO COUNT = 1, FILE_LINES IF (FILE_COPY(COUNT) .NE. ' ') LAST_LINE = COUNT END DO C DO COUNT = 1, LAST_LINE WRITE (DUMP_FILE_UNIT_NUM, 600, IOSTAT = IOSTAT, ERR = 300) & FILE_COPY(COUNT)(1:TRULEN(FILE_COPY(COUNT))) END DO C CALL OUTMSG(' Display copied to ' // DUMP_FILE_NAME ) C GOTO 100 C 300 CONTINUE WRITE (6,*) 'Error writing to file "', DUMP_FILE_NAME, & '"' WRITE (6,*) 'IOSTAT =', IOSTAT C---------------------------------------------------------------------- 999 CONTINUE RETURN C 600 FORMAT( A ) END C C C SUBROUTINE OPEN_DISPLAY_DUMP_FILE(IOSTAT) C---------------------------------------------------------------------- C- C- Purpose and Methods : Open the file used for the display dump. C- C- Inputs : common block variable DUMP_FILE_NAME C- Outputs : IOSTAT The IOSTAT of the OPEN command. C- common block variable DUMP_FILE_UNIT_NUM C- Controls: none C- C- Created 10-MAY-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' INTEGER IOSTAT C C Unit number 92 is used because the interactions between shared images C make calls to GTUNIT useless C DUMP_FILE_UNIT_NUM = 92 C OPEN(CARRIAGECONTROL = 'LIST', ERR = 300, & FILE = DUMP_FILE_NAME, & IOSTAT = IOSTAT, STATUS = 'NEW', UNIT = DUMP_FILE_UNIT_NUM) 300 CONTINUE C---------------------------------------------------------------------- 999 RETURN END C C C SUBROUTINE CLOSE_DISPLAY_DUMP_FILE() C---------------------------------------------------------------------- C- C- Purpose and Methods : Close the display dump file C- C- Inputs : common block variable DUMP_FILE_UNIT_NUM C- Outputs : none C- Controls: none C- C- Created 10-MAY-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' CLOSE(UNIT = DUMP_FILE_UNIT_NUM) DUMP_FILE_OPENED = .FALSE. C---------------------------------------------------------------------- 999 RETURN END C C C SUBROUTINE MON_RESET_PAGE() C---------------------------------------------------------------------- C- C- Purpose and Methods : Reset the current page number to one. Call this C- before moving on to a new monitoring display. C- C- Inputs : none C- Outputs : common block variables C- Controls: none C- C- Created 13-MAY-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' C LIST_PAGE = 1 C---------------------------------------------------------------------- 999 RETURN END C C C SUBROUTINE MON_PAGE_UP() C---------------------------------------------------------------------- C- C- Purpose and Methods : Decrement the page number and scroll up one page. C- C- Inputs : none C- Outputs : screen and common block variables C- Controls: none C- C- Created 13-MAY-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' C LIST_PAGE = MAX(1, LIST_PAGE -1) C C---------------------------------------------------------------------- 999 RETURN END C C C SUBROUTINE MON_PAGE_DOWN() C---------------------------------------------------------------------- C- C- Purpose and Methods : Increment the page number and scroll down one page. C- C- Inputs : none C- Outputs : screen and common block variables C- Controls: none C- C- Created 13-MAY-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' C LIST_PAGE= LIST_PAGE + 1 C---------------------------------------------------------------------- 999 RETURN END