Quick tidy up
This commit is contained in:
parent
788e96bf08
commit
88debd9475
64
id3cobol.cbl
64
id3cobol.cbl
@ -13,7 +13,6 @@
|
||||
01 FILE-RECORD PIC X(1).
|
||||
|
||||
WORKING-STORAGE SECTION.
|
||||
01 RecordLength PIC 9(5) COMP-5.
|
||||
*> Debug flag to enable/disable debug prints
|
||||
01 WS-DEBUG-MODE PIC 9 VALUE 1.
|
||||
|
||||
@ -21,14 +20,18 @@
|
||||
01 WS-EOF-FLAG PIC 9 VALUE 0.
|
||||
88 WS-EOF VALUE 1.
|
||||
|
||||
*> ID3v2 Header Structure - Use simpler types for debugging
|
||||
*> Add a stop flag for zero-length frames
|
||||
01 STOP-READING-FLAG PIC 9 VALUE 0.
|
||||
88 STOP-READING VALUE 1.
|
||||
|
||||
*> ID3v2 Header Structure
|
||||
01 ID3-HEADER.
|
||||
05 ID3-TAG PIC X(3). *> Should be "ID3"
|
||||
05 ID3-VERSION PIC X(2). *> Version (ID3v2.X)
|
||||
05 ID3-FLAGS PIC X(1). *> Flags
|
||||
05 ID3-SIZE PIC X(4). *> Sync-safe size
|
||||
|
||||
*> Frame Structure - Explicitly define each element for debugger
|
||||
*> Frame Structure
|
||||
01 ID3-FRAME-HEADER.
|
||||
05 ID3-FRAME-ID PIC X(4). *> Frame identifier
|
||||
05 ID3-FRAME-SIZE PIC X(4). *> Sync-safe frame size
|
||||
@ -50,19 +53,8 @@
|
||||
*> Variables for sync-safe integer conversion
|
||||
01 WS-BYTE PIC X OCCURS 4.
|
||||
01 WS-BYTE-VAL PIC 9(3) COMP-5 OCCURS 4.
|
||||
01 WS-SHIFT-RESULT PIC 9(9) COMP-5 OCCURS 4.
|
||||
01 WS-X-RESULT PIC 9(9) COMP-5 OCCURS 4.
|
||||
01 WS-Y-RESULT PIC 9(9).
|
||||
|
||||
01 WS-NUMBER PIC 9(5) VALUE 21154.
|
||||
01 WS-DIVIDEND PIC 9(5).
|
||||
|
||||
01 WS-BYTE-FIELD.
|
||||
05 WS-IW-BYTE-0 PIC X(1).
|
||||
05 WS-IW-BYTE-1 PIC X(1).
|
||||
05 WS-IW-BYTE-2 PIC X(1).
|
||||
05 WS-IW-BYTE-3 PIC X(1).
|
||||
|
||||
*> Variables for sync-safe integer conversion
|
||||
01 SYNC-SAFE-INT-IN.
|
||||
05 SYNC-SAFE-INT-1 PIC X(1).
|
||||
05 SYNC-SAFE-INT-2 PIC X(1).
|
||||
@ -71,11 +63,7 @@
|
||||
|
||||
01 SYNC-SAFE-INT-OUT PIC 9(9) COMP-5.
|
||||
|
||||
*> Debug display variables - explicit single items for easier debugging
|
||||
01 DBG-FRAME-SIZE PIC 9(9) COMP-5.
|
||||
01 DBG-ASCII-ID PIC X(4).
|
||||
01 DBG-LOOP-COUNT PIC 9(5) COMP-5.
|
||||
|
||||
*> Variables for zero-based ORD function
|
||||
01 WS-TEMP-CHAR PIC X(1).
|
||||
01 WS-ORD-RESULT PIC 9(5) COMP-5.
|
||||
|
||||
@ -83,11 +71,6 @@
|
||||
01 BYTES-BUFFER PIC X(100000).
|
||||
01 WS-TEMP-BYTE PIC X(1).
|
||||
|
||||
01 WS-SHIFT-21 PIC 9(7) COMP-5 VALUE 2097152.
|
||||
01 WS-SHIFT-14 PIC 9(7) COMP-5 VALUE 16384.
|
||||
01 WS-SHIFT-7 PIC 9(7) COMP-5 VALUE 128.
|
||||
01 WS-SHIFT-0 PIC 9(7) COMP-5 VALUE 1.
|
||||
|
||||
01 WS-VAL PIC 9(7).
|
||||
01 WS-NEW-VAL PIC 9(7).
|
||||
|
||||
@ -149,17 +132,17 @@
|
||||
END-IF
|
||||
|
||||
MOVE 10 TO WS-FILE-POS. *> 10 bytes read so far (header)
|
||||
MOVE 0 TO STOP-READING-FLAG. *> Reset the stop reading flag
|
||||
|
||||
*> Debug line with explicit break opportunity
|
||||
DISPLAY "Starting to read frames at position " WS-FILE-POS.
|
||||
|
||||
PERFORM READ-FRAMES
|
||||
UNTIL (WS-FILE-POS >= WS-TAG-SIZE + 10) OR WS-EOF.
|
||||
UNTIL (WS-FILE-POS >= WS-TAG-SIZE + 10) OR
|
||||
WS-EOF OR
|
||||
STOP-READING.
|
||||
|
||||
READ-FRAMES.
|
||||
*> Debug counter for frame reading
|
||||
ADD 1 TO DBG-LOOP-COUNT
|
||||
|
||||
*> Reset values
|
||||
MOVE LOW-VALUES TO ID3-FRAME-HEADER.
|
||||
MOVE 0 TO WS-FRAME-SIZE.
|
||||
@ -169,6 +152,15 @@
|
||||
PERFORM READ-BYTES
|
||||
MOVE BYTES-BUFFER(1:10) TO ID3-FRAME-HEADER
|
||||
|
||||
*> Check for all null bytes - this is definitely padding
|
||||
IF ID3-FRAME-ID = LOW-VALUES
|
||||
DISPLAY "****************************************"
|
||||
DISPLAY "Found padding (all nulls) - stopping frame reading"
|
||||
DISPLAY "****************************************"
|
||||
MOVE 1 TO STOP-READING-FLAG
|
||||
EXIT PARAGRAPH
|
||||
END-IF.
|
||||
|
||||
*> Update file position
|
||||
ADD 10 TO WS-FILE-POS.
|
||||
DISPLAY "Current position: " WS-FILE-POS.
|
||||
@ -186,11 +178,20 @@
|
||||
END-IF
|
||||
|
||||
*> Check for invalid Frame Length
|
||||
IF WS-FRAME-SIZE <= 0
|
||||
IF WS-FRAME-SIZE < 0
|
||||
DISPLAY "Invalid WS-FRAME-SIZE " WS-FRAME-SIZE
|
||||
EXIT PARAGRAPH
|
||||
END-IF.
|
||||
|
||||
*> Check for zero Frame Length - set stop flag and exit
|
||||
IF WS-FRAME-SIZE = 0
|
||||
DISPLAY "****************************************"
|
||||
DISPLAY "Frame length zero - stopping frame reading"
|
||||
DISPLAY "****************************************"
|
||||
MOVE 1 TO STOP-READING-FLAG
|
||||
EXIT PARAGRAPH
|
||||
END-IF.
|
||||
|
||||
*> Check for buffer overrun
|
||||
IF WS-FRAME-SIZE > 100000
|
||||
DISPLAY "Frame too large to process: " WS-FRAME-SIZE
|
||||
@ -231,7 +232,8 @@
|
||||
END-READ
|
||||
MOVE WS-TEMP-BYTE TO WS-FRAME-CHAR(WS-I)
|
||||
ELSE
|
||||
DISPLAY "WARNING: Index " WS-I " out of bounds (1-100000)"
|
||||
DISPLAY "WARNING: Index " WS-I
|
||||
" out of bounds (1-100000)"
|
||||
EXIT PERFORM
|
||||
END-IF
|
||||
END-PERFORM.
|
||||
|
Loading…
x
Reference in New Issue
Block a user