home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / dispfil3.zip / DISPFILE.CLA < prev    next >
Text File  |  1989-11-08  |  15KB  |  487 lines

  1.          MEMBER('LF')
  2. DISPFILE     PROCEDURE(DISFNAME)
  3.  
  4. !╔════════════╦════════════════════════════════════════════════════════════════╗
  5. !║ PROGRAM    ║ DISPFILE.CLA - LIST FILE TO MONITOR (9-1-88 GREG)           ║
  6. !╚════════════╩════════════════════════════════════════════════════════════════╝
  7. !
  8. !╔═════════════════════════════════════════════════════════════════════════════╗
  9. !║ DISPLAY FILE PROCEDURE                 (MODIFIED 11-7-89)           ║
  10. !║                                           ║
  11. !║ This procedure display the file named in the DISFNAME parameter to the      ║
  12. !║ screen.  The user can use F7 & F8 to mark column and row ranges to freeze.  ║
  13. !║                                           ║
  14. !║ Modifications include changes that reduce memory table size from 132 bytes  ║
  15. !║ per record to 4 bytes per record (you will save lots of memory), allowing   ║
  16. !║ almost any size file to be scanned.    The maximum viewing width has been     ║
  17. !║ increased to 255 bytes.  Ctrl Right Arrow will change the last column being ║
  18. !║ displayed to the greatest width of any line in the file.  The procedure has ║
  19. !║ been changed to recieve the name and path of the file to be displayed.      ║
  20. !║ Additional messages and a help window have also been added.    And last but   ║
  21. !║ not least the up and down arrow keys now take advantage of the scroll       ║
  22. !║ function instead of redisplaying the entire screen.                   ║
  23. !║                                           ║
  24. !║ Modified By:      Todd A. Seidel                           ║
  25. !║          Micro Solutions Group, Inc.                       ║
  26. !║          17 Aldrich Rd.                           ║
  27. !║          Columbus, OH 43214        Phone (614) 261-4545           ║
  28. !║                                           ║
  29. !╚═════════════════════════════════════════════════════════════════════════════╝
  30.  
  31. DISFNAME     STRING(100) ! FILE NAME WITH PATH
  32. NAMEONLY     STRING(25)     ! USED TO STORE JUST THE NAME WITHOUT THE PATH
  33.  
  34. DSCREEN         SCREEN      WINDOW(25,80),HLP('DISP_HLP'),HUE(2,0)
  35.            ROW(25,1)  PAINT(1,80),HUE(15,3)
  36.          COL(29)  STRING('Size:')
  37.          COL(44)  STRING('Line:')
  38.          COL(56)  STRING('of')
  39.          COL(67)  STRING('Cols:')
  40.          COL(76)  STRING('-')
  41. FILE_SIZE     COL(35)  STRING(@P######P)
  42. CLINE         COL(50)  STRING(@P#####P)
  43. TLINE         COL(59)  STRING(@P#####P)
  44. CCOL         COL(73)  STRING(@P###P)
  45. CCOL1         COL(77)  STRING(@P###P)
  46. MESSAGE         COL(2)      STRING(25)
  47.          .
  48.  
  49. ASCII         DOS,ASCII,NAME(DISFNAME)         ! FILE TO DISPLAY
  50.          RECORD
  51. ASCREC         STRING(255)
  52.          . .
  53.  
  54. FTABLE         TABLE                 ! FREEZE MEMORY TABLE
  55. FABREC         STRING(255)
  56.          .
  57.  
  58. POINT_TBL    TABLE
  59. DOS_POINT    LONG
  60.          .
  61.  
  62.  
  63. CUREC         SHORT                 ! CURRENT REC IN TABLE
  64. NORECS         LONG                 ! NO OF RECS IN TABLE
  65. SLINE         BYTE                 ! CURRENT SCREEN LINE
  66. LEFTCOL         SHORT(1)                 ! LEFT COLUMN WINDOW 0
  67. LEFTCOL1     SHORT(11)                 ! LEFT COLUMN WINDOW 1
  68. NO_LOC         SHORT(10)                 ! # OF COLUMNS WINDOW 0
  69. NO_LOC1         SHORT(70)                 ! # OF COLUMNS WINDOW 1
  70. LOCK         STRING(1)                 ! IS COLUMN LOCKED
  71. MOVEMENT     BYTE(5)                 ! AMOUNT TO MOVE
  72. TOP_REC         SHORT                 ! RECORD AT TOP OF SCREEN
  73. TOP_SCN         SHORT(1)                 ! TOP SCREEN LINE
  74. BOT_SCN         SHORT(24)                 ! BOTTOM SCREEN LINE
  75. NO_SLINE     SHORT                 ! NUMBER OF SCREEN LINES
  76. NO_FREEZE    SHORT(0)                 ! NUMBER OF FREEZE LINES
  77. LCTR         SHORT                 ! MISC COUNTER
  78. RIGHT_LOC    SHORT                 ! RIGHT SIDE LOCATION MAX
  79.  
  80. TEXT_FORE    EQUATE(2)                 ! TEXT FOREGROUND COLOR
  81. TEXT_BACK    EQUATE(0)                 ! TEXT BACKGROUND COLOR
  82. SPLIT_FORE   EQUATE(15)                 ! SPLIT WINDOW AREA FORE COLOR
  83. SPLIT_BACK   EQUATE(1)                 ! SPLIT WINDOW AREA BACK COLOR
  84.  
  85. ENTER_KEY    EQUATE(257)             !ENTER KEY
  86. HOME_KEY     EQUATE(261)             !HOME KEY
  87. UP_KEY         EQUATE(262)             !CURSOR UP KEY
  88. PGUP_KEY     EQUATE(263)             !PGUP KEY
  89. LEFT_KEY     EQUATE(265)             !CURSOR LEFT KEY
  90. RIGHT_KEY    EQUATE(266)             !CURSOR RIGHT KEY
  91. END_KEY         EQUATE(268)             !END KEY
  92. DOWN_KEY     EQUATE(269)             !CURSOR DOWN KEY
  93. PGDN_KEY     EQUATE(270)             !PGDN KEY
  94. CTRL_ESC     EQUATE(279)             !CTRL-ESC KEY
  95. CTRL_LEFT    EQUATE(285)             !CTRL-CURSOR LEFT KEY
  96. CTRL_RIGHT   EQUATE(286)             !CTRL-CURSOR RIGHT KEY
  97. F7_KEY         EQUATE(2055)             !F7 KEY
  98. F8_KEY         EQUATE(2056)             !F8 KEY
  99.  
  100. SLASH_POS    BYTE
  101.  
  102.   CODE
  103.  
  104.   SLASH_POS = 1
  105.   NAMEONLY = LEFT(RIGHT(DISFNAME),25)
  106.   LOOP
  107.     SLASH_POS = INSTRING('\',NAMEONLY)
  108.     IF SLASH_POS = 0 THEN BREAK.
  109.     NAMEONLY = SUB(NAMEONLY,SLASH_POS+1,30)
  110.     .
  111.  
  112.   HELP('DISPFILE.HLP')
  113.   OPEN(ASCII)                     ! OPEN FILE TO DISPLAY
  114.  
  115.   FREE(POINT_TBL)                 ! CLEAR OUT MEM TABLE
  116.   CUREC=1                     ! BEGIN PROC AT LINE #1
  117.  
  118.   OPEN(DSCREEN)
  119.   MESSAGE = 'Loading ' & CLIP(LEFT(FORMAT(BYTES(ASCII),@N_6))) & ' Bytes...'
  120.   SET(ASCII)
  121.   LOOP UNTIL EOF(ASCII)                 ! LOAD FILE POINTERS INTO TABLE
  122.     NEXT(ASCII)
  123.     DOS_POINT=POINTER(ASCII)
  124.     ADD(POINT_TBL)
  125.     FILE_SIZE = DOS_POINT
  126.     IF LEN(CLIP(ASCREC)) > RIGHT_LOC THEN RIGHT_LOC = LEN(CLIP(ASCREC)).
  127.   .
  128.   FILE_SIZE += BYTES(ASCII) -1
  129.   RIGHT_LOC -= 79                 ! SET RIGHT SIDE LOCATION
  130.   IF RIGHT_LOC > 175 THEN RIGHT_LOC = 175.
  131.   IF RIGHT_LOC < 1 THEN RIGHT_LOC = 1.         ! FOR CTRL/-> KEY
  132.  
  133.   NORECS=RECORDS(POINT_TBL)             ! HOW MANY RECS/LINES
  134.   TLINE = NORECS                 ! SHOW NORECS ON SCREEN
  135.   LEFTCOL  = 1                     ! LEFT COLUMN WINDOW 0
  136.   LEFTCOL1 = 11                     ! LEFT COLUMN WINDOW 1
  137.   NO_LOC   = 10                     ! # OF COLUMNS WINDOW 0
  138.   NO_LOC1  = 70                     ! # OF COLUMNS WINDOW 1
  139.   LOCK       = 'N'                 ! IS COLUMN LOCKED
  140.   MOVEMENT =  5                     ! AMOUNT TO MOVE
  141.   TOP_SCN  =  1                     ! TOP SCREEN LINE
  142.   BOT_SCN  =  24                 ! BOTTOM SCREEN LINE
  143.   NO_FREEZE=  0                     ! NUMBER OF FREEZE LINES
  144.   NO_SLINE=BOT_SCN-TOP_SCN+1             ! CALC # OF SCREEN LINES
  145.   DO SHOWLINES                     ! DISPLAY THE NEXT 24 LINES
  146.  
  147.   LOOP                         ! LOOP UNTIL PRESS CTRL/ESC
  148.     ASK                         ! GET USER KEYPRESS
  149.  
  150.     CASE KEYCODE()                 ! GET USER KEYPRESS
  151.  
  152.       OF PGUP_KEY                 ! DISPLAY PREVIOUS 24 LINES
  153.      CUREC=TOP_REC-NO_SLINE
  154.      IF CUREC < 1 THEN CUREC = 1.
  155.  
  156.       OF PGDN_KEY                 ! DISPLAY NEXT 24 LINES
  157.      IF NORECS <= 24 - NO_FREEZE THEN MESSAGE=NAMEONLY;CYCLE.
  158.      IF CUREC + 24 - NO_FREEZE > NORECS
  159.        CUREC -= (CUREC + 23 - NO_FREEZE) - NORECS
  160.        .
  161.  
  162.       OF UP_KEY                     ! DISPLAY PREVIOUS LINE
  163.      DO SCROLLUP
  164.      CYCLE
  165.  
  166.       OF DOWN_KEY                 ! DISPLAY NEXT LINE
  167.      CUREC=TOP_REC+24-NO_FREEZE
  168.      DO SCROLLDN
  169.      CYCLE
  170.  
  171.       OF HOME_KEY                 ! DISPLAY TOP OF FILE
  172.      CUREC=1
  173.  
  174.       OF END_KEY                 ! DISPLAY END OF FILE
  175.      IF NORECS < 25 THEN CYCLE.
  176.      CUREC=NORECS-NO_SLINE+1
  177.  
  178.       OF RIGHT_KEY                 ! SHIFT DISPLAY TO THE LEFT
  179.      CUREC=TOP_REC
  180.  
  181.      IF LOCK='N' THEN             ! NO column SPLIT
  182.         LEFTCOL=LEFTCOL+MOVEMENT
  183.         IF LEFTCOL > 175 THEN LEFTCOL = 175.
  184.         LEFTCOL1=LEFTCOL+NO_LOC
  185.      ELSE                     ! Columns are split
  186.         LEFTCOL1=LEFTCOL1+MOVEMENT
  187.         IF LEFTCOL1+NO_LOC1 > 255 THEN LEFTCOL1=255-NO_LOC1.
  188.      .
  189.  
  190.       OF LEFT_KEY                 ! SHIFT DISPLAY TO THE RIGHT
  191.      CUREC=TOP_REC
  192.  
  193.      IF LOCK='N' THEN             ! NO Column SPLIT
  194.         LEFTCOL=LEFTCOL-MOVEMENT
  195.         IF LEFTCOL < 1 THEN LEFTCOL = 1.
  196.         LEFTCOL1=LEFTCOL+NO_LOC
  197.      ELSE                     ! Columns are SPLIT
  198.         LEFTCOL1=LEFTCOL1-MOVEMENT
  199.         IF LEFTCOL1 < 1 THEN LEFTCOL1=1.
  200.      .
  201.  
  202.       OF CTRL_RIGHT                 ! SHIFT ALL WAY TO THE LEFT
  203.      CUREC=TOP_REC
  204.      IF LOCK='N' THEN             ! NO Column SPLIT
  205.         LEFTCOL=RIGHT_LOC
  206.         LEFTCOL1=LEFTCOL+NO_LOC
  207.      ELSE                     ! Columns are SPLIT
  208.         LEFTCOL1=RIGHT_LOC+NO_LOC
  209.      .
  210.  
  211.       OF CTRL_LEFT                 ! SHIFT ALL WAY TO THE RIGHT
  212.      CUREC=TOP_REC
  213.      IF LOCK='N' THEN             ! NO Column SPLIT
  214.         LEFTCOL=1
  215.         LEFTCOL1=LEFTCOL+NO_LOC
  216.      ELSE                     ! Columns are SPLIT
  217.         LEFTCOL1=1
  218.      .
  219.  
  220.       OF CTRL_ESC                 ! STOP DISPLAY
  221.      FREE(POINT_TBL)
  222.      FREE(FTABLE)
  223.      CLOSE(ASCII)
  224.      BREAK                     ! exit to Caller
  225.  
  226.  
  227.       OF F7_KEY                     ! SET/RESET Column split
  228.      IF LOCK='N' THEN
  229.         MESSAGE = 'Use ENTER To Mark Columns'
  230.         DO SETLOCK
  231.      ELSE
  232.         DO RSETLOCK
  233.      .
  234.  
  235.       OF F8_KEY                     ! SET/RESET TOP FREEZE
  236.      IF NO_FREEZE=0 THEN
  237.         MESSAGE = 'Use ENTER To Mark Rows'
  238.         DO SETFREZ
  239.         IF CUREC >= NORECS THEN         ! DISPLAY END OF FILE MSG
  240.           MESSAGE='** END OF FILE **'
  241.         ELSE
  242.           MESSAGE=NAMEONLY
  243.         .
  244.      ELSE
  245.         DO RSETFREZ
  246.      .
  247.  
  248.       ELSE
  249.     CYCLE
  250.  
  251.     .
  252.  
  253.     IF CUREC > NORECS THEN             ! DONT GO PAST END OF FILE
  254.        CUREC=TOP_REC
  255.     .
  256.     DO SHOWLINES
  257.  
  258.   .
  259.  
  260.   CLOSE(DSCREEN)                 ! CLOSE SCREEN
  261.   FREE(POINT_TBL)                 ! FREE UP MEMORY
  262.   RETURN
  263.  
  264.  
  265.  OMIT('**-ENDSD-**')
  266. ╔══════════════════════════════════════════════════════════════════════════════╗
  267. ║  SCROLLUP ROUTINE - SCROLLS SCREEN DATA FOR UP KEY                   ║
  268. ╚══════════════════════════════════════════════════════════════════════════════╝
  269. **-ENDSD-**
  270.  
  271. SCROLLUP     ROUTINE
  272.  
  273.   IF TOP_REC = 1 THEN EXIT.
  274.   CUREC-=1
  275.   TOP_REC -= 1
  276.   SLINE = NO_FREEZE + 1
  277.   SCROLL(1+NO_FREEZE,1,24-NO_FREEZE,80,-1)     ! SCROLL TEXT AREA DOWN
  278.   GET(POINT_TBL,TOP_REC)
  279.   GET(ASCII,DOS_POINT)
  280.   SHOW(SLINE,1,SUB(ASCREC,LEFTCOL,NO_LOC))
  281.   SHOW(SLINE,1+NO_LOC,SUB(ASCREC,LEFTCOL1,NO_LOC1))
  282.   MESSAGE=NAMEONLY
  283.   CLINE=CUREC-1                     ! STATUS LINE VARS
  284.   CCOL=LEFTCOL
  285.   CCOL1=LEFTCOL+79
  286.  
  287.  
  288.  OMIT('**-ENDSD-**')
  289. ╔══════════════════════════════════════════════════════════════════════════════╗
  290. ║  SCROLLDN ROUTINE - SCROLLS SCREEN DATA FOR DOWN KEY                   ║
  291. ╚══════════════════════════════════════════════════════════════════════════════╝
  292. **-ENDSD-**
  293.  
  294. SCROLLDN     ROUTINE
  295.  
  296.   IF CUREC <= NORECS THEN               ! DISPLAY LINE if NOT EOF
  297.      SLINE = 24
  298.      SCROLL(1+NO_FREEZE,1,24-NO_FREEZE,80,1)   ! SCROLL TEXT AREA UP
  299.      GET(POINT_TBL,CUREC)
  300.      GET(ASCII,DOS_POINT)
  301.      SHOW(SLINE,1,SUB(ASCREC,LEFTCOL,NO_LOC))
  302.      SHOW(SLINE,1+NO_LOC,SUB(ASCREC,LEFTCOL1,NO_LOC1))
  303.      CUREC+=1
  304.      TOP_REC+=1
  305.      CLINE=CUREC-1                    ! STATUS LINE VARS
  306.      CCOL=LEFTCOL
  307.      CCOL1=LEFTCOL+79
  308.      .
  309.   IF CUREC >= NORECS THEN             ! DISPLAY END OF FILE MSG
  310.      MESSAGE='** END OF FILE **'
  311.   ELSE
  312.      MESSAGE=NAMEONLY
  313.   .
  314.  
  315.  
  316.  OMIT('**-ENDHS-**')
  317. ╔══════════════════════════════════════════════════════════════════════════════╗
  318. ║  SHOWLINES ROUTINE - DISPLAYS 24 LINES ON THE MONITOR                   ║
  319. ╚══════════════════════════════════════════════════════════════════════════════╝
  320. **-ENDHS-**
  321.  
  322. SHOWLINES    ROUTINE
  323.  
  324.   TOP_REC=CUREC                     ! TOP OF SCREEN RECORD
  325.   NO_LOC1=80-NO_LOC                 ! No. of columns for wind 1
  326.   IF NO_LOC1 < 1 THEN NO_LOC1 = 1.
  327.   GET(POINT_TBL,CUREC)
  328.   SET(ASCII,DOS_POINT)
  329.   LOOP SLINE = 1 TO 24                 ! DO FOR 24 LINES
  330.     IF SLINE <= NO_FREEZE             ! DISPLAY FREEZE LINES
  331.        GET(FTABLE,SLINE)
  332.        SHOW(SLINE,1,SUB(FABREC,LEFTCOL,LEFTCOL+NO_LOC-1))
  333.        SHOW(SLINE,1+NO_LOC,SUB(FABREC,LEFTCOL1,NO_LOC1))
  334.     ELSIF CUREC <= NORECS             ! DISPLAY LINE if NOT EOF
  335.        NEXT(ASCII)
  336.        SHOW(SLINE,1,SUB(ASCREC,LEFTCOL,NO_LOC))
  337.        SHOW(SLINE,1+NO_LOC,SUB(ASCREC,LEFTCOL1,NO_LOC1))
  338.        CUREC+=1
  339.     .
  340.   .
  341.  
  342.   IF CUREC >= NORECS THEN             ! DISPLAY END OF FILE MSG
  343.      MESSAGE='** END OF FILE **'
  344.   ELSE
  345.      MESSAGE=NAMEONLY
  346.   .
  347.  
  348.   CLINE=CUREC-1                     ! STATUS LINE VARS
  349.   IF LOCK = 'N'
  350.     CCOL=LEFTCOL
  351.     CCOL1=LEFTCOL+79
  352.   ELSE
  353.     CCOL=LEFTCOL1
  354.     CCOL1=LEFTCOL1+79-NO_LOC
  355.     .
  356.  
  357.  
  358.  OMIT('**-ENDHF-**')
  359. ╔══════════════════════════════════════════════════════════════════════════════╗
  360. ║  FREEZE THE TOP OF THE DISPLAY                           ║
  361. ╚══════════════════════════════════════════════════════════════════════════════╝
  362. **-ENDHF-**
  363. SETFREZ         ROUTINE
  364.  
  365.  FREE(FTABLE)                     ! Clear Freeze Table
  366.  NO_FREEZE=2                     ! Min lines =2
  367.  
  368.  SETHUE(SPLIT_FORE,SPLIT_BACK)             ! Highlight current lines(2)
  369.  COLOR(1,1,NO_FREEZE,80)
  370.  
  371.  LOOP                         ! Get area to Mark from user
  372.    ASK
  373.    CASE KEYCODE()
  374.  
  375.      OF DOWN_KEY                 ! Mark another line
  376.     NO_FREEZE+=1
  377.     IF NO_FREEZE > 12 THEN NO_FREEZE=12.
  378.     IF NO_FREEZE > NORECS THEN NO_FREEZE = NORECS.
  379.     COLOR(1,1,NO_FREEZE,80)
  380.  
  381.      OF UP_KEY                     ! Unmark line
  382.     NO_FREEZE-=1
  383.     IF NO_FREEZE <=2 THEN NO_FREEZE=2.
  384.     SETHUE(TEXT_FORE,TEXT_BACK)
  385.     IF LOCK='N' THEN             ! Dont unmark a column lock
  386.        COLOR(NO_FREEZE+1,1,1,80)
  387.     ELSE
  388.        COLOR(NO_FREEZE+1,NO_LOC+1,1,80)
  389.     .
  390.     SETHUE(SPLIT_FORE,SPLIT_BACK)
  391.  
  392.      OF ENTER_KEY                 ! Accept current area as mark
  393.     LOOP LCTR=TOP_REC TO TOP_REC+NO_FREEZE     ! Build "Freeze" table
  394.        GET(POINT_TBL,LCTR)
  395.        GET(ASCII,DOS_POINT)
  396.        FABREC=ASCREC
  397.        ADD(FTABLE)
  398.     .
  399.     TOP_REC=TOP_REC+NO_FREEZE         ! House Clean
  400.     CUREC=TOP_REC
  401.     TOP_SCN=NO_FREEZE+1
  402.     NO_SLINE=BOT_SCN-TOP_SCN+1         ! CALC # OF SCREEN LINES
  403.     SETHUE                     ! Reset to Normal Attr.
  404.     EXIT
  405.    .
  406.  .
  407.  
  408.  OMIT('**-ENDHRF-**')
  409. ╔══════════════════════════════════════════════════════════════════════════════╗
  410. ║  RESET THE FREEZE FOR THE TOP OF THE DISPLAY                       ║
  411. ╚══════════════════════════════════════════════════════════════════════════════╝
  412. **-ENDHRF-**
  413. RSETFREZ     ROUTINE
  414.  
  415.  FREE(FTABLE)                     ! Free up memory
  416.  IF LOCK='N' THEN                 ! Unmark Freeze area
  417.     COLOR(1,1,NO_FREEZE,80)
  418.  ELSE                         ! Dont unmark column lock
  419.     COLOR(1,NO_LOC+1,NO_FREEZE,80)
  420.  .
  421.  
  422.  TOP_REC=TOP_REC-NO_FREEZE             ! House Clean
  423.  IF TOP_REC<1 THEN TOP_REC=1.
  424.  CUREC=TOP_REC
  425.  
  426.  NO_FREEZE=0
  427.  TOP_SCN=1
  428.  NO_SLINE=BOT_SCN-TOP_SCN+1             ! CALC # OF SCREEN LINES
  429.  
  430.  OMIT('**-ENDHSL-**')
  431. ╔══════════════════════════════════════════════════════════════════════════════╗
  432. ║  SET THE COLUMN LOCK/SPLIT FOR THE DISPLAY                       ║
  433. ╚══════════════════════════════════════════════════════════════════════════════╝
  434. **-ENDHSL-**
  435. SETLOCK         ROUTINE
  436.  LOCK='Y'
  437.  NO_LOC=10                     ! Min of 10 Columns for mark
  438.  SETHUE(SPLIT_FORE,SPLIT_BACK)
  439.  COLOR(1,1,24,NO_LOC)                 ! Highlight the Columns
  440.  
  441.  LOOP                         ! Get area to mark from user
  442.    ASK
  443.    CASE KEYCODE()
  444.  
  445.      OF RIGHT_KEY                 ! mark one more column
  446.     NO_LOC+=1
  447.     IF NO_LOC > 40 THEN NO_LOC=40.         ! Max. of 40 Cols
  448.     COLOR(1,1,24,NO_LOC)
  449.  
  450.      OF LEFT_KEY                 ! Reduce No of Cols by one
  451.     NO_LOC-=1
  452.     IF NO_LOC < 2 THEN NO_LOC=2.         ! Min of 2 Cols
  453.     SETHUE(TEXT_FORE,TEXT_BACK)
  454.     IF NO_FREEZE = 0 THEN
  455.        COLOR(1,NO_LOC+1,24,1)
  456.     ELSE
  457.        COLOR(NO_FREEZE+1,NO_LOC+1,24-NO_FREEZE,1)
  458.     .
  459.     SETHUE(SPLIT_FORE,SPLIT_BACK)
  460.  
  461.      OF ENTER_KEY                 ! Accept current area as mark
  462.     SETHUE
  463.     CUREC=TOP_REC
  464.     LEFTCOL1=1+NO_LOC
  465.     EXIT
  466.    .
  467.  .
  468.  
  469.  OMIT('**-ENDHRC-**')
  470. ╔══════════════════════════════════════════════════════════════════════════════╗
  471. ║  RESET THE COLUMN LOCK/SPLIT                               ║
  472. ╚══════════════════════════════════════════════════════════════════════════════╝
  473. **-ENDHRC-**
  474.  
  475. RSETLOCK     ROUTINE
  476.  LOCK='N'
  477.  IF NO_FREEZE = 0 THEN                 ! Unmark column area
  478.     COLOR(1,1,24,NO_LOC)
  479.  ELSE                         ! Dont unmark line/freeze area
  480.     COLOR(NO_FREEZE+1,1,24-NO_FREEZE,NO_LOC)
  481.  .
  482.  NO_LOC=10                     ! House Clean
  483.  LEFTCOL=1
  484.  LEFTCOL1=LEFTCOL+NO_LOC
  485.  CUREC=TOP_REC
  486.  
  487.