home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / isocheck.zip / ISOCHECK.CLA < prev    next >
Text File  |  1993-06-27  |  10KB  |  267 lines

  1.                  PROGRAM
  2.  
  3. NoAction         EQUATE(0)                       !  No caller action
  4. FormatQueue      EQUATE(1)                       !  Format the display queue
  5. ProcessField     EQUATE(2)                       !  Process another field
  6. NoRecords        EQUATE(3)                       !  No records to display
  7. FilterRecord     EQUATE(4)                       !  Filter a record
  8. ResetFirst       EQUATE(5)                       !  Set to first of a range
  9. ResetLast        EQUATE(6)                       !  Set to last of a range
  10.  
  11. LF_CR            EQUATE('<10,13>')               !Line feed/carriage return
  12. NoError              EQUATE(0)                   ! ''
  13. NoFileErr            EQUATE(02)                  ! 'File Not Found'
  14. NoPathErr            EQUATE(03)                  ! 'Path Not Found'
  15. TooManyErr           EQUATE(04)                  ! 'Too Many Open Files'
  16. NoAccessErr          EQUATE(05)                  ! 'Access Denied'
  17. BadMemErr            EQUATE(07)                  ! 'Memory Corrupted'
  18. NoMemErr             EQUATE(08)                  ! 'Insufficient Memory'
  19. BadDriveErr          EQUATE(15)                  ! 'Invalid Drive'
  20.  
  21. NoEntryErr           EQUATE(30)                  ! 'Entry Not Found'
  22. IsLockedErr          EQUATE(32)                  ! 'File Is Already Locked'
  23. BadRecErr            EQUATE(33)                  ! 'Record Not Available'
  24. NoRecErr             EQUATE(35)                  ! 'Record Not Found'
  25. BadFileErr           EQUATE(36)                  ! 'Invalid Data File'
  26. NotOpenErr           EQUATE(37)                  ! 'File Not Open'
  27. DupKeyErr            EQUATE(40)                  ! 'Creates Duplicate Key'
  28. IsHeldErr            EQUATE(43)                  ! 'Record Is Already Held'
  29. BadNameErr           EQUATE(45)                  ! 'Invalid Filename'
  30. BadKeyErr            EQUATE(46)                  ! 'Key Files must be Rebuilt'
  31. InvalidFile          EQUATE(47)                  ! 'Invalid File Declaration'
  32. BadTranErr           EQUATE(48)                  ! 'Unable to log transaction'
  33. IsOpenErr            EQUATE(52)                  ! 'File Already Open'
  34. NoCreateErr          EQUATE(54)                  ! 'No Create Attribute'
  35. NoShareErr           EQUATE(55)                  ! 'File Must Be Shared'
  36. BadMemoErr           EQUATE(57)                  ! 'Invalid Memo File'
  37. ExclReqErr           EQUATE(63)                  ! 'Exclusive Access Required'
  38. ShareVioErr          EQUATE(64)                  ! 'Sharing Violation'
  39. CantRollErr          EQUATE(65)                  ! 'Unable to rollback transaction'
  40. TypeDescErr          EQUATE(75)                  ! 'Invalid Field Type Descriptor'
  41. BadIndexErr          EQUATE(76)                  ! 'Invalid Index String'
  42. IndexAccess          EQUATE(77)                  ! 'Unable To Access Index'
  43. BadParmErr           EQUATE(78)                  ! 'Invalid Number Of Parameters'
  44.  
  45.              INCLUDE('STD_KEYS.CLA')
  46.              INCLUDE('CTL_KEYS.CLA')
  47.              INCLUDE('ALT_KEYS.CLA')
  48.  
  49. REJECT_KEY   EQUATE(CTRL_ESC)
  50. ACCEPT_KEY   EQUATE(CTRL_ENTER)
  51. TRUE         EQUATE(1)
  52. FALSE        EQUATE(0)
  53.  
  54.  
  55.             MAP
  56.                 FUNC(REPL),STRING                  !!Size is     219
  57.                 MODULE('DOSA'),BINARY
  58.                   FUNC(COMMAND_LINE),STRING
  59.                   PROC(NEXTDIR)
  60.                   PROC(REMOVEDIR)
  61.                   PROC(SETDIR)
  62.                 .                                 !Size is     530
  63.                 END !Area Number  4               !Size is  10,618
  64. ADDDIZ           STRING(1)
  65. ADDMSG           STRING(60)
  66. ADDSPEC          STRING(46)
  67. ADDITIVE         BYTE
  68. SMARTNAME        STRING(64)
  69.   GROUP,PRE(GLO)
  70. Filespec     STRING(80)
  71. SMART        STRING(1)
  72. EXPORT       STRING(64)
  73. REDIRECT     STRING(64)
  74. Message1     STRING(45)
  75. Message2     STRING(45)
  76. Message3     STRING(45)
  77. InsertMsg    STRING('Record will be added {9}')
  78. ChangeMsg    STRING('Record will be changed {7}')
  79. DeleteMsg    STRING('Select OK to delete {10}')
  80. MODE         BYTE
  81. DIR          STRING(60)
  82.    .
  83. DebugMode        BYTE
  84.  
  85. AddRecord        BYTE(1)                         !  Add a new record
  86. ChangeRecord     BYTE(2)                         !  Change the current record
  87. DeleteRecord     BYTE(3)                         !  Delete the current record
  88.  
  89.                  EJECT('File Layouts')
  90. REDIRECTED    DOS,ASCII,PRE(RED),NAME(GLO:REDIRECT)
  91. RECORD             RECORD
  92. SPACE                STRING(1)
  93.                  . .
  94.  
  95. TMP_FNAME STRING(60)
  96. DEL_FNAME STRING(60)
  97. TMPFILE DOS,ASCII,NAME(TMP_FNAME)
  98. TMPRECORD RECORD
  99. TMPDATA STRING(120)
  100.         . .
  101.  
  102. DELFILE DOS,NAME(DEL_FNAME)
  103. DELRECORD RECORD
  104. ASCREC       STRING(255)
  105.         . .
  106.  
  107.  
  108.  
  109. ACTION       SHORT                               !0 = NO ACTION
  110.                                                  !1 = ADD RECORD
  111.                                                  !2 = CHANGE RECORD
  112.                                                  !3 = DELETE RECORD
  113.                                                  !4 = LOOKUP FIELD
  114.                  GROUP,PRE(MEM)
  115. MESSAGE            STRING(30)                    !Global Message Area
  116. PAGE               SHORT                         !Report Page Number
  117. LINE               SHORT                         !Report Line Number
  118. DEVICE             STRING(30)                    !Report Device Name
  119.                  .
  120. SAVE_PATH STRING(80)
  121. REGISTERED BYTE
  122. SAVE_COM STRING(120)
  123. CharPtr      LONG
  124. Counter      LONG
  125. COMPLIANT    BYTE
  126. Filter_On    BYTE
  127. Beta_Off     BYTE
  128. FOUND_IT     BYTE
  129. GONE         STRING(80)
  130. HD           STRING(8)
  131. ISO          BYTE
  132. INGIF        STRING(1)
  133. LIMITS       BYTE
  134. LINE2        STRING(78)
  135. ListNum      LONG
  136. LOADED       BYTE
  137. LONGLINE     STRING(92)
  138. MSGCMD       STRING(132)
  139. Match_True   BYTE
  140. NAMEONLY     STRING(25)  ! USED TO STORE JUST THE NAME WITHOUT THE PATH
  141. NOEXT1       STRING(8)
  142. NOEXT2       STRING(8)
  143. Recptr       LONG
  144. Skip_True    BYTE
  145. STAT1        BYTE
  146. STAT2        BYTE
  147. SV_PATH      STRING(80)
  148. TempVar      LONG
  149. TEMP_VAR     BYTE
  150. VarTemp      LONG
  151. WORKING      STRING(81)
  152. DATEFLAG     BYTE
  153. SKIPNOTFOUND BYTE
  154.  
  155. IFILES       TABLE
  156. INAME        STRING(12)
  157. ISIZE        LONG
  158. IDATE        STRING(8)
  159.              .
  160.  
  161. DIRGRP       GROUP
  162. DIRREC         GROUP
  163.                  BYTE,DIM(21)                    !USED BY NEXTDIR
  164. ATTRIB           BYTE                            !FILE ATTRIBUTE IN DOS FORMAT
  165. DOSTIME          SHORT                           !FILE TIME IN DOS FORMAT
  166. DOSDATE          SHORT                           !FILE DATE IN DOS FORMAT
  167. DOSSIZE          LONG                            !FILE SIZE IN BYTES
  168. DOSNAME          STRING(13)                      !FILENAME
  169. PORS             STRING(9)                       !PREVIOUS OR SUBDIRECTORY
  170.              . .
  171.  
  172. Directory    STRING(64)
  173. FileMask     STRING(5)
  174. DIRSTRING    STRING(64)                           !Used for Directory to search
  175. SaveDir      STRING(64)
  176.  
  177.  
  178.   CODE
  179.   DO FillTables
  180.   LOOP WHILE RECORDS(IFILES)>0
  181.      IF KEYBOARD()
  182.         ASK
  183.         STOP('PAUSED BY KEYPRESS')
  184.      .
  185.      GET(IFILES,1)
  186.      DELETE(IFILES)
  187.      IF ISO
  188.         DO ISO_ROUTINE
  189.   .  .
  190.   RETURN
  191.  
  192. ISO_ROUTINE ROUTINE
  193.    COMPLIANT=1
  194.    LOOP CharPtr=33 TO 44
  195.       IF INSTRING(CHR(CharPtr),INAME)
  196.          COMPLIANT=0
  197.       .
  198.    .
  199.    IF NOT(COMPLIANT)
  200.       GLO:REDIRECT=INAME
  201.       LOOP CharPtr=33 TO 44
  202.          IF INSTRING(CHR(CharPtr),INAME)
  203.             INAME=REPL(INAME,CHR(CharPtr),'_')
  204.          .
  205.       .
  206.       RENAME(REDIRECTED,INAME)
  207.       IF ERRORCODE()
  208.          STOP('Warning: '&CLIP(GLO:REDIRECT)&' will not be ISO9660 Compliant. Error: '&ERROR())
  209.          INAME=GLO:REDIRECT
  210.       ELSE
  211.          TYPE('<13><10>Renamed '&CLIP(GLO:REDIRECT)&' to '&CLIP(INAME)&' (ISO9660 Compliance)')
  212.       .
  213.    .
  214.    EXIT
  215.  
  216.  
  217. FillTables ROUTINE
  218.   FREE(IFILES)                                    !Clear the IFILES
  219.   DIRSTRING=PATH() & '\*.*'                      !Set the file mask
  220.   SETDIR(DIRSTRING,DIRGRP)                       !SET PATTERN FOR DIRECTORY
  221.   IF ~ERRORCODE()
  222.     LOOP                                         ! While entries are found
  223.       IF BAND(ATTRIB,10H) = 0                    !  If entry is a file
  224.         INAME = UPPER(DOSNAME)                           !   Fill the table field and
  225.         ISIZE = DOSSIZE
  226.         MONTH# = BAND(DosDate,01E0H)             !GET BITS 5 THRU 8 (MONTH)
  227.         MONTH# = BSHIFT(MONTH#,-5)               !SHIFT RIGHT 5 BITS
  228.         DAY# = BAND(DosDate,001FH)               !GET BITS 0 THRU 4 (DAY)
  229.         YEAR# = BAND(DosDate,0FE00H)             !GET BITS 9 THRU 15 (YEAR)
  230.         YEAR# = BSHIFT(YEAR#,-9)                 !SHIFT RIGHT 9 BITS
  231.         YEAR# += 80                              !ADD YEAR TO BASE OF 1980
  232.         IDATE = FORMAT(MONTH#,@P##P)&'-'&FORMAT(DAY#,@P##P)&'-'&FORMAT(YEAR#,@P##P)
  233.         ADD(IFILES)                                               !   Add to the IFILES
  234.         IF ERRORCODE() THEN BREAK.               !   Break if unexpected error
  235.       END                                        !  End IF
  236.       NEXTDIR(DIRGRP)                            !  GET A DIRECTORY ENTRY
  237.       IF ERRORCODE()
  238.         BREAK                                    !   Break if unexpected error
  239.       END                                        !  End IF
  240.     END                                          ! End LOOP
  241.     SORT(IFILES,INAME)                            !Sort the file listing
  242.   END                                            !End IF
  243.   DISPLAY
  244.   EXIT                                    !Display the new lists
  245.  
  246.  
  247. REPL FUNCTION(Z_STRING, Y_STRING, X_STRING)
  248.  
  249. Z_STRING EXTERNAL
  250. y_STRING EXTERNAL
  251. x_STRING EXTERNAL
  252. ! ----------------------------------------------------------------------------
  253. POSN   LONG
  254.  
  255.     CODE
  256.  
  257.    POSN = INSTRING(Y_STRING, CLIP(Z_STRING),1)
  258.    LOOP WHILE POSN > 0
  259.       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)
  260.       IF POSN>LEN(CLIP(Z_STRING))
  261.          BREAK
  262.       .
  263.       POSN = INSTRING(Y_STRING, CLIP(Z_STRING),1)
  264.    .
  265.    RETURN(Z_STRING)
  266.  
  267.