The LABEL clause represents fundamental file identification and volume management specifications within COBOL file processing environments, providing sophisticated label handling capabilities that enable proper file recognition, volume tracking, and storage media management across mainframe systems. These label specifications embody traditional storage management principles by supporting standard IBM tape labels, custom label processing routines, and unlabeled file handling while maintaining compatibility with legacy systems, ensuring proper file identification, and facilitating comprehensive volume management across enterprise applications requiring robust file processing, reliable storage handling, and compliant data management with optimized performance characteristics and standardized identification protocols.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556*> FD section LABEL clause syntax FD file-name LABEL RECORDS ARE [STANDARD | OMITTED | user-defined-name] [BLOCK CONTAINS integer RECORDS] [RECORD CONTAINS integer CHARACTERS] [DATA RECORDS ARE record-name]. *> Standard tape labels (most common) FD TAPE-FILE LABEL RECORDS ARE STANDARD BLOCK CONTAINS 100 RECORDS RECORD CONTAINS 80 CHARACTERS DATA RECORDS ARE TAPE-RECORD. *> Unlabeled files (no label processing) FD UNLABELED-FILE LABEL RECORDS ARE OMITTED RECORD CONTAINS 120 CHARACTERS DATA RECORDS ARE UNLABELED-RECORD. *> User-defined label processing FD CUSTOM-LABEL-FILE LABEL RECORDS ARE USER-LABEL-ROUTINE RECORD CONTAINS 200 CHARACTERS DATA RECORDS ARE CUSTOM-RECORD. *> Disk files (usually OMITTED in modern systems) FD DISK-FILE LABEL RECORDS ARE OMITTED RECORD CONTAINS 100 CHARACTERS DATA RECORDS ARE DISK-RECORD. *> Legacy system examples FD MASTER-TAPE LABEL RECORDS ARE STANDARD BLOCK CONTAINS 50 RECORDS RECORD CONTAINS 150 CHARACTERS DATA RECORDS ARE MASTER-RECORD. FD BACKUP-TAPE LABEL RECORDS ARE STANDARD BLOCK CONTAINS 0 RECORDS *> System-determined blocking RECORD CONTAINS 500 CHARACTERS DATA RECORDS ARE BACKUP-RECORD. *> FILE-CONTROL with LABEL considerations SELECT TAPE-INPUT ASSIGN TO "INPUT.TAPE" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-TAPE-STATUS. *> Corresponding FD with LABEL FD TAPE-INPUT LABEL RECORDS ARE STANDARD BLOCK CONTAINS 10 RECORDS DATA RECORDS ARE INPUT-RECORD.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515IDENTIFICATION DIVISION. PROGRAM-ID. LABEL-DEMONSTRATION. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. *> Standard labeled tape input SELECT TRANSACTION-TAPE ASSIGN TO "TRANS.TAPE" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-TRANS-STATUS. *> Standard labeled tape output SELECT BACKUP-TAPE ASSIGN TO "BACKUP.TAPE" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-BACKUP-STATUS. *> Unlabeled work file SELECT WORK-FILE ASSIGN TO "WORK.FILE" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-WORK-STATUS. *> Master file with standard labels SELECT CUSTOMER-MASTER ASSIGN TO "CUSTMAST.TAPE" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-MASTER-STATUS. *> Report output (typically unlabeled) SELECT REPORT-FILE ASSIGN TO "REPORT.OUTPUT" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-REPORT-STATUS. DATA DIVISION. FILE SECTION. *> Transaction tape with standard labels FD TRANSACTION-TAPE LABEL RECORDS ARE STANDARD BLOCK CONTAINS 100 RECORDS RECORD CONTAINS 80 CHARACTERS DATA RECORDS ARE TRANSACTION-RECORD. 01 TRANSACTION-RECORD. 05 TRANS-ID PIC X(10). 05 TRANS-DATE PIC 9(8). 05 TRANS-AMOUNT PIC S9(10)V99. 05 TRANS-TYPE PIC X(5). 05 TRANS-ACCOUNT PIC X(15). 05 TRANS-DESCRIPTION PIC X(30). *> Backup tape with standard labels and large blocks FD BACKUP-TAPE LABEL RECORDS ARE STANDARD BLOCK CONTAINS 0 RECORDS *> System-determined optimal blocking RECORD CONTAINS 500 CHARACTERS DATA RECORDS ARE BACKUP-RECORD. 01 BACKUP-RECORD. 05 BACKUP-HEADER. 10 BACKUP-DATE PIC 9(8). 10 BACKUP-TIME PIC 9(6). 10 BACKUP-SEQ PIC 9(6). 05 BACKUP-DATA PIC X(480). *> Work file without labels (temporary processing) FD WORK-FILE LABEL RECORDS ARE OMITTED RECORD CONTAINS 120 CHARACTERS DATA RECORDS ARE WORK-RECORD. 01 WORK-RECORD. 05 WORK-KEY PIC X(15). 05 WORK-DATA PIC X(100). 05 WORK-FLAGS PIC X(5). *> Customer master with standard tape labels FD CUSTOMER-MASTER LABEL RECORDS ARE STANDARD BLOCK CONTAINS 50 RECORDS RECORD CONTAINS 200 CHARACTERS DATA RECORDS ARE CUSTOMER-RECORD. 01 CUSTOMER-RECORD. 05 CUST-ID PIC X(10). 05 CUST-NAME PIC X(40). 05 CUST-ADDRESS PIC X(60). 05 CUST-PHONE PIC X(15). 05 CUST-CREDIT-INFO. 10 CUST-CREDIT-LIMIT PIC 9(8)V99. 10 CUST-BALANCE PIC S9(8)V99. 10 CUST-LAST-PAYMENT PIC 9(8). 05 CUST-STATUS PIC X(10). 05 FILLER PIC X(47). *> Report file (typically no labels needed) FD REPORT-FILE LABEL RECORDS ARE OMITTED RECORD CONTAINS 132 CHARACTERS DATA RECORDS ARE REPORT-LINE. 01 REPORT-LINE PIC X(132). WORKING-STORAGE SECTION. *> File status fields 01 WS-FILE-STATUS-FIELDS. 05 WS-TRANS-STATUS PIC X(2). 05 WS-BACKUP-STATUS PIC X(2). 05 WS-WORK-STATUS PIC X(2). 05 WS-MASTER-STATUS PIC X(2). 05 WS-REPORT-STATUS PIC X(2). *> Volume and label information 01 WS-VOLUME-INFO. 05 WS-CURRENT-VOLUME PIC X(6). 05 WS-VOLUME-COUNT PIC 9(3) VALUE 1. 05 WS-VOLUME-SEQUENCE PIC 9(3) VALUE 1. 05 WS-DATASET-NAME PIC X(44). 05 WS-CREATION-DATE PIC 9(8). *> Processing counters 01 WS-COUNTERS. 05 WS-TRANS-COUNT PIC 9(8) VALUE 0. 05 WS-BACKUP-COUNT PIC 9(8) VALUE 0. 05 WS-MASTER-COUNT PIC 9(8) VALUE 0. 05 WS-ERROR-COUNT PIC 9(6) VALUE 0. 05 WS-VOLUME-CHANGES PIC 9(3) VALUE 0. *> Label processing flags 01 WS-LABEL-FLAGS. 05 WS-LABEL-CHECK-FLAG PIC X VALUE 'Y'. 05 WS-VOLUME-CHECK-FLAG PIC X VALUE 'Y'. 05 WS-END-OF-VOLUME PIC X VALUE 'N'. 05 WS-MULTI-VOLUME PIC X VALUE 'N'. *> Date and time fields for labeling 01 WS-CURRENT-DATE-TIME. 05 WS-CURRENT-DATE PIC 9(8). 05 WS-CURRENT-TIME PIC 9(6). 05 WS-DATE-FORMATTED PIC X(10). PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM INITIALIZE-PROCESSING PERFORM DEMONSTRATE-STANDARD-LABELS PERFORM DEMONSTRATE-OMITTED-LABELS PERFORM DEMONSTRATE-MULTI-VOLUME-PROCESSING PERFORM DEMONSTRATE-BACKUP-OPERATIONS PERFORM DEMONSTRATE-LABEL-ERROR-HANDLING PERFORM CLEANUP-PROCESSING STOP RUN. INITIALIZE-PROCESSING. DISPLAY "=== LABEL PROCESSING DEMONSTRATION ===" *> Get current date/time for labeling MOVE FUNCTION CURRENT-DATE TO WS-CURRENT-DATE-TIME MOVE WS-CURRENT-DATE TO WS-CREATION-DATE DISPLAY "Processing started: " WS-CURRENT-DATE " " WS-CURRENT-TIME DISPLAY "Volume information will be tracked" DISPLAY SPACES. DEMONSTRATE-STANDARD-LABELS. DISPLAY "=== STANDARD LABEL PROCESSING ===" *> Open files with standard labels OPEN INPUT TRANSACTION-TAPE IF WS-TRANS-STATUS = "00" DISPLAY "Transaction tape opened with standard labels" MOVE "VOL001" TO WS-CURRENT-VOLUME DISPLAY "Current volume: " WS-CURRENT-VOLUME ELSE DISPLAY "Error opening transaction tape: " WS-TRANS-STATUS PERFORM LABEL-ERROR-ANALYSIS END-IF OPEN INPUT CUSTOMER-MASTER IF WS-MASTER-STATUS = "00" DISPLAY "Customer master opened with standard labels" ELSE DISPLAY "Error opening customer master: " WS-MASTER-STATUS PERFORM LABEL-ERROR-ANALYSIS END-IF *> Process some records to demonstrate label handling PERFORM READ-TRANSACTION-RECORDS PERFORM READ-CUSTOMER-RECORDS CLOSE TRANSACTION-TAPE CLOSE CUSTOMER-MASTER DISPLAY "Standard label files processed successfully" DISPLAY SPACES. READ-TRANSACTION-RECORDS. DISPLAY "Reading transaction records with label validation..." PERFORM UNTIL WS-TRANS-STATUS = "10" OR WS-TRANS-COUNT >= 10 READ TRANSACTION-TAPE AT END DISPLAY "End of transaction tape reached" NOT AT END ADD 1 TO WS-TRANS-COUNT DISPLAY "Transaction " WS-TRANS-COUNT ": " TRANS-ID " $" TRANS-AMOUNT *> Check for volume changes (status code "04") IF WS-TRANS-STATUS = "04" PERFORM HANDLE-VOLUME-CHANGE END-IF END-READ END-PERFORM DISPLAY "Transactions processed: " WS-TRANS-COUNT. READ-CUSTOMER-RECORDS. DISPLAY "Reading customer master records..." PERFORM UNTIL WS-MASTER-STATUS = "10" OR WS-MASTER-COUNT >= 5 READ CUSTOMER-MASTER AT END DISPLAY "End of customer master reached" NOT AT END ADD 1 TO WS-MASTER-COUNT DISPLAY "Customer " WS-MASTER-COUNT ": " CUST-ID " " CUST-NAME DISPLAY " Balance: $" CUST-BALANCE " Limit: $" CUST-CREDIT-LIMIT END-READ END-PERFORM DISPLAY "Customer records processed: " WS-MASTER-COUNT. DEMONSTRATE-OMITTED-LABELS. DISPLAY "=== OMITTED LABEL PROCESSING ===" *> Open unlabeled work file OPEN OUTPUT WORK-FILE IF WS-WORK-STATUS = "00" DISPLAY "Work file opened (no labels)" ELSE DISPLAY "Error opening work file: " WS-WORK-STATUS END-IF *> Write some work records PERFORM WRITE-WORK-RECORDS CLOSE WORK-FILE *> Reopen for input to verify OPEN INPUT WORK-FILE IF WS-WORK-STATUS = "00" DISPLAY "Work file reopened for verification" PERFORM READ-WORK-RECORDS END-IF CLOSE WORK-FILE DISPLAY "Unlabeled file processing completed" DISPLAY SPACES. WRITE-WORK-RECORDS. DISPLAY "Writing work records (no label overhead)..." PERFORM VARYING WS-TRANS-COUNT FROM 1 BY 1 UNTIL WS-TRANS-COUNT > 5 MOVE WS-TRANS-COUNT TO WORK-KEY(1:5) MOVE "TEMP DATA " TO WORK-DATA(1:10) MOVE WS-TRANS-COUNT TO WORK-DATA(11:5) MOVE "TEMP" TO WORK-FLAGS WRITE WORK-RECORD INVALID KEY DISPLAY "Error writing work record: " WS-TRANS-COUNT ADD 1 TO WS-ERROR-COUNT NOT INVALID KEY DISPLAY "Work record written: " WORK-KEY END-WRITE END-PERFORM. READ-WORK-RECORDS. DISPLAY "Verifying work records..." MOVE 0 TO WS-TRANS-COUNT PERFORM UNTIL WS-WORK-STATUS = "10" READ WORK-FILE AT END DISPLAY "End of work file reached" NOT AT END ADD 1 TO WS-TRANS-COUNT DISPLAY "Work record " WS-TRANS-COUNT ": " WORK-KEY " " WORK-FLAGS END-READ END-PERFORM. DEMONSTRATE-MULTI-VOLUME-PROCESSING. DISPLAY "=== MULTI-VOLUME PROCESSING ===" *> Simulate multi-volume tape processing MOVE "Y" TO WS-MULTI-VOLUME MOVE 1 TO WS-VOLUME-SEQUENCE PERFORM UNTIL WS-VOLUME-SEQUENCE > 3 DISPLAY "Processing volume " WS-VOLUME-SEQUENCE " of multi-volume set" *> Simulate volume processing PERFORM PROCESS-CURRENT-VOLUME ADD 1 TO WS-VOLUME-SEQUENCE ADD 1 TO WS-VOLUME-CHANGES IF WS-VOLUME-SEQUENCE <= 3 DISPLAY "Volume change detected - mounting next volume" PERFORM HANDLE-VOLUME-CHANGE END-IF END-PERFORM DISPLAY "Multi-volume processing completed" DISPLAY "Total volume changes: " WS-VOLUME-CHANGES DISPLAY SPACES. PROCESS-CURRENT-VOLUME. DISPLAY " Processing records on volume " WS-VOLUME-SEQUENCE DISPLAY " Volume label verification passed" DISPLAY " Data integrity check completed" *> Simulate some processing MOVE WS-VOLUME-SEQUENCE TO WS-CURRENT-VOLUME(4:3) DISPLAY " Current volume ID: VOL" WS-CURRENT-VOLUME(4:3). HANDLE-VOLUME-CHANGE. DISPLAY "*** VOLUME CHANGE DETECTED ***" DISPLAY "Previous volume: " WS-CURRENT-VOLUME ADD 1 TO WS-VOLUME-COUNT MOVE WS-VOLUME-COUNT TO WS-CURRENT-VOLUME(4:3) DISPLAY "New volume: VOL" WS-CURRENT-VOLUME(4:3) DISPLAY "Verifying volume label..." DISPLAY "Volume label verification successful" MOVE "N" TO WS-END-OF-VOLUME. DEMONSTRATE-BACKUP-OPERATIONS. DISPLAY "=== BACKUP OPERATIONS WITH LABELS ===" *> Create backup with standard labels OPEN OUTPUT BACKUP-TAPE IF WS-BACKUP-STATUS = "00" DISPLAY "Backup tape opened with standard labels" DISPLAY "Dataset name: BACKUP.DAILY." WS-CREATION-DATE ELSE DISPLAY "Error opening backup tape: " WS-BACKUP-STATUS GO TO BACKUP-ERROR-EXIT END-IF *> Write backup header PERFORM WRITE-BACKUP-HEADER *> Simulate backing up data PERFORM WRITE-BACKUP-DATA CLOSE BACKUP-TAPE DISPLAY "Backup completed with " WS-BACKUP-COUNT " records" DISPLAY SPACES. BACKUP-ERROR-EXIT. DISPLAY "Backup operation aborted due to errors" ADD 1 TO WS-ERROR-COUNT. WRITE-BACKUP-HEADER. MOVE WS-CREATION-DATE TO BACKUP-DATE MOVE WS-CURRENT-TIME TO BACKUP-TIME MOVE 1 TO BACKUP-SEQ MOVE "HEADER: DAILY BACKUP OPERATION" TO BACKUP-DATA(1:30) WRITE BACKUP-RECORD INVALID KEY DISPLAY "Error writing backup header" ADD 1 TO WS-ERROR-COUNT NOT INVALID KEY ADD 1 TO WS-BACKUP-COUNT DISPLAY "Backup header written successfully" END-WRITE. WRITE-BACKUP-DATA. DISPLAY "Writing backup data records..." PERFORM VARYING WS-TRANS-COUNT FROM 1 BY 1 UNTIL WS-TRANS-COUNT > 10 MOVE WS-CREATION-DATE TO BACKUP-DATE MOVE WS-CURRENT-TIME TO BACKUP-TIME ADD 1 TO BACKUP-SEQ STRING "DATA RECORD " WS-TRANS-COUNT " FOR BACKUP OPERATION" DELIMITED BY SIZE INTO BACKUP-DATA WRITE BACKUP-RECORD INVALID KEY DISPLAY "Error writing backup record: " WS-TRANS-COUNT ADD 1 TO WS-ERROR-COUNT NOT INVALID KEY ADD 1 TO WS-BACKUP-COUNT END-WRITE END-PERFORM DISPLAY "Backup data records written: " WS-BACKUP-COUNT. DEMONSTRATE-LABEL-ERROR-HANDLING. DISPLAY "=== LABEL ERROR HANDLING ===" *> Demonstrate various label-related error scenarios PERFORM HANDLE-WRONG-VOLUME-ERROR PERFORM HANDLE-LABEL-READ-ERROR PERFORM HANDLE-DATASET-NOT-FOUND. HANDLE-WRONG-VOLUME-ERROR. DISPLAY "Simulating wrong volume mounted error..." DISPLAY "Expected volume: VOL001" DISPLAY "Mounted volume: VOL999" DISPLAY "Action: Request correct volume mount" DISPLAY "Status: Volume verification failed". HANDLE-LABEL-READ-ERROR. DISPLAY "Simulating label read error..." DISPLAY "Label format: Invalid or corrupted" DISPLAY "Action: Check tape condition and retry" DISPLAY "Alternative: Use label recovery procedures". HANDLE-DATASET-NOT-FOUND. DISPLAY "Simulating dataset not found on volume..." DISPLAY "Requested dataset: PROD.MASTER.DATA" DISPLAY "Volume contents: Different dataset" DISPLAY "Action: Verify dataset name and volume". LABEL-ERROR-ANALYSIS. DISPLAY "Analyzing label-related error..." EVALUATE WS-TRANS-STATUS WHEN "90" DISPLAY "File not found - check dataset name" WHEN "92" DISPLAY "Wrong volume mounted" WHEN "93" DISPLAY "Dataset not on this volume" WHEN "94" DISPLAY "Label format error" WHEN "95" DISPLAY "Volume not initialized" WHEN OTHER DISPLAY "Other file status error: " WS-TRANS-STATUS END-EVALUATE ADD 1 TO WS-ERROR-COUNT. CLEANUP-PROCESSING. DISPLAY "=== PROCESSING SUMMARY ===" DISPLAY "Transaction records: " WS-TRANS-COUNT DISPLAY "Customer records : " WS-MASTER-COUNT DISPLAY "Backup records : " WS-BACKUP-COUNT DISPLAY "Volume changes : " WS-VOLUME-CHANGES DISPLAY "Total errors : " WS-ERROR-COUNT IF WS-ERROR-COUNT = 0 DISPLAY "All label operations completed successfully" ELSE DISPLAY "Some operations encountered errors" END-IF DISPLAY "Label processing demonstration completed". *> Additional label processing procedures ADVANCED-LABEL-OPERATIONS. DISPLAY "=== ADVANCED LABEL OPERATIONS ===" PERFORM DEMONSTRATE-GENERATION-DATA-GROUPS PERFORM DEMONSTRATE-CATALOG-INTEGRATION PERFORM DEMONSTRATE-RETENTION-PROCESSING. DEMONSTRATE-GENERATION-DATA-GROUPS. DISPLAY "Generation Data Group (GDG) Label Processing:" 01 WS-GDG-INFO. 05 WS-GDG-BASE PIC X(35) VALUE "PROD.TRANSACTION.HISTORY". 05 WS-GDG-GENERATION PIC S9(3) VALUE +1. 05 WS-GDG-VERSION PIC 9(2) VALUE 0. DISPLAY "Base name: " WS-GDG-BASE DISPLAY "Generation: " WS-GDG-GENERATION DISPLAY "Version: " WS-GDG-VERSION DISPLAY "Full dataset name: " WS-GDG-BASE ".G" WS-GDG-GENERATION "V" WS-GDG-VERSION. DEMONSTRATE-CATALOG-INTEGRATION. DISPLAY "Catalog Integration with Labels:" 01 WS-CATALOG-INFO. 05 WS-CATALOG-NAME PIC X(44). 05 WS-VOLUME-LIST PIC X(60). 05 WS-DATASET-TYPE PIC X(8). MOVE "MASTER.PROD.CATALOG" TO WS-CATALOG-NAME MOVE "VOL001,VOL002,VOL003" TO WS-VOLUME-LIST MOVE "VSAM" TO WS-DATASET-TYPE DISPLAY "Catalog: " WS-CATALOG-NAME DISPLAY "Volumes: " WS-VOLUME-LIST DISPLAY "Type: " WS-DATASET-TYPE. DEMONSTRATE-RETENTION-PROCESSING. DISPLAY "Retention Period Processing:" 01 WS-RETENTION-INFO. 05 WS-RETENTION-DAYS PIC 9(4) VALUE 2555. 05 WS-EXPIRY-DATE PIC 9(8). 05 WS-SCRATCH-DATE PIC 9(8). COMPUTE WS-EXPIRY-DATE = WS-CREATION-DATE + WS-RETENTION-DAYS MOVE WS-EXPIRY-DATE TO WS-SCRATCH-DATE DISPLAY "Creation date: " WS-CREATION-DATE DISPLAY "Retention days: " WS-RETENTION-DAYS DISPLAY "Expiry date: " WS-EXPIRY-DATE DISPLAY "Scratch date: " WS-SCRATCH-DATE.
123456789101112131415161718192021222324252627282930FILE-CONTROL. SELECT PAYROLL-TAPE ASSIGN TO "PAYROLL.TAPE" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-PAYROLL-STATUS. FD PAYROLL-TAPE LABEL RECORDS ARE STANDARD BLOCK CONTAINS 50 RECORDS RECORD CONTAINS 120 CHARACTERS DATA RECORDS ARE PAYROLL-RECORD. 01 PAYROLL-RECORD. 05 EMP-ID PIC 9(6). 05 EMP-NAME PIC X(30). 05 GROSS-PAY PIC 9(8)V99. 05 DEDUCTIONS PIC 9(6)V99. 05 NET-PAY PIC 9(8)V99. 05 FILLER PIC X(68). PROCEDURE DIVISION. PROCESS-PAYROLL. OPEN INPUT PAYROLL-TAPE IF WS-PAYROLL-STATUS = "00" DISPLAY "Payroll tape opened with standard labels" PERFORM READ-PAYROLL-RECORDS ELSE DISPLAY "Label error: " WS-PAYROLL-STATUS END-IF CLOSE PAYROLL-TAPE.
123456789101112131415161718192021222324FILE-CONTROL. SELECT TEMP-WORK ASSIGN TO "TEMP.WORK" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-TEMP-STATUS. FD TEMP-WORK LABEL RECORDS ARE OMITTED RECORD CONTAINS 80 CHARACTERS DATA RECORDS ARE TEMP-RECORD. 01 TEMP-RECORD. 05 TEMP-KEY PIC X(10). 05 TEMP-DATA PIC X(65). 05 TEMP-FLAG PIC X(5). PROCEDURE DIVISION. PROCESS-TEMP-FILE. OPEN OUTPUT TEMP-WORK IF WS-TEMP-STATUS = "00" DISPLAY "Temporary file opened (no labels)" PERFORM WRITE-TEMP-RECORDS END-IF CLOSE TEMP-WORK.
1234FD MASTER-FILE LABEL RECORDS ARE STANDARD BLOCK CONTAINS 100 RECORDS DATA RECORDS ARE MASTER-REC.
1234FD TEMP-FILE LABEL RECORDS ARE OMITTED RECORD CONTAINS 80 CHARACTERS DATA RECORDS ARE TEMP-REC.
When should you use LABEL RECORDS ARE STANDARD?
Answer: Use STANDARD labels for production tape files and datasets that require proper volume management, file identification, and system catalog integration. This ensures proper file tracking and multi-volume support.
What types of files typically use OMITTED labels?
Answer: Temporary work files, scratch datasets, and files where label processing overhead is not needed typically use OMITTED labels. These are often short-lived files or those managed externally.
How do you handle label-related errors in file processing?
Answer: Check file status codes after OPEN operations, implement proper error handling for volume mount issues, validate dataset names, and provide meaningful error messages for label processing failures.