home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / brokcode.zip / READHD2.EXE / lha / READHDR.CLA < prev    next >
Text File  |  1989-04-13  |  9KB  |  230 lines

  1. READHDR         PROGRAM                !READ CLARION FILE HEADER
  2.  OMIT('** ENDH **')
  3. ╔══════════════╦═══════════════════════════════════════════════════════════════╗
  4. ║ READHDR.CLA  ║ Reads a CLARION file header and displays the Header info and  ║
  5. ║           ║ the Record Descriptors. Also need file "FILEDEF.CPY"           ║
  6. ║ Written By   ║ Greg Wilder  8/11/88                           ║
  7. ║ Revised      ║ 8/15/88 by GSW - added ability to print               ║
  8. ║           ║ 10/30/88 by Russ Eggen - now reports true start locations     ║
  9. ╚══════════════╩═══════════════════════════════════════════════════════════════╝
  10. ** ENDH **
  11.          INCLUDE('FILEDEF.CPY'),LIST    ! CLARION FILE HEADER DEFINITIONS
  12.  
  13.          MAP
  14.            MODULE('READHDR1')        ! PRINT A REPORT TO PRINTER
  15.            PROC(HEADLIST)
  16.          . .
  17.  
  18. F10_KEY         EQUATE(2058)            ! ALERT KEY FOR PRINT REPORT
  19.  
  20. FNAME         STRING(25)                ! Filename
  21. BYPTR         BYTE                ! Misc Pointer
  22. SAVE_PTR     LONG                ! TEMPORARY FILE POINTER STORAGE
  23. BITARR         STRING(1),DIM(8)
  24. BITSTR         STRING(8),OVER(BITARR)
  25. MESSAGE         STRING(30)                ! GLOBAL MESSAGE AREA
  26.  
  27. SCREEN         SCREEN      PRE(SCR),HUE(7,1)
  28.  OMIT('**-END-**')
  29. ╔══════════════════════════ CLARION FILE HEADER INFO ═══════╦══════════════════╗
  30. ║                                ║ F10-PRINT REPORT ║
  31. ║ ENTER FILENAME : ■■■■■■■■■■■■■■■■■■■■■■■■■            ╚══════════════════╣
  32. ╟──────────────────────────────────────────────────────────────────────────────╢
  33. ║    File Signature          #####          Date of Last Change  mm/dd/yy    ║
  34. ║    File Attributes        ■■■■■■■■      Time of Last Change   hh:mmXM    ║
  35. ║    Number of KEYS             ##                           ║
  36. ║    Number of RECORDS          <,<<<,<<#                           ║
  37. ║    Number of DELETES          <,<<<,<<#                           ║
  38. ║    Number of FIELDS          <,<<#             FIELD DESCRIPTOR           ║
  39. ║    Number of PICTURES          <,<<#               <<# of <<#           ║
  40. ║    Number of ARRAYS          <,<<#        ────────────────────────────   ║
  41. ║    Record LENGTH          <,<<#         Name       ■■■■■■■■■■■■■■■■    ║
  42. ║    Start of DATA          <,<<<,<<#         Type       ■■■■■■■           ║
  43. ║    Logical EOF          <,<<<,<<#         Offset       <,<<#           ║
  44. ║    Logical BOF          <,<<<,<<#         Length       <,<<#           ║
  45. ║    1st Usable FreeREC          <,<<<,<<#         Dec Sig   <<#               ║
  46. ║    RECORD Name          ■■■■■■■■■■■■     No of Dec <<#               ║
  47. ║    MEMO Name              ■■■■■■■■■■■■     Array No. <,<<#           ║
  48. ║    FILENAME Prefix          ■■■         Pic No.   <,<<#           ║
  49. ║    RECORD Prefix          ■■■                           ║
  50. ║    Size of Memo          <,<<#                           ║
  51. ║    Column WIDTH of Memo      <,<<#                           ║
  52. ║                             Press any Key           ║
  53. ╚══════════════════════════════════════════════════════════════════════════════╝
  54. **-END-**
  55.  
  56.            ROW(5,30)  PAINT(19,14),HUE(0,7)
  57.            ROW(7,44)  PAINT(17,2),HUE(7,0)
  58.            ROW(24,32) PAINT(1,14),HUE(7,0)
  59.            ROW(5,44)  PAINT(2,33),HUE(0,7)
  60.            ROW(7,46)  PAINT(1,31),HUE(7,0)
  61.            ROW(6,77)  PAINT(2,2),HUE(7,0)
  62.            ROW(9,49)  PAINT(13,28),HUE(7,4)
  63.            ROW(10,77) PAINT(12,2),HUE(7,0)
  64.            ROW(22,51) PAINT(1,28),HUE(7,0)
  65.            ROW(10,54) PAINT(1,16),HUE(14,4)
  66.            ROW(1,1)      STRING('╔═{26}<0{26}>═{7}╦═{18}╗')
  67.            ROW(2,1)      STRING('║<0{59}>║<0{18}>║')
  68.            ROW(3,1)      STRING('║<0{59}>╚═{18}╣')
  69.            ROW(4,1)      STRING('╟─{78}╢')
  70.            ROW(5,1)      REPEAT(20);STRING('║<0{78}>║') .
  71.            ROW(25,1)  STRING('╚═{78}╝')
  72.            ROW(12,49) STRING('─{28}')
  73.            ROW(1,29)  STRING('CLARION FILE HEADER INFO'),HUE(14,1)
  74.            ROW(2,19)  STRING(' '),HUE(11,1)
  75.          COL(62)  STRING(' F10-PRINT REPORT '),HUE(15,4)
  76.            ROW(5,6)      STRING('File Signature'),HUE(11,1)
  77.          COL(47)  STRING('Date of Last Change')
  78.            ROW(6,6)      STRING('File Attributes'),HUE(11,1)
  79.          COL(47)  STRING('Time of Last Change')
  80.            ROW(7,6)      STRING('Number of KEYS'),HUE(11,1)
  81.            ROW(8,6)      STRING('Number of RECORDS'),HUE(11,1)
  82.            ROW(9,6)      STRING('Number of DELETES'),HUE(11,1)
  83.            ROW(10,6)  STRING('Number of FIELDS'),HUE(11,1)
  84.          COL(54)  STRING('FIELD DESCRIPTOR')
  85.            ROW(11,6)  STRING('Number of PICTURES'),HUE(11,1)
  86.          COL(60)  STRING('of')
  87.            ROW(12,6)  STRING('Number of ARRAYS'),HUE(11,1)
  88.            ROW(13,6)  STRING('Record LENGTH'),HUE(11,1)
  89.          COL(50)  STRING('Name')
  90.            ROW(14,6)  STRING('Start of DATA'),HUE(11,1)
  91.          COL(50)  STRING('Type')
  92.            ROW(15,6)  STRING('Logical EOF'),HUE(11,1)
  93.          COL(50)  STRING('Offset')
  94.            ROW(16,6)  STRING('Logical BOF'),HUE(11,1)
  95.          COL(50)  STRING('Length')
  96.            ROW(17,6)  STRING('1st Usable FreeREC'),HUE(11,1)
  97.          COL(50)  STRING('Dec Sig')
  98.            ROW(18,6)  STRING('RECORD Name'),HUE(11,1)
  99.          COL(50)  STRING('No of Dec')
  100.            ROW(19,6)  STRING('MEMO Name'),HUE(11,1)
  101.          COL(50)  STRING('Array No.')
  102.            ROW(20,6)  STRING('FILENAME Prefix'),HUE(11,1)
  103.          COL(50)  STRING('Pic No.')
  104.            ROW(21,6)  STRING('RECORD Prefix'),HUE(11,1)
  105.            ROW(22,6)  STRING('Size of Memo'),HUE(11,1)
  106.            ROW(23,6)  STRING('Column WIDTH of Memo'),HUE(11,1)
  107.            ROW(24,57) STRING(' Press any Key '),HUE(15,4)
  108.            ROW(3,3)      STRING('ENTER FILENAME :'),HUE(11,1)
  109.          COL(20)  ENTRY(@S25),USE(FNAME),SEL(15,0),INS,REQ,IMM,LFT
  110. FILESIG           ROW(5,35)  STRING(@p#####p),HUE(0,7)
  111. BITSTR           ROW(6,33)  STRING(8),HUE(0,7)
  112. NUMBKEYS       ROW(7,38)  STRING(@p##p),HUE(0,7)
  113. NUMRECS           ROW(8,31)  STRING(@N9),HUE(0,7)
  114. NUMDELS           ROW(9,31)  STRING(@N9),HUE(0,7)
  115. NUMFLDS           ROW(10,35) STRING(@N5),HUE(0,7)
  116. NUMPICS           ROW(11,35) STRING(@N5),HUE(0,7)
  117. NUMARRS           ROW(12,35) STRING(@N5),HUE(0,7)
  118. RECLEN           ROW(13,35) STRING(@N5),HUE(0,7)
  119. OFFSET           ROW(14,31) STRING(@N9),HUE(0,7)
  120. LOGEOF           ROW(15,31) STRING(@N9),HUE(0,7)
  121. LOGBOF           ROW(16,31) STRING(@N9),HUE(0,7)
  122. FREEREC           ROW(17,31) STRING(@N9),HUE(0,7)
  123. RECNAM           ROW(18,31) STRING(12),HUE(0,7)
  124. MEMNAM           ROW(19,31) STRING(12),HUE(0,7)
  125. FILPRE           ROW(20,31) STRING(3),HUE(0,7)
  126. RECPRE           ROW(21,31) STRING(3),HUE(0,7)
  127. MEMOLEN           ROW(22,35) STRING(@N5),HUE(0,7)
  128. MEMOWID           ROW(23,35) STRING(@N5),HUE(0,7)
  129. CHGDATE           ROW(5,68)  STRING(@D1),HUE(0,7)
  130. CHGTIME           ROW(6,69)  STRING(@T3),HUE(0,7)
  131. DESCNO           ROW(11,56) STRING(@N3),HUE(0,7)
  132. NUMFLDS1     COL(63)  STRING(@N3),HUE(0,7)
  133. FLDTYPE           ROW(14,60) STRING(7),HUE(0,7)
  134. FLDNAME           ROW(13,60) STRING(16),HUE(0,7)
  135. FOFFSET           ROW(15,60) STRING(@N5),HUE(0,7)
  136. LENGTH           ROW(16,60) STRING(@N5),HUE(0,7)
  137. DECSIG           ROW(17,60) STRING(@N3),HUE(0,7)
  138. DECDEC           ROW(18,60) STRING(@N3),HUE(0,7)
  139. ARRNUM           ROW(19,60) STRING(@N5),HUE(0,7)
  140. PICNUM           ROW(20,60) STRING(@N5),HUE(0,7)
  141.          .
  142.  CODE
  143.    OPEN(SCREEN)                     ! Display screen
  144.  
  145. GETFNAME                     ! Get Clarion Filename
  146.    ACCEPT
  147.    OPEN(FILEHEAD)                 ! File NOT Found...
  148.    IF ERRORCODE()=2 THEN
  149.       BEEP
  150.       SELECT(1)
  151.       GOTO GETFNAME
  152.    .
  153.  
  154.    GET(FILEHEAD,1)                 ! read header
  155.  
  156.    SCR:FILESIG    =  FHE:FILESIG
  157.    SCR:NUMBKEYS =  FHE:NUMBKEYS
  158.    SCR:NUMRECS    =  FHE:NUMRECS
  159.    SCR:NUMDELS    =  FHE:NUMDELS
  160.    SCR:NUMFLDS    =  FHE:NUMFLDS
  161.    SCR:NUMFLDS1 =  FHE:NUMFLDS
  162.    SCR:NUMPICS    =  FHE:NUMPICS
  163.    SCR:NUMARRS    =  FHE:NUMARRS
  164.    SCR:RECLEN    =  FHE:RECLEN
  165.    SCR:OFFSET    =  FHE:OFFSET + 5         ! ADD 5 BYTES TO OFFSET
  166.    SCR:LOGEOF    =  FHE:LOGEOF
  167.    SCR:LOGBOF    =  FHE:LOGBOF
  168.    SCR:FREEREC    =  FHE:FREEREC
  169.    SCR:RECNAM    =  FHE:RECNAM
  170.    SCR:MEMNAM    =  FHE:MEMNAM
  171.    SCR:FILPRE    =  FHE:FILPRE
  172.    SCR:RECPRE    =  FHE:RECPRE
  173.    SCR:MEMOLEN    =  FHE:MEMOLEN
  174.    SCR:MEMOWID    =  FHE:MEMOWID
  175.    SCR:CHGDATE    =  FHE:CHGDATE
  176.    SCR:CHGTIME    =  FHE:CHGTIME
  177.  
  178.    LOOP BYPTR = 1 TO 8                 ! File Attributes
  179.     FHE:SFATR=BSHIFT(FHE:SFATR,-1)
  180.     IF BAND(FHE:SFATR,01H) THEN BITARR[BYPTR]='1'
  181.     ELSE BITARR[BYPTR]='0'.
  182.    .
  183.    SCR:BITSTR = BITSTR
  184.  
  185.   CLOSE(FILEHEAD)                 ! Close Header Part
  186.  
  187. !══════════════════ NOW PROCESS THE RECORD DESCRIPTORS ═════════════════════════
  188.   OPEN(RECHEAD)                     ! open again for Rec Descript
  189.   SET(RECHEAD,86)                 ! Start at byte 86
  190.   BYPTR=1
  191.   ALERT(F10_KEY)                 ! Alert for Print Report
  192.                          ! Do for No. of Fields
  193.   LOOP FHE:NUMFLDS TIMES
  194.     NEXT(RECHEAD)
  195.     SCR:DESCNO    =  BYPTR
  196.     scr:fldname =  rhe:fldname
  197.     scr:foffset =  rhe:foffset + 1         ! ADD 1 BYTE TO REPORT TRUE
  198.                          ! OFFSET
  199.     scr:length    =  rhe:length
  200.     scr:decsig    =  rhe:decsig
  201.     scr:decdec    =  rhe:decdec
  202.     scr:arrnum    =  rhe:arrnum
  203.     scr:picnum    =  rhe:picnum
  204.  
  205.     EXECUTE RHE:FLDTYPE                 ! Display Field Type of ...
  206.       SCR:FLDTYPE='LONG   '             ! 1
  207.       SCR:FLDTYPE='REAL   '             ! 2
  208.       SCR:FLDTYPE='STRING '             ! 3
  209.       SCR:FLDTYPE='PICTURE'             ! 4
  210.       SCR:FLDTYPE='BYTE   '             ! 5
  211.       SCR:FLDTYPE='SHORT  '             ! 6
  212.       SCR:FLDTYPE='GROUP  '             ! 7
  213.       SCR:FLDTYPE='DECIMAL'             ! 8
  214.     .
  215.  
  216.     ASK                         ! Pause Between Rec Descripts
  217.  
  218.     IF KEYCODE()=F10_KEY THEN             ! HOT KEY TO THE REPORT
  219.        SAVE_PTR=POINTER(RECHEAD)         ! SAVE CURRENT LOCATION
  220.        HEADLIST                     ! PRINT THE REPORT
  221.        SET(RECHEAD,SAVE_PTR)             ! RESTORE THE POINTER
  222.        NEXT(RECHEAD)                 ! POINT TO THE NEXT RECORD
  223.        ASK                     ! PAUSE
  224.     .
  225.     BYPTR+=1
  226.   .
  227.  
  228.  RETURN
  229.  
  230.