home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / dispfile.zip / DISPFILE.CLA next >
Text File  |  1988-09-17  |  10KB  |  368 lines

  1.          MEMBER('LF')
  2. DISPFILE     PROCEDURE
  3.  
  4.  OMIT('**-ENDH-**')
  5. ╔════════════╦═════════════════════════════════════════════════════════════════╗
  6. ║ PROGRAM    ║ DISPFILE.CLA - LIST FILE TO MONITOR (9-1-88 GREG)           ║
  7. ╚════════════╩═════════════════════════════════════════════════════════════════╝
  8. **-ENDH-**
  9.  
  10. DSCREEN         SCREEN      WINDOW(25,80),HUE(15,1)
  11.            ROW(25,1)  PAINT(1,80),HUE(15,4)
  12.          COL(37)  STRING('Line :')
  13.          COL(50)  STRING('of')
  14.          COL(62)  STRING('Cols :')
  15.          COL(73)  STRING('-')
  16. CLINE         COL(44)  STRING(@P#####P)
  17. TLINE         COL(53)  STRING(@P#####P)
  18. CCOL         COL(69)  STRING(@P###P)
  19. CCOL1         COL(75)  STRING(@P###P)
  20. MESSAGE         COL(3)      STRING(30)
  21.          .
  22.  
  23. ERRSCN         SCREEN      WINDOW(9,61),HUE(15,4)
  24.            ROW(1,1)      STRING('╔═{59}╗')
  25.            ROW(2,1)      REPEAT(7);STRING('║<0{59}>║') .
  26.            ROW(9,1)      STRING('╚═{59}╝')
  27.            ROW(2,27)  STRING('ERROR !!!'),BLK
  28.            ROW(5,8)      STRING('REPORT is to LARGE to Display to the SCREEN')
  29.            ROW(8,18)  PAUSE('Press Any Key To Continue...')
  30.          .
  31.  
  32. ASCII         DOS,ASCII,NAME(DISFNAME)         ! FILE TO DISPLAY
  33.          RECORD
  34. ASCREC         STRING(132)
  35.          . .
  36.  
  37. MTABLE         TABLE                 ! TEMP MEMORY TABLE
  38. TABREC         STRING(132)
  39.          .
  40.  
  41. FTABLE         TABLE                 ! FREEZE MEMORY TABLE
  42. FABREC         STRING(132)
  43.          .
  44.  
  45. CUREC         SHORT                 ! CURRENT REC IN TABLE
  46. NORECS         LONG                 ! NO OF RECS IN TABLE
  47. SLINE         BYTE                 ! CURRENT SCREEN LINE
  48. LEFTCOL         SHORT(1)                 ! LEFT COLUMN WINDOW 0
  49. LEFTCOL1     SHORT(11)                 ! LEFT COLUMN WINDOW 1
  50. NO_LOC         SHORT(10)                 ! # OF COLUMNS WINDOW 0
  51. NO_LOC1         SHORT(70)                 ! # OF COLUMNS WINDOW 1
  52. LOCK         STRING(1)                 ! IS COLUMN LOCKED
  53. MOVEMENT     BYTE(5)                 ! AMOUNT TO MOVE
  54. TOP_REC         SHORT                 ! RECORD AT TOP OF SCREEN
  55. TOP_SCN         SHORT(1)                 ! TOP SCREEN LINE
  56. BOT_SCN         SHORT(24)                 ! BOTTOM SCREEN LINE
  57. NO_SLINE     SHORT                 ! NUMBER OF SCREEN LINES
  58. NO_FREEZE    SHORT(0)                 ! NUMBER OF FREEZE LINES
  59. LCTR         SHORT                 ! MISC COUNTER
  60.  
  61.   CODE
  62.  
  63.   OPEN(ASCII)                     ! OPEN FILE TO DISPLAY
  64.   SET(ASCII)
  65.  
  66.   FREE(MTABLE)                     ! CLEAR OUT MEM TABLE
  67.  
  68.   OPEN(DSCREEN)
  69.  
  70.   LOOP UNTIL EOF(ASCII)                 ! LOAD MEM TABLE WITH FILE
  71.     NEXT(ASCII)
  72.     TABREC=ASCREC
  73.     ADD(MTABLE)
  74.  
  75.     IF ERRORCODE()= 8 THEN             ! INSUFFICIENT MEMORY
  76.        OPEN(ERRSCN)                 ! DISPLAY ERROR SCREEN
  77.        BEEP
  78.        ACCEPT
  79.        CLOSE(ERRSCN)                 ! CLOSE SCREENS
  80.        CLOSE(DSCREEN)
  81.        CLOSE(ASCII)                 ! CLOSE FILE
  82.        FREE(MTABLE)                 ! FREE UP MEMORY
  83.        FREE(FTABLE)
  84.        RETURN
  85.     .
  86.   .
  87.   CLOSE(ASCII)                     ! CLOSE FILE
  88.  
  89.   NORECS=RECORDS(MTABLE)             ! HOW MANY RECS/LINES
  90.   TLINE=NORECS
  91.   LEFTCOL  = 1                     ! LEFT COLUMN WINDOW 0
  92.   LEFTCOL1 = 11                     ! LEFT COLUMN WINDOW 1
  93.   NO_LOC   = 10                     ! # OF COLUMNS WINDOW 0
  94.   NO_LOC1  = 70                     ! # OF COLUMNS WINDOW 1
  95.   LOCK       = 'N'                 ! IS COLUMN LOCKED
  96.   MOVEMENT =  5                     ! AMOUNT TO MOVE
  97.   TOP_SCN  =  1                     ! TOP SCREEN LINE
  98.   BOT_SCN  =  24                 ! BOTTOM SCREEN LINE
  99.   NO_FREEZE=  0                     ! NUMBER OF FREEZE LINES
  100.   CUREC=1                     ! BEGIN PROC AT LINE #1
  101.   NO_SLINE=BOT_SCN-TOP_SCN+1             ! CALC # OF SCREEN LINES
  102.   MESSAGE=DISFNAME                 ! STATUS LINE MESSAGE
  103.  
  104.   LOOP                         ! LOOP UNTIL PRESS ESC
  105.     DO SHOWLINES                 ! DISPLAY THE NEXT 24 LINES
  106.     ASK                         ! GET USER KEYPRESS
  107.  
  108.     CASE KEYCODE()                 ! GET USER KEYPRESS
  109.  
  110.       OF PGUP_KEY                 ! DISPLAY PREVIOUS 24 LINES
  111.      CUREC=TOP_REC-NO_SLINE
  112.      IF CUREC < 1 THEN CUREC = 1.
  113.  
  114.       OF UP_KEY                     ! DISPLAY PREVIOUS LINE
  115.      CUREC=TOP_REC-1
  116.      IF CUREC < 1 THEN CUREC = 1.
  117.  
  118.       OF DOWN_KEY                 ! DISPLAY NEXT LINE
  119.      CUREC=TOP_REC+1
  120.      IF CUREC > NORECS THEN CUREC=TOP_REC.
  121.  
  122.       OF HOME_KEY                 ! DISPLAY TOP OF FILE
  123.      CUREC=1
  124.  
  125.       OF END_KEY                 ! DISPLAY END OF FILE
  126.      CUREC=NORECS-NO_SLINE+1
  127.  
  128.       OF RIGHT_KEY                 ! SHIFT DISPLAY TO THE LEFT
  129.      CUREC=TOP_REC
  130.  
  131.      IF LOCK='N' THEN             ! NO column SPLIT
  132.         LEFTCOL=LEFTCOL+MOVEMENT
  133.         IF LEFTCOL > 52 THEN LEFTCOL = 52.
  134.         LEFTCOL1=LEFTCOL+NO_LOC
  135.      ELSE                     ! Columns are split
  136.         LEFTCOL1=LEFTCOL1+MOVEMENT
  137.         IF LEFTCOL1+NO_LOC1 > 132 THEN LEFTCOL1=132-NO_LOC1.
  138.      .
  139.  
  140.       OF LEFT_KEY                 ! SHIFT DISPLAY TO THE RIGHT
  141.      CUREC=TOP_REC
  142.  
  143.      IF LOCK='N' THEN             ! NO Column SPLIT
  144.         LEFTCOL=LEFTCOL-MOVEMENT
  145.         IF LEFTCOL < 1 THEN LEFTCOL = 1.
  146.         LEFTCOL1=LEFTCOL+NO_LOC
  147.      ELSE                     ! Columns are SPLIT
  148.          LEFTCOL1=LEFTCOL1-MOVEMENT
  149.          IF LEFTCOL1 < 1 THEN LEFTCOL1=1.
  150.      .
  151.  
  152.       OF CTRL_RIGHT                 ! SHIFT ALL WAY TO THE LEFT
  153.      CUREC=TOP_REC
  154.      IF LOCK='N' THEN             ! NO Column SPLIT
  155.         LEFTCOL=52
  156.         LEFTCOL1=LEFTCOL+NO_LOC
  157.      ELSE                     ! Columns are SPLIT
  158.         LEFTCOL1=132-NO_LOC1
  159.      .
  160.  
  161.       OF CTRL_LEFT                 ! SHIFT ALL WAY TO THE RIGHT
  162.      CUREC=TOP_REC
  163.      IF LOCK='N' THEN             ! NO Column SPLIT
  164.         LEFTCOL=1
  165.         LEFTCOL1=LEFTCOL+NO_LOC
  166.      ELSE                     ! Columns are SPLIT
  167.         LEFTCOL1=1
  168.      .
  169.  
  170.       OF ESC_KEY                 ! STOP DISPLAY
  171.      FREE(MTABLE)
  172.      FREE(FTABLE)
  173.      BREAK                     ! exit to Caller
  174.  
  175.  
  176.       OF F7_KEY                     ! SET/RESET Column split
  177.      IF LOCK='N' THEN
  178.         DO SETLOCK
  179.      ELSE
  180.         DO RSETLOCK
  181.      .
  182.  
  183.       OF F8_KEY                     ! SET/RESET TOP FREEZE
  184.      IF NO_FREEZE=0 THEN
  185.         DO SETFREZ
  186.      ELSE
  187.         DO RSETFREZ
  188.      .
  189.     .
  190.  
  191.     IF CUREC > NORECS THEN             ! DONT GO PAST END OF FILE
  192.        CUREC=TOP_REC
  193.     .
  194.  
  195.   .
  196.  
  197.   CLOSE(DSCREEN)                 ! CLOSE SCREEN
  198.   FREE(MTABLE)                     ! FREE UP MEMORY
  199.   RETURN
  200.  
  201.  OMIT('**-ENDHS-**')
  202. ╔══════════════════════════════════════════════════════════════════════════════╗
  203. ║  SHOWLINES ROUTINE - DISPLAYS 24 LINES ON THE MONITOR                   ║
  204. ╚══════════════════════════════════════════════════════════════════════════════╝
  205. **-ENDHS-**
  206.  
  207. SHOWLINES    ROUTINE
  208.  
  209.   TOP_REC=CUREC                     ! TOP OF SCREEN RECORD
  210.   NO_LOC1=80-NO_LOC                 ! No. of columns for wind 1
  211.  
  212.   LOOP SLINE = 1 TO 24                 ! DO FOR 24 LINES
  213.  
  214.     IF SLINE <= NO_FREEZE THEN             ! DISPLAY FREEZE LINES
  215.        GET(FTABLE,SLINE)
  216.        SHOW(SLINE,1,SUB(FABREC,LEFTCOL,LEFTCOL+NO_LOC-1))
  217.        SHOW(SLINE,1+NO_LOC,SUB(FABREC,LEFTCOL1,NO_LOC1))
  218.  
  219.     ELSIF CUREC <= NORECS THEN             ! DISPLAY LINE if NOT EOF
  220.        GET(MTABLE,CUREC)
  221.        SHOW(SLINE,1,SUB(TABREC,LEFTCOL,LEFTCOL+NO_LOC-1))
  222.        SHOW(SLINE,1+NO_LOC,SUB(TABREC,LEFTCOL1,NO_LOC1))
  223.        CUREC+=1
  224.     ELSE                     ! BLANK REMAINING LINES
  225.        BLANK(SLINE,1,1,80)
  226.     .
  227.  
  228.   .
  229.  
  230.   IF CUREC >= NORECS THEN             ! DISPLAY END OF FILE MSG
  231.      MESSAGE='** END OF FILE **'
  232.   ELSE
  233.      MESSAGE=DISFNAME
  234.   .
  235.  
  236.   CLINE=CUREC-1                     ! STATUS LINE VARS
  237.   CCOL=LEFTCOL
  238.   CCOL1=LEFTCOL+79
  239.  
  240.  
  241.  OMIT('**-ENDHF-**')
  242. ╔══════════════════════════════════════════════════════════════════════════════╗
  243. ║  FREEZE THE TOP OF THE DISPLAY                           ║
  244. ╚══════════════════════════════════════════════════════════════════════════════╝
  245. **-ENDHF-**
  246. SETFREZ         ROUTINE
  247.  
  248.  FREE(FTABLE)                     ! Clear Freeze Table
  249.  NO_FREEZE=2                     ! Min lines =2
  250.  
  251.  SETHUE(15,4)                     ! Highlight current lines(2)
  252.  COLOR(1,1,NO_FREEZE,80)
  253.  
  254.  LOOP                         ! Get area to Mark from user
  255.    ASK
  256.    CASE KEYCODE()
  257.  
  258.      OF DOWN_KEY                 ! Mark another line
  259.     NO_FREEZE+=1
  260.     IF NO_FREEZE >= 12 THEN NO_FREEZE=12.
  261.     COLOR(1,1,NO_FREEZE,80)
  262.  
  263.      OF UP_KEY                     ! Unmark line
  264.     NO_FREEZE-=1
  265.     IF NO_FREEZE <=2 THEN NO_FREEZE=2.
  266.     SETHUE(15,1)
  267.     IF LOCK='N' THEN             ! Dont unmark a column lock
  268.        COLOR(NO_FREEZE+1,1,1,80)
  269.     ELSE
  270.        COLOR(NO_FREEZE+1,NO_LOC+1,1,80)
  271.     .
  272.     SETHUE(15,4)
  273.  
  274.      OF ENTER_KEY                 ! Accept current area as mark
  275.     LOOP LCTR=TOP_REC TO TOP_REC+NO_FREEZE     ! Build "Freeze" table
  276.        GET(MTABLE,LCTR)
  277.        FABREC=TABREC
  278.        ADD(FTABLE)
  279.     .
  280.     TOP_REC=TOP_REC+NO_FREEZE         ! House Clean
  281.     CUREC=TOP_REC
  282.     TOP_SCN=NO_FREEZE+1
  283.     NO_SLINE=BOT_SCN-TOP_SCN+1         ! CALC # OF SCREEN LINES
  284.     SETHUE                     ! Reset to Normal Attr.
  285.     EXIT
  286.    .
  287.  .
  288.  
  289.  OMIT('**-ENDHRF-**')
  290. ╔══════════════════════════════════════════════════════════════════════════════╗
  291. ║  RESET THE FREEZE FOR THE TOP OF THE DISPLAY                       ║
  292. ╚══════════════════════════════════════════════════════════════════════════════╝
  293. **-ENDHRF-**
  294. RSETFREZ     ROUTINE
  295.  
  296.  FREE(FTABLE)                     ! Free up memory
  297.  IF LOCK='N' THEN                 ! Unmark Freeze area
  298.     COLOR(1,1,NO_FREEZE,80)
  299.  ELSE                         ! Dont unmark column lock
  300.     COLOR(1,NO_LOC+1,NO_FREEZE,80)
  301.  .
  302.  
  303.  TOP_REC=TOP_REC-NO_FREEZE             ! House Clean
  304.  IF TOP_REC<1 THEN TOP_REC=1.
  305.  CUREC=TOP_REC
  306.  
  307.  NO_FREEZE=0
  308.  TOP_SCN=1
  309.  NO_SLINE=BOT_SCN-TOP_SCN+1             ! CALC # OF SCREEN LINES
  310.  
  311.  OMIT('**-ENDHSL-**')
  312. ╔══════════════════════════════════════════════════════════════════════════════╗
  313. ║  SET THE COLUMN LOCK/SPLIT FOR THE DISPLAY                       ║
  314. ╚══════════════════════════════════════════════════════════════════════════════╝
  315. **-ENDHSL-**
  316. SETLOCK         ROUTINE
  317.  LOCK='Y'
  318.  NO_LOC=10                     ! Min of 10 Columns for mark
  319.  SETHUE(15,4)
  320.  COLOR(1,1,24,NO_LOC)                 ! Highlight the Columns
  321.  
  322.  LOOP                         ! Get area to mark from user
  323.    ASK
  324.    CASE KEYCODE()
  325.  
  326.      OF RIGHT_KEY                 ! mark one more column
  327.     NO_LOC+=1
  328.     IF NO_LOC >= 40 THEN NO_LOC=40.         ! Max. of 40 Cols
  329.     COLOR(1,1,24,NO_LOC)
  330.  
  331.      OF LEFT_KEY                 ! Reduce No of Cols by one
  332.     NO_LOC-=1
  333.     IF NO_LOC <=10 THEN NO_LOC=10.         ! Min of 10 Cols
  334.     SETHUE(15,1)
  335.     IF NO_FREEZE = 0 THEN
  336.        COLOR(1,NO_LOC+1,24,1)
  337.     ELSE
  338.        COLOR(NO_FREEZE+1,NO_LOC+1,24-NO_FREEZE,1)
  339.     .
  340.     SETHUE(15,4)
  341.  
  342.      OF ENTER_KEY                 ! Accept current area as mark
  343.     SETHUE
  344.     CUREC=TOP_REC
  345.     LEFTCOL1=1+NO_LOC
  346.     EXIT
  347.    .
  348.  .
  349.  
  350.  OMIT('**-ENDHRC-**')
  351. ╔══════════════════════════════════════════════════════════════════════════════╗
  352. ║  RESET THE COLUMN LOCK/SPLIT                               ║
  353. ╚══════════════════════════════════════════════════════════════════════════════╝
  354. **-ENDHRC-**
  355.  
  356. RSETLOCK     ROUTINE
  357.  LOCK='N'
  358.  IF NO_FREEZE = 0 THEN                 ! Unmark column area
  359.     COLOR(1,1,24,NO_LOC)
  360.  ELSE                         ! Dont unmark line/freeze area
  361.     COLOR(NO_FREEZE+1,1,24-NO_FREEZE,NO_LOC)
  362.  .
  363.  NO_LOC=10                     ! House Clean
  364.  LEFTCOL=1
  365.  LEFTCOL1=LEFTCOL+NO_LOC
  366.  CUREC=TOP_REC
  367.  
  368.