home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
clarion
/
extract.zip
/
EXTRACT.COM
/
EXTRACT.CLA
next >
Wrap
Text File
|
1989-08-31
|
3KB
|
109 lines
EXTRACT PROGRAM
INCLUDE('\CLARION\STD_KEYS.CLA')
REJECT_KEY EQUATE(CTRL_ESC)
INPUT_FILE STRING(35)
OUTPUT_FILE STRING(35)
TOTAL_BYTES LONG
BYTES_READ LONG
RECORD_CT LONG
PERCENT BYTE
CHECK STRING(4)
SOURCE_FL DOS,ASCII,NAME(INPUT_FILE),PRE(SRC)
RECORD
RECORD STRING(132)
. .
NEW_FILE DOS,ASCII,NAME(OUTPUT_FILE),PRE(NEW)
RECORD
RECORD STRING(132)
. .
SCREEN SCREEN WINDOW(25,80),HUE(15,1)
ROW(5,20) PAINT(1,43),HUE(0,7)
ROW(5,63) PAINT(16,15),HUE(0,7)
ROW(18,5) PAINT(3,59),HUE(0,7)
ROW(5,5) PAINT(13,15),HUE(0,7)
ROW(8,12) PAINT(8,59),HUE(15,1)
ROW(1,1) REPEAT(7);STRING('▒{80}'),HUE(7,0) .
ROW(8,1) STRING('▒{11}<0{58}>▒{11}'),HUE(7,0)
ROW(9,1) REPEAT(8);STRING('▒{11}<0{58}>░▒{10}'),HUE(7,0) .
ROW(17,1) STRING('▒{13}░{57}▒{10}'),HUE(7,0)
ROW(18,1) REPEAT(8);STRING('▒{80}'),HUE(7,0) .
ROW(8,12) STRING('╔═{56}╗'),HUE(15,1)
ROW(9,12) REPEAT(6);STRING('║<0{56}>║'),HUE(15,1) .
ROW(16,12) STRING('╚═{56}╝'),HUE(15,1)
ROW(15,12) STRING('║<0{56}>║')
ROW(9,14) STRING(' {5}'),HUE(15,1)
COL(24) STRING(' File Structure Extraction Utility {11}') |
HUE(15,1)
ROW(10,14) STRING(' '),HUE(15,1)
COL(26) STRING(' '),HUE(15,1)
COL(35) STRING('Release 1.0'),HUE(15,1)
ROW(12,14) STRING('Input File: '),HUE(11,1)
COL(27) ENTRY(@S35),USE(INPUT_FILE),HUE(14,1),SEL(0,7),UPR
ROW(13,14) STRING('Output File: '),HUE(11,1)
COL(27) ENTRY(@S35),USE(OUTPUT_FILE),HUE(14,1),SEL(0,7),REQ
PERCENT_COMP ROW(15,27) STRING(30),HUE(15,1)
.
CODE
OPEN(SCREEN) ! DISPLAY SCREEN
ALERT(REJECT_KEY)
ACCEPT ! GET INPUT FILE NAME
IF KEYCODE() = REJECT_KEY THEN RETURN.
ACCEPT ! GET OUTPUT FILE NAME
IF KEYCODE() = REJECT_KEY THEN RETURN.
OPEN(SOURCE_FL) ! OPEN SOURCE FILE
IF ERROR() THEN STOP(ERROR()). ! IF NOT FOUND, EXIT
CREATE(NEW_FILE) ! CREATE THE NEW OUTPUT FILE
TOTAL_BYTES = BYTES(SOURCE_FL) ! FOR CALCULATING
! PERCENTAGE OF COMPLETION
SET(SOURCE_FL)
LOOP UNTIL EOF(SOURCE_FL) ! READ FROM START TO END
NEXT(SOURCE_FL)
BYTES_READ += BYTES(SOURCE_FL)
PERCENT = BYTES_READ / TOTAL_BYTES * 100
PERCENT_COMP = 'Working ... '& FORMAT(PERCENT,@P<<#% CompleteP)
! START FILTERING FILE
! LOOK FOR A RECORD THAT
! HAS THE WORD 'FILE' IN
! POSITION 14 OF THE STRING
CHECK = SUB(SRC:RECORD,14,4)
IF CHECK <> 'FILE' THEN CYCLE.
! IF THIS IS THE START OF A FILE STRUCTURE
! THEN COPY ALL RECORDS UNTIL YOU LOCATE
! TWO CLOSING PERIODS
NEW:RECORD = SRC:RECORD
ADD(NEW_FILE)
LOOP UNTIL EOF(SOURCE_FL)
NEXT(SOURCE_FL)
BYTES_READ += BYTES(SOURCE_FL)
PERCENT = BYTES_READ / TOTAL_BYTES * 100
PERCENT_COMP = 'Working ... '& FORMAT(PERCENT,@P<<#% CompleteP)
CHECK = SUB(SRC:RECORD,14,4)
IF CHECK = '. . ' THEN BREAK.
NEW:RECORD = SRC:RECORD
ADD(NEW_FILE)
.
IF NOT EOF(SOURCE_FL)
NEW:RECORD = SRC:RECORD
ADD(NEW_FILE)
. .
CLOSE(SOURCE_FL)
CLOSE(NEW_FILE)