Quick tidy up

This commit is contained in:
Iain (Bill) Wiseman 2025-05-05 15:11:06 +12:00
parent 788e96bf08
commit 88debd9475

View File

@ -1,4 +1,4 @@
IDENTIFICATION DIVISION.
IDENTIFICATION DIVISION.
PROGRAM-ID. MP3ID3INFO.
ENVIRONMENT DIVISION.
@ -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,8 +178,17 @@
END-IF
*> Check for invalid Frame Length
IF WS-FRAME-SIZE <= 0
DISPLAY "Invalid WS-FRAME-SIZE" WS-FRAME-SIZE
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.
@ -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.