home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
clarion
/
isocheck.zip
/
ISOCHECK.CLA
< prev
next >
Wrap
Text File
|
1993-06-27
|
10KB
|
267 lines
PROGRAM
NoAction EQUATE(0) ! No caller action
FormatQueue EQUATE(1) ! Format the display queue
ProcessField EQUATE(2) ! Process another field
NoRecords EQUATE(3) ! No records to display
FilterRecord EQUATE(4) ! Filter a record
ResetFirst EQUATE(5) ! Set to first of a range
ResetLast EQUATE(6) ! Set to last of a range
LF_CR EQUATE('<10,13>') !Line feed/carriage return
NoError EQUATE(0) ! ''
NoFileErr EQUATE(02) ! 'File Not Found'
NoPathErr EQUATE(03) ! 'Path Not Found'
TooManyErr EQUATE(04) ! 'Too Many Open Files'
NoAccessErr EQUATE(05) ! 'Access Denied'
BadMemErr EQUATE(07) ! 'Memory Corrupted'
NoMemErr EQUATE(08) ! 'Insufficient Memory'
BadDriveErr EQUATE(15) ! 'Invalid Drive'
NoEntryErr EQUATE(30) ! 'Entry Not Found'
IsLockedErr EQUATE(32) ! 'File Is Already Locked'
BadRecErr EQUATE(33) ! 'Record Not Available'
NoRecErr EQUATE(35) ! 'Record Not Found'
BadFileErr EQUATE(36) ! 'Invalid Data File'
NotOpenErr EQUATE(37) ! 'File Not Open'
DupKeyErr EQUATE(40) ! 'Creates Duplicate Key'
IsHeldErr EQUATE(43) ! 'Record Is Already Held'
BadNameErr EQUATE(45) ! 'Invalid Filename'
BadKeyErr EQUATE(46) ! 'Key Files must be Rebuilt'
InvalidFile EQUATE(47) ! 'Invalid File Declaration'
BadTranErr EQUATE(48) ! 'Unable to log transaction'
IsOpenErr EQUATE(52) ! 'File Already Open'
NoCreateErr EQUATE(54) ! 'No Create Attribute'
NoShareErr EQUATE(55) ! 'File Must Be Shared'
BadMemoErr EQUATE(57) ! 'Invalid Memo File'
ExclReqErr EQUATE(63) ! 'Exclusive Access Required'
ShareVioErr EQUATE(64) ! 'Sharing Violation'
CantRollErr EQUATE(65) ! 'Unable to rollback transaction'
TypeDescErr EQUATE(75) ! 'Invalid Field Type Descriptor'
BadIndexErr EQUATE(76) ! 'Invalid Index String'
IndexAccess EQUATE(77) ! 'Unable To Access Index'
BadParmErr EQUATE(78) ! 'Invalid Number Of Parameters'
INCLUDE('STD_KEYS.CLA')
INCLUDE('CTL_KEYS.CLA')
INCLUDE('ALT_KEYS.CLA')
REJECT_KEY EQUATE(CTRL_ESC)
ACCEPT_KEY EQUATE(CTRL_ENTER)
TRUE EQUATE(1)
FALSE EQUATE(0)
MAP
FUNC(REPL),STRING !!Size is 219
MODULE('DOSA'),BINARY
FUNC(COMMAND_LINE),STRING
PROC(NEXTDIR)
PROC(REMOVEDIR)
PROC(SETDIR)
. !Size is 530
END !Area Number 4 !Size is 10,618
ADDDIZ STRING(1)
ADDMSG STRING(60)
ADDSPEC STRING(46)
ADDITIVE BYTE
SMARTNAME STRING(64)
GROUP,PRE(GLO)
Filespec STRING(80)
SMART STRING(1)
EXPORT STRING(64)
REDIRECT STRING(64)
Message1 STRING(45)
Message2 STRING(45)
Message3 STRING(45)
InsertMsg STRING('Record will be added {9}')
ChangeMsg STRING('Record will be changed {7}')
DeleteMsg STRING('Select OK to delete {10}')
MODE BYTE
DIR STRING(60)
.
DebugMode BYTE
AddRecord BYTE(1) ! Add a new record
ChangeRecord BYTE(2) ! Change the current record
DeleteRecord BYTE(3) ! Delete the current record
EJECT('File Layouts')
REDIRECTED DOS,ASCII,PRE(RED),NAME(GLO:REDIRECT)
RECORD RECORD
SPACE STRING(1)
. .
TMP_FNAME STRING(60)
DEL_FNAME STRING(60)
TMPFILE DOS,ASCII,NAME(TMP_FNAME)
TMPRECORD RECORD
TMPDATA STRING(120)
. .
DELFILE DOS,NAME(DEL_FNAME)
DELRECORD RECORD
ASCREC STRING(255)
. .
ACTION SHORT !0 = NO ACTION
!1 = ADD RECORD
!2 = CHANGE RECORD
!3 = DELETE RECORD
!4 = LOOKUP FIELD
GROUP,PRE(MEM)
MESSAGE STRING(30) !Global Message Area
PAGE SHORT !Report Page Number
LINE SHORT !Report Line Number
DEVICE STRING(30) !Report Device Name
.
SAVE_PATH STRING(80)
REGISTERED BYTE
SAVE_COM STRING(120)
CharPtr LONG
Counter LONG
COMPLIANT BYTE
Filter_On BYTE
Beta_Off BYTE
FOUND_IT BYTE
GONE STRING(80)
HD STRING(8)
ISO BYTE
INGIF STRING(1)
LIMITS BYTE
LINE2 STRING(78)
ListNum LONG
LOADED BYTE
LONGLINE STRING(92)
MSGCMD STRING(132)
Match_True BYTE
NAMEONLY STRING(25) ! USED TO STORE JUST THE NAME WITHOUT THE PATH
NOEXT1 STRING(8)
NOEXT2 STRING(8)
Recptr LONG
Skip_True BYTE
STAT1 BYTE
STAT2 BYTE
SV_PATH STRING(80)
TempVar LONG
TEMP_VAR BYTE
VarTemp LONG
WORKING STRING(81)
DATEFLAG BYTE
SKIPNOTFOUND BYTE
IFILES TABLE
INAME STRING(12)
ISIZE LONG
IDATE STRING(8)
.
DIRGRP GROUP
DIRREC GROUP
BYTE,DIM(21) !USED BY NEXTDIR
ATTRIB BYTE !FILE ATTRIBUTE IN DOS FORMAT
DOSTIME SHORT !FILE TIME IN DOS FORMAT
DOSDATE SHORT !FILE DATE IN DOS FORMAT
DOSSIZE LONG !FILE SIZE IN BYTES
DOSNAME STRING(13) !FILENAME
PORS STRING(9) !PREVIOUS OR SUBDIRECTORY
. .
Directory STRING(64)
FileMask STRING(5)
DIRSTRING STRING(64) !Used for Directory to search
SaveDir STRING(64)
CODE
DO FillTables
LOOP WHILE RECORDS(IFILES)>0
IF KEYBOARD()
ASK
STOP('PAUSED BY KEYPRESS')
.
GET(IFILES,1)
DELETE(IFILES)
IF ISO
DO ISO_ROUTINE
. .
RETURN
ISO_ROUTINE ROUTINE
COMPLIANT=1
LOOP CharPtr=33 TO 44
IF INSTRING(CHR(CharPtr),INAME)
COMPLIANT=0
.
.
IF NOT(COMPLIANT)
GLO:REDIRECT=INAME
LOOP CharPtr=33 TO 44
IF INSTRING(CHR(CharPtr),INAME)
INAME=REPL(INAME,CHR(CharPtr),'_')
.
.
RENAME(REDIRECTED,INAME)
IF ERRORCODE()
STOP('Warning: '&CLIP(GLO:REDIRECT)&' will not be ISO9660 Compliant. Error: '&ERROR())
INAME=GLO:REDIRECT
ELSE
TYPE('<13><10>Renamed '&CLIP(GLO:REDIRECT)&' to '&CLIP(INAME)&' (ISO9660 Compliance)')
.
.
EXIT
FillTables ROUTINE
FREE(IFILES) !Clear the IFILES
DIRSTRING=PATH() & '\*.*' !Set the file mask
SETDIR(DIRSTRING,DIRGRP) !SET PATTERN FOR DIRECTORY
IF ~ERRORCODE()
LOOP ! While entries are found
IF BAND(ATTRIB,10H) = 0 ! If entry is a file
INAME = UPPER(DOSNAME) ! Fill the table field and
ISIZE = DOSSIZE
MONTH# = BAND(DosDate,01E0H) !GET BITS 5 THRU 8 (MONTH)
MONTH# = BSHIFT(MONTH#,-5) !SHIFT RIGHT 5 BITS
DAY# = BAND(DosDate,001FH) !GET BITS 0 THRU 4 (DAY)
YEAR# = BAND(DosDate,0FE00H) !GET BITS 9 THRU 15 (YEAR)
YEAR# = BSHIFT(YEAR#,-9) !SHIFT RIGHT 9 BITS
YEAR# += 80 !ADD YEAR TO BASE OF 1980
IDATE = FORMAT(MONTH#,@P##P)&'-'&FORMAT(DAY#,@P##P)&'-'&FORMAT(YEAR#,@P##P)
ADD(IFILES) ! Add to the IFILES
IF ERRORCODE() THEN BREAK. ! Break if unexpected error
END ! End IF
NEXTDIR(DIRGRP) ! GET A DIRECTORY ENTRY
IF ERRORCODE()
BREAK ! Break if unexpected error
END ! End IF
END ! End LOOP
SORT(IFILES,INAME) !Sort the file listing
END !End IF
DISPLAY
EXIT !Display the new lists
REPL FUNCTION(Z_STRING, Y_STRING, X_STRING)
Z_STRING EXTERNAL
y_STRING EXTERNAL
x_STRING EXTERNAL
! ----------------------------------------------------------------------------
POSN LONG
CODE
POSN = INSTRING(Y_STRING, CLIP(Z_STRING),1)
LOOP WHILE POSN > 0
Z_STRING = SUB(Z_STRING,1,POSN-1) & X_STRING & SUB(Z_STRING,POSN+LEN(Y_STRING),LEN(Z_STRING)-POSN-LEN(Y_STRING)+1)
IF POSN>LEN(CLIP(Z_STRING))
BREAK
.
POSN = INSTRING(Y_STRING, CLIP(Z_STRING),1)
.
RETURN(Z_STRING)