home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
clarion
/
dispfile.zip
/
DISPFILE.COM
/
DISPFILE.CLA
next >
Wrap
Text File
|
1988-09-17
|
10KB
|
368 lines
MEMBER('LF')
DISPFILE PROCEDURE
OMIT('**-ENDH-**')
╔════════════╦═════════════════════════════════════════════════════════════════╗
║ PROGRAM ║ DISPFILE.CLA - LIST FILE TO MONITOR (9-1-88 GREG) ║
╚════════════╩═════════════════════════════════════════════════════════════════╝
**-ENDH-**
DSCREEN SCREEN WINDOW(25,80),HUE(15,1)
ROW(25,1) PAINT(1,80),HUE(15,4)
COL(37) STRING('Line :')
COL(50) STRING('of')
COL(62) STRING('Cols :')
COL(73) STRING('-')
CLINE COL(44) STRING(@P#####P)
TLINE COL(53) STRING(@P#####P)
CCOL COL(69) STRING(@P###P)
CCOL1 COL(75) STRING(@P###P)
MESSAGE COL(3) STRING(30)
.
ERRSCN SCREEN WINDOW(9,61),HUE(15,4)
ROW(1,1) STRING('╔═{59}╗')
ROW(2,1) REPEAT(7);STRING('║<0{59}>║') .
ROW(9,1) STRING('╚═{59}╝')
ROW(2,27) STRING('ERROR !!!'),BLK
ROW(5,8) STRING('REPORT is to LARGE to Display to the SCREEN')
ROW(8,18) PAUSE('Press Any Key To Continue...')
.
ASCII DOS,ASCII,NAME(DISFNAME) ! FILE TO DISPLAY
RECORD
ASCREC STRING(132)
. .
MTABLE TABLE ! TEMP MEMORY TABLE
TABREC STRING(132)
.
FTABLE TABLE ! FREEZE MEMORY TABLE
FABREC STRING(132)
.
CUREC SHORT ! CURRENT REC IN TABLE
NORECS LONG ! NO OF RECS IN TABLE
SLINE BYTE ! CURRENT SCREEN LINE
LEFTCOL SHORT(1) ! LEFT COLUMN WINDOW 0
LEFTCOL1 SHORT(11) ! LEFT COLUMN WINDOW 1
NO_LOC SHORT(10) ! # OF COLUMNS WINDOW 0
NO_LOC1 SHORT(70) ! # OF COLUMNS WINDOW 1
LOCK STRING(1) ! IS COLUMN LOCKED
MOVEMENT BYTE(5) ! AMOUNT TO MOVE
TOP_REC SHORT ! RECORD AT TOP OF SCREEN
TOP_SCN SHORT(1) ! TOP SCREEN LINE
BOT_SCN SHORT(24) ! BOTTOM SCREEN LINE
NO_SLINE SHORT ! NUMBER OF SCREEN LINES
NO_FREEZE SHORT(0) ! NUMBER OF FREEZE LINES
LCTR SHORT ! MISC COUNTER
CODE
OPEN(ASCII) ! OPEN FILE TO DISPLAY
SET(ASCII)
FREE(MTABLE) ! CLEAR OUT MEM TABLE
OPEN(DSCREEN)
LOOP UNTIL EOF(ASCII) ! LOAD MEM TABLE WITH FILE
NEXT(ASCII)
TABREC=ASCREC
ADD(MTABLE)
IF ERRORCODE()= 8 THEN ! INSUFFICIENT MEMORY
OPEN(ERRSCN) ! DISPLAY ERROR SCREEN
BEEP
ACCEPT
CLOSE(ERRSCN) ! CLOSE SCREENS
CLOSE(DSCREEN)
CLOSE(ASCII) ! CLOSE FILE
FREE(MTABLE) ! FREE UP MEMORY
FREE(FTABLE)
RETURN
.
.
CLOSE(ASCII) ! CLOSE FILE
NORECS=RECORDS(MTABLE) ! HOW MANY RECS/LINES
TLINE=NORECS
LEFTCOL = 1 ! LEFT COLUMN WINDOW 0
LEFTCOL1 = 11 ! LEFT COLUMN WINDOW 1
NO_LOC = 10 ! # OF COLUMNS WINDOW 0
NO_LOC1 = 70 ! # OF COLUMNS WINDOW 1
LOCK = 'N' ! IS COLUMN LOCKED
MOVEMENT = 5 ! AMOUNT TO MOVE
TOP_SCN = 1 ! TOP SCREEN LINE
BOT_SCN = 24 ! BOTTOM SCREEN LINE
NO_FREEZE= 0 ! NUMBER OF FREEZE LINES
CUREC=1 ! BEGIN PROC AT LINE #1
NO_SLINE=BOT_SCN-TOP_SCN+1 ! CALC # OF SCREEN LINES
MESSAGE=DISFNAME ! STATUS LINE MESSAGE
LOOP ! LOOP UNTIL PRESS ESC
DO SHOWLINES ! DISPLAY THE NEXT 24 LINES
ASK ! GET USER KEYPRESS
CASE KEYCODE() ! GET USER KEYPRESS
OF PGUP_KEY ! DISPLAY PREVIOUS 24 LINES
CUREC=TOP_REC-NO_SLINE
IF CUREC < 1 THEN CUREC = 1.
OF UP_KEY ! DISPLAY PREVIOUS LINE
CUREC=TOP_REC-1
IF CUREC < 1 THEN CUREC = 1.
OF DOWN_KEY ! DISPLAY NEXT LINE
CUREC=TOP_REC+1
IF CUREC > NORECS THEN CUREC=TOP_REC.
OF HOME_KEY ! DISPLAY TOP OF FILE
CUREC=1
OF END_KEY ! DISPLAY END OF FILE
CUREC=NORECS-NO_SLINE+1
OF RIGHT_KEY ! SHIFT DISPLAY TO THE LEFT
CUREC=TOP_REC
IF LOCK='N' THEN ! NO column SPLIT
LEFTCOL=LEFTCOL+MOVEMENT
IF LEFTCOL > 52 THEN LEFTCOL = 52.
LEFTCOL1=LEFTCOL+NO_LOC
ELSE ! Columns are split
LEFTCOL1=LEFTCOL1+MOVEMENT
IF LEFTCOL1+NO_LOC1 > 132 THEN LEFTCOL1=132-NO_LOC1.
.
OF LEFT_KEY ! SHIFT DISPLAY TO THE RIGHT
CUREC=TOP_REC
IF LOCK='N' THEN ! NO Column SPLIT
LEFTCOL=LEFTCOL-MOVEMENT
IF LEFTCOL < 1 THEN LEFTCOL = 1.
LEFTCOL1=LEFTCOL+NO_LOC
ELSE ! Columns are SPLIT
LEFTCOL1=LEFTCOL1-MOVEMENT
IF LEFTCOL1 < 1 THEN LEFTCOL1=1.
.
OF CTRL_RIGHT ! SHIFT ALL WAY TO THE LEFT
CUREC=TOP_REC
IF LOCK='N' THEN ! NO Column SPLIT
LEFTCOL=52
LEFTCOL1=LEFTCOL+NO_LOC
ELSE ! Columns are SPLIT
LEFTCOL1=132-NO_LOC1
.
OF CTRL_LEFT ! SHIFT ALL WAY TO THE RIGHT
CUREC=TOP_REC
IF LOCK='N' THEN ! NO Column SPLIT
LEFTCOL=1
LEFTCOL1=LEFTCOL+NO_LOC
ELSE ! Columns are SPLIT
LEFTCOL1=1
.
OF ESC_KEY ! STOP DISPLAY
FREE(MTABLE)
FREE(FTABLE)
BREAK ! exit to Caller
OF F7_KEY ! SET/RESET Column split
IF LOCK='N' THEN
DO SETLOCK
ELSE
DO RSETLOCK
.
OF F8_KEY ! SET/RESET TOP FREEZE
IF NO_FREEZE=0 THEN
DO SETFREZ
ELSE
DO RSETFREZ
.
.
IF CUREC > NORECS THEN ! DONT GO PAST END OF FILE
CUREC=TOP_REC
.
.
CLOSE(DSCREEN) ! CLOSE SCREEN
FREE(MTABLE) ! FREE UP MEMORY
RETURN
OMIT('**-ENDHS-**')
╔══════════════════════════════════════════════════════════════════════════════╗
║ SHOWLINES ROUTINE - DISPLAYS 24 LINES ON THE MONITOR ║
╚══════════════════════════════════════════════════════════════════════════════╝
**-ENDHS-**
SHOWLINES ROUTINE
TOP_REC=CUREC ! TOP OF SCREEN RECORD
NO_LOC1=80-NO_LOC ! No. of columns for wind 1
LOOP SLINE = 1 TO 24 ! DO FOR 24 LINES
IF SLINE <= NO_FREEZE THEN ! DISPLAY FREEZE LINES
GET(FTABLE,SLINE)
SHOW(SLINE,1,SUB(FABREC,LEFTCOL,LEFTCOL+NO_LOC-1))
SHOW(SLINE,1+NO_LOC,SUB(FABREC,LEFTCOL1,NO_LOC1))
ELSIF CUREC <= NORECS THEN ! DISPLAY LINE if NOT EOF
GET(MTABLE,CUREC)
SHOW(SLINE,1,SUB(TABREC,LEFTCOL,LEFTCOL+NO_LOC-1))
SHOW(SLINE,1+NO_LOC,SUB(TABREC,LEFTCOL1,NO_LOC1))
CUREC+=1
ELSE ! BLANK REMAINING LINES
BLANK(SLINE,1,1,80)
.
.
IF CUREC >= NORECS THEN ! DISPLAY END OF FILE MSG
MESSAGE='** END OF FILE **'
ELSE
MESSAGE=DISFNAME
.
CLINE=CUREC-1 ! STATUS LINE VARS
CCOL=LEFTCOL
CCOL1=LEFTCOL+79
OMIT('**-ENDHF-**')
╔══════════════════════════════════════════════════════════════════════════════╗
║ FREEZE THE TOP OF THE DISPLAY ║
╚══════════════════════════════════════════════════════════════════════════════╝
**-ENDHF-**
SETFREZ ROUTINE
FREE(FTABLE) ! Clear Freeze Table
NO_FREEZE=2 ! Min lines =2
SETHUE(15,4) ! Highlight current lines(2)
COLOR(1,1,NO_FREEZE,80)
LOOP ! Get area to Mark from user
ASK
CASE KEYCODE()
OF DOWN_KEY ! Mark another line
NO_FREEZE+=1
IF NO_FREEZE >= 12 THEN NO_FREEZE=12.
COLOR(1,1,NO_FREEZE,80)
OF UP_KEY ! Unmark line
NO_FREEZE-=1
IF NO_FREEZE <=2 THEN NO_FREEZE=2.
SETHUE(15,1)
IF LOCK='N' THEN ! Dont unmark a column lock
COLOR(NO_FREEZE+1,1,1,80)
ELSE
COLOR(NO_FREEZE+1,NO_LOC+1,1,80)
.
SETHUE(15,4)
OF ENTER_KEY ! Accept current area as mark
LOOP LCTR=TOP_REC TO TOP_REC+NO_FREEZE ! Build "Freeze" table
GET(MTABLE,LCTR)
FABREC=TABREC
ADD(FTABLE)
.
TOP_REC=TOP_REC+NO_FREEZE ! House Clean
CUREC=TOP_REC
TOP_SCN=NO_FREEZE+1
NO_SLINE=BOT_SCN-TOP_SCN+1 ! CALC # OF SCREEN LINES
SETHUE ! Reset to Normal Attr.
EXIT
.
.
OMIT('**-ENDHRF-**')
╔══════════════════════════════════════════════════════════════════════════════╗
║ RESET THE FREEZE FOR THE TOP OF THE DISPLAY ║
╚══════════════════════════════════════════════════════════════════════════════╝
**-ENDHRF-**
RSETFREZ ROUTINE
FREE(FTABLE) ! Free up memory
IF LOCK='N' THEN ! Unmark Freeze area
COLOR(1,1,NO_FREEZE,80)
ELSE ! Dont unmark column lock
COLOR(1,NO_LOC+1,NO_FREEZE,80)
.
TOP_REC=TOP_REC-NO_FREEZE ! House Clean
IF TOP_REC<1 THEN TOP_REC=1.
CUREC=TOP_REC
NO_FREEZE=0
TOP_SCN=1
NO_SLINE=BOT_SCN-TOP_SCN+1 ! CALC # OF SCREEN LINES
OMIT('**-ENDHSL-**')
╔══════════════════════════════════════════════════════════════════════════════╗
║ SET THE COLUMN LOCK/SPLIT FOR THE DISPLAY ║
╚══════════════════════════════════════════════════════════════════════════════╝
**-ENDHSL-**
SETLOCK ROUTINE
LOCK='Y'
NO_LOC=10 ! Min of 10 Columns for mark
SETHUE(15,4)
COLOR(1,1,24,NO_LOC) ! Highlight the Columns
LOOP ! Get area to mark from user
ASK
CASE KEYCODE()
OF RIGHT_KEY ! mark one more column
NO_LOC+=1
IF NO_LOC >= 40 THEN NO_LOC=40. ! Max. of 40 Cols
COLOR(1,1,24,NO_LOC)
OF LEFT_KEY ! Reduce No of Cols by one
NO_LOC-=1
IF NO_LOC <=10 THEN NO_LOC=10. ! Min of 10 Cols
SETHUE(15,1)
IF NO_FREEZE = 0 THEN
COLOR(1,NO_LOC+1,24,1)
ELSE
COLOR(NO_FREEZE+1,NO_LOC+1,24-NO_FREEZE,1)
.
SETHUE(15,4)
OF ENTER_KEY ! Accept current area as mark
SETHUE
CUREC=TOP_REC
LEFTCOL1=1+NO_LOC
EXIT
.
.
OMIT('**-ENDHRC-**')
╔══════════════════════════════════════════════════════════════════════════════╗
║ RESET THE COLUMN LOCK/SPLIT ║
╚══════════════════════════════════════════════════════════════════════════════╝
**-ENDHRC-**
RSETLOCK ROUTINE
LOCK='N'
IF NO_FREEZE = 0 THEN ! Unmark column area
COLOR(1,1,24,NO_LOC)
ELSE ! Dont unmark line/freeze area
COLOR(NO_FREEZE+1,1,24-NO_FREEZE,NO_LOC)
.
NO_LOC=10 ! House Clean
LEFTCOL=1
LEFTCOL1=LEFTCOL+NO_LOC
CUREC=TOP_REC