The LINAGE clause represents sophisticated page control and line management capabilities within COBOL file processing environments, providing automated pagination mechanisms, intelligent line counting systems, and comprehensive page overflow handling that enable precise report formatting, efficient print control, and reliable document organization. This clause embodies advanced output formatting principles by supporting automatic page boundary detection, enabling sophisticated line positioning control, and facilitating comprehensive print management requirements while maintaining document structure integrity, ensuring consistent page formatting, and supporting complex pagination scenarios across enterprise applications requiring detailed print control, automated page management, and reliable document formatting with optimized performance characteristics and consistent output standards.
12345678910111213141516171819202122232425262728293031323334*> Basic LINAGE syntax FD file-name LINAGE IS integer LINES WITH FOOTING AT integer LINES AT TOP integer LINES AT BOTTOM integer. *> Complete example FD REPORT-FILE LINAGE IS 60 LINES WITH FOOTING AT 55 LINES AT TOP 3 LINES AT BOTTOM 3. *> Using data items for dynamic sizing 01 WS-PAGE-SIZE PIC 9(2) VALUE 60. 01 WS-FOOTING-LINE PIC 9(2) VALUE 55. 01 WS-TOP-MARGIN PIC 9(2) VALUE 3. 01 WS-BOTTOM-MARGIN PIC 9(2) VALUE 3. FD DYNAMIC-REPORT-FILE LINAGE IS WS-PAGE-SIZE LINES WITH FOOTING AT WS-FOOTING-LINE LINES AT TOP WS-TOP-MARGIN LINES AT BOTTOM WS-BOTTOM-MARGIN. *> Simple LINAGE without margins FD SIMPLE-REPORT-FILE LINAGE IS 50 LINES. *> LINAGE with variable page size FD VARIABLE-REPORT-FILE LINAGE IS WS-VARIABLE-SIZE LINES WITH FOOTING AT WS-FOOTING-POSITION.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495IDENTIFICATION DIVISION. PROGRAM-ID. LINAGE-DEMONSTRATION. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPLOYEE-FILE ASSIGN TO "EMPLOYEE.DAT" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-EMP-STATUS. SELECT REPORT-FILE ASSIGN TO "REPORT.TXT" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-RPT-STATUS. SELECT INVOICE-FILE ASSIGN TO "INVOICE.TXT" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-INV-STATUS. DATA DIVISION. FILE SECTION. FD EMPLOYEE-FILE. 01 EMPLOYEE-RECORD. 05 EMP-ID PIC 9(6). 05 EMP-NAME PIC X(30). 05 EMP-DEPARTMENT PIC X(15). 05 EMP-SALARY PIC 9(8)V99. *> Standard report with LINAGE FD REPORT-FILE LINAGE IS 60 LINES WITH FOOTING AT 55 LINES AT TOP 3 LINES AT BOTTOM 3. 01 REPORT-LINE PIC X(132). *> Invoice with different page settings FD INVOICE-FILE LINAGE IS 45 LINES WITH FOOTING AT 40 LINES AT TOP 5 LINES AT BOTTOM 2. 01 INVOICE-LINE PIC X(80). WORKING-STORAGE SECTION. *> File status variables 01 WS-FILE-STATUS. 05 WS-EMP-STATUS PIC X(2). 05 WS-RPT-STATUS PIC X(2). 05 WS-INV-STATUS PIC X(2). *> Page control variables 01 WS-PAGE-CONTROL. 05 WS-CURRENT-PAGE PIC 9(4) VALUE 1. 05 WS-LINES-WRITTEN PIC 9(3) VALUE 0. 05 WS-TOTAL-PAGES PIC 9(4) VALUE 0. *> Report formatting variables 01 WS-REPORT-HEADERS. 05 WS-HEADER-1 PIC X(132) VALUE " EMPLOYEE REPORT". 05 WS-HEADER-2 PIC X(132) VALUE "EMP ID NAME DEPT SALARY". 05 WS-HEADER-3 PIC X(132) VALUE "------ ---- ---- ------". 01 WS-DETAIL-LINE. 05 WS-DET-EMP-ID PIC 9(6). 05 FILLER PIC X(4) VALUE SPACES. 05 WS-DET-NAME PIC X(30). 05 FILLER PIC X(3) VALUE SPACES. 05 WS-DET-DEPT PIC X(15). 05 FILLER PIC X(3) VALUE SPACES. 05 WS-DET-SALARY PIC $,$$$,$$9.99. 05 FILLER PIC X(59) VALUE SPACES. 01 WS-PAGE-FOOTER. 05 FILLER PIC X(60) VALUE SPACES. 05 FILLER PIC X(6) VALUE "PAGE: ". 05 WS-FOOTER-PAGE-NUM PIC Z,ZZ9. 05 FILLER PIC X(58) VALUE SPACES. *> Invoice formatting 01 WS-INVOICE-HEADERS. 05 WS-INV-HEADER-1 PIC X(80) VALUE " INVOICE DOCUMENT". 05 WS-INV-HEADER-2 PIC X(80) VALUE "ITEM DESCRIPTION QTY PRICE TOTAL". 01 WS-INVOICE-DETAIL. 05 WS-INV-ITEM PIC X(8). 05 WS-INV-DESC PIC X(25). 05 WS-INV-QTY PIC ZZ9. 05 WS-INV-PRICE PIC $,$$9.99. 05 WS-INV-TOTAL PIC $,$$$,$$9.99. 05 FILLER PIC X(23) VALUE SPACES. *> Sample data for demonstration 01 WS-SAMPLE-EMPLOYEES. 05 WS-EMP-1. 10 WS-EMP-ID-1 PIC 9(6) VALUE 123456. 10 WS-EMP-NAME-1 PIC X(30) VALUE "JOHN SMITH". 10 WS-EMP-DEPT-1 PIC X(15) VALUE "ENGINEERING". 10 WS-EMP-SAL-1 PIC 9(8)V99 VALUE 75000.00. PROCEDURE DIVISION. MAIN-PROCESSING. DISPLAY "=== COBOL LINAGE DEMONSTRATION ===" DISPLAY SPACES PERFORM INITIALIZE-FILES PERFORM DEMONSTRATE-BASIC-LINAGE PERFORM DEMONSTRATE-PAGE-OVERFLOW PERFORM DEMONSTRATE-INVOICE-FORMATTING PERFORM FINALIZE-FILES DISPLAY "=== LINAGE PROCESSING COMPLETE ===" STOP RUN. INITIALIZE-FILES. DISPLAY "Initializing files with LINAGE control..." OPEN OUTPUT REPORT-FILE IF WS-RPT-STATUS NOT = "00" DISPLAY "Error opening report file: " WS-RPT-STATUS STOP RUN END-IF OPEN OUTPUT INVOICE-FILE IF WS-INV-STATUS NOT = "00" DISPLAY "Error opening invoice file: " WS-INV-STATUS STOP RUN END-IF DISPLAY "Files opened successfully with LINAGE control" DISPLAY "Report file: 60 lines per page, footing at line 55" DISPLAY "Invoice file: 45 lines per page, footing at line 40" DISPLAY SPACES. DEMONSTRATE-BASIC-LINAGE. DISPLAY "=== BASIC LINAGE OPERATIONS ===" DISPLAY SPACES PERFORM WRITE-REPORT-HEADERS PERFORM GENERATE-SAMPLE-DATA PERFORM WRITE-REPORT-FOOTERS DISPLAY "Basic LINAGE demonstration completed" DISPLAY "LINAGE-COUNTER automatically managed page overflow" DISPLAY SPACES. WRITE-REPORT-HEADERS. DISPLAY "Writing report headers..." DISPLAY "LINAGE-COUNTER at start: " LINAGE-COUNTER OF REPORT-FILE WRITE REPORT-LINE FROM WS-HEADER-1 WRITE REPORT-LINE FROM SPACES WRITE REPORT-LINE FROM WS-HEADER-2 WRITE REPORT-LINE FROM WS-HEADER-3 WRITE REPORT-LINE FROM SPACES DISPLAY "Headers written, LINAGE-COUNTER now: " LINAGE-COUNTER OF REPORT-FILE DISPLAY SPACES. GENERATE-SAMPLE-DATA. 01 WS-RECORD-COUNT PIC 9(3) VALUE 0. 01 WS-EMPLOYEE-INDEX PIC 9(3). DISPLAY "Generating sample employee records..." *> Generate multiple records to demonstrate page overflow PERFORM VARYING WS-EMPLOYEE-INDEX FROM 1 BY 1 UNTIL WS-EMPLOYEE-INDEX > 75 ADD 1 TO WS-RECORD-COUNT *> Create sample data COMPUTE WS-DET-EMP-ID = 100000 + WS-EMPLOYEE-INDEX MOVE "EMPLOYEE NAME" TO WS-DET-NAME MOVE "DEPARTMENT" TO WS-DET-DEPT COMPUTE WS-DET-SALARY = 50000 + (WS-EMPLOYEE-INDEX * 500) *> Write detail line with automatic page control WRITE REPORT-LINE FROM WS-DETAIL-LINE AT END-OF-PAGE PERFORM HANDLE-PAGE-OVERFLOW *> Display progress periodically IF FUNCTION MOD(WS-RECORD-COUNT, 10) = 0 DISPLAY "Records written: " WS-RECORD-COUNT " Current line: " LINAGE-COUNTER OF REPORT-FILE END-IF END-PERFORM DISPLAY "Sample data generation completed" DISPLAY "Total records written: " WS-RECORD-COUNT DISPLAY "Final LINAGE-COUNTER: " LINAGE-COUNTER OF REPORT-FILE DISPLAY SPACES. HANDLE-PAGE-OVERFLOW. ADD 1 TO WS-CURRENT-PAGE DISPLAY "Page overflow detected! Starting page " WS-CURRENT-PAGE DISPLAY "LINAGE-COUNTER reset to: " LINAGE-COUNTER OF REPORT-FILE *> Write page footer for completed page MOVE WS-CURRENT-PAGE TO WS-FOOTER-PAGE-NUM WRITE REPORT-LINE FROM WS-PAGE-FOOTER *> Write headers for new page PERFORM WRITE-REPORT-HEADERS. WRITE-REPORT-FOOTERS. DISPLAY "Writing report footers..." *> Position at footing area PERFORM UNTIL LINAGE-COUNTER OF REPORT-FILE >= 55 WRITE REPORT-LINE FROM SPACES END-PERFORM MOVE WS-CURRENT-PAGE TO WS-FOOTER-PAGE-NUM WRITE REPORT-LINE FROM WS-PAGE-FOOTER DISPLAY "Report footers written" DISPLAY SPACES. DEMONSTRATE-PAGE-OVERFLOW. DISPLAY "=== PAGE OVERFLOW HANDLING ===" DISPLAY SPACES PERFORM DEMONSTRATE-CONTROLLED-OVERFLOW PERFORM DEMONSTRATE-AUTOMATIC-OVERFLOW. DEMONSTRATE-CONTROLLED-OVERFLOW. 01 WS-LINE-COUNT PIC 9(3) VALUE 0. 01 WS-TEST-LINE PIC X(132) VALUE "TEST LINE FOR OVERFLOW". DISPLAY "Demonstrating controlled page overflow..." *> Fill page to near capacity PERFORM UNTIL LINAGE-COUNTER OF REPORT-FILE >= 50 ADD 1 TO WS-LINE-COUNT MOVE WS-LINE-COUNT TO WS-TEST-LINE(1:3) WRITE REPORT-LINE FROM WS-TEST-LINE DISPLAY "Line " WS-LINE-COUNT " written, LINAGE-COUNTER: " LINAGE-COUNTER OF REPORT-FILE END-PERFORM DISPLAY "Approached page capacity" DISPLAY "Current LINAGE-COUNTER: " LINAGE-COUNTER OF REPORT-FILE DISPLAY SPACES. DEMONSTRATE-AUTOMATIC-OVERFLOW. 01 WS-OVERFLOW-COUNT PIC 9(2) VALUE 0. 01 WS-OVERFLOW-LINE PIC X(132) VALUE "OVERFLOW TEST LINE". DISPLAY "Demonstrating automatic page overflow..." *> Write lines that will trigger overflow PERFORM VARYING WS-OVERFLOW-COUNT FROM 1 BY 1 UNTIL WS-OVERFLOW-COUNT > 20 WRITE REPORT-LINE FROM WS-OVERFLOW-LINE AT END-OF-PAGE DISPLAY "Automatic overflow occurred at line " WS-OVERFLOW-COUNT DISPLAY "New page started, LINAGE-COUNTER: " LINAGE-COUNTER OF REPORT-FILE PERFORM WRITE-NEW-PAGE-HEADER DISPLAY "Overflow test line " WS-OVERFLOW-COUNT " - LINAGE-COUNTER: " LINAGE-COUNTER OF REPORT-FILE END-PERFORM DISPLAY "Automatic overflow demonstration completed" DISPLAY SPACES. WRITE-NEW-PAGE-HEADER. WRITE REPORT-LINE FROM SPACES WRITE REPORT-LINE FROM " NEW PAGE AFTER OVERFLOW" WRITE REPORT-LINE FROM SPACES. DEMONSTRATE-INVOICE-FORMATTING. DISPLAY "=== INVOICE FORMATTING WITH LINAGE ===" DISPLAY SPACES PERFORM WRITE-INVOICE-HEADERS PERFORM GENERATE-INVOICE-ITEMS PERFORM WRITE-INVOICE-FOOTER. WRITE-INVOICE-HEADERS. DISPLAY "Writing invoice headers..." DISPLAY "Invoice LINAGE-COUNTER at start: " LINAGE-COUNTER OF INVOICE-FILE WRITE INVOICE-LINE FROM SPACES WRITE INVOICE-LINE FROM WS-INV-HEADER-1 WRITE INVOICE-LINE FROM SPACES WRITE INVOICE-LINE FROM WS-INV-HEADER-2 WRITE INVOICE-LINE FROM SPACES DISPLAY "Invoice headers written, LINAGE-COUNTER: " LINAGE-COUNTER OF INVOICE-FILE DISPLAY SPACES. GENERATE-INVOICE-ITEMS. 01 WS-ITEM-COUNT PIC 9(2) VALUE 0. 01 WS-ITEM-TOTAL PIC 9(6)V99 VALUE 0. 01 WS-INVOICE-TOTAL PIC 9(8)V99 VALUE 0. DISPLAY "Generating invoice items..." PERFORM VARYING WS-ITEM-COUNT FROM 1 BY 1 UNTIL WS-ITEM-COUNT > 25 *> Create sample invoice item MOVE "ITEM" TO WS-INV-ITEM MOVE WS-ITEM-COUNT TO WS-INV-ITEM(5:2) MOVE "PRODUCT DESCRIPTION" TO WS-INV-DESC MOVE WS-ITEM-COUNT TO WS-INV-QTY COMPUTE WS-INV-PRICE = 25.00 + (WS-ITEM-COUNT * 2.50) COMPUTE WS-ITEM-TOTAL = WS-INV-QTY * WS-INV-PRICE MOVE WS-ITEM-TOTAL TO WS-INV-TOTAL ADD WS-ITEM-TOTAL TO WS-INVOICE-TOTAL *> Write invoice line WRITE INVOICE-LINE FROM WS-INVOICE-DETAIL AT END-OF-PAGE DISPLAY "Invoice page overflow at item " WS-ITEM-COUNT PERFORM HANDLE-INVOICE-OVERFLOW IF FUNCTION MOD(WS-ITEM-COUNT, 5) = 0 DISPLAY "Items processed: " WS-ITEM-COUNT " Invoice line: " LINAGE-COUNTER OF INVOICE-FILE END-IF END-PERFORM DISPLAY "Invoice items generated" DISPLAY "Total amount: $" WS-INVOICE-TOTAL DISPLAY SPACES. HANDLE-INVOICE-OVERFLOW. DISPLAY "Handling invoice page overflow..." *> Write continuation message WRITE INVOICE-LINE FROM SPACES WRITE INVOICE-LINE FROM " (CONTINUED ON NEXT PAGE)" *> Headers will be written automatically on new page PERFORM WRITE-INVOICE-HEADERS. WRITE-INVOICE-FOOTER. 01 WS-INVOICE-FOOTER PIC X(80) VALUE " THANK YOU FOR YOUR BUSINESS". DISPLAY "Writing invoice footer..." *> Position at footing area PERFORM UNTIL LINAGE-COUNTER OF INVOICE-FILE >= 38 WRITE INVOICE-LINE FROM SPACES END-PERFORM WRITE INVOICE-LINE FROM WS-INVOICE-FOOTER DISPLAY "Invoice footer written at line: " LINAGE-COUNTER OF INVOICE-FILE DISPLAY SPACES. FINALIZE-FILES. DISPLAY "=== FINALIZING FILES ===" DISPLAY SPACES CLOSE REPORT-FILE CLOSE INVOICE-FILE DISPLAY "File processing summary:" DISPLAY " Report file: Multiple pages with automatic overflow" DISPLAY " Invoice file: Formatted with LINAGE control" DISPLAY " LINAGE-COUNTER managed all page boundaries" DISPLAY SPACES DISPLAY "All files closed successfully" DISPLAY "LINAGE demonstration completed". *> Advanced LINAGE techniques ADVANCED-LINAGE-TECHNIQUES. DISPLAY "=== ADVANCED LINAGE TECHNIQUES ===" DISPLAY SPACES PERFORM DYNAMIC-PAGE-SIZING PERFORM CONDITIONAL-PAGE-BREAKS PERFORM MULTI-SECTION-REPORTS. DYNAMIC-PAGE-SIZING. 01 WS-PAGE-SIZES. 05 WS-STANDARD-PAGE PIC 9(2) VALUE 60. 05 WS-COMPACT-PAGE PIC 9(2) VALUE 40. 05 WS-EXTENDED-PAGE PIC 9(2) VALUE 80. 01 WS-SELECTED-SIZE PIC 9(2). 01 WS-PAGE-TYPE PIC X(10). DISPLAY "Dynamic page sizing demonstration:" *> Simulate different page requirements MOVE WS-STANDARD-PAGE TO WS-SELECTED-SIZE MOVE "STANDARD" TO WS-PAGE-TYPE PERFORM DISPLAY-PAGE-INFO MOVE WS-COMPACT-PAGE TO WS-SELECTED-SIZE MOVE "COMPACT" TO WS-PAGE-TYPE PERFORM DISPLAY-PAGE-INFO MOVE WS-EXTENDED-PAGE TO WS-SELECTED-SIZE MOVE "EXTENDED" TO WS-PAGE-TYPE PERFORM DISPLAY-PAGE-INFO DISPLAY SPACES. DISPLAY-PAGE-INFO. DISPLAY " " WS-PAGE-TYPE " page: " WS-SELECTED-SIZE " lines" DISPLAY " Suitable for: " EVALUATE WS-SELECTED-SIZE WHEN 40 THRU 45 DISPLAY " Compact reports, summary documents" WHEN 55 THRU 65 DISPLAY " Standard business reports" WHEN 75 THRU 85 DISPLAY " Detailed listings, comprehensive reports" END-EVALUATE. CONDITIONAL-PAGE-BREAKS. 01 WS-CONDITION-FLAGS. 05 WS-FORCE-PAGE-BREAK PIC X VALUE 'N'. 05 WS-SECTION-COMPLETE PIC X VALUE 'N'. 05 WS-SPECIAL-FORMAT PIC X VALUE 'N'. DISPLAY "Conditional page break strategies:" DISPLAY " Strategy 1: Force break at section end" MOVE 'Y' TO WS-SECTION-COMPLETE IF WS-SECTION-COMPLETE = 'Y' DISPLAY " Would force new page for section boundary" END-IF DISPLAY " Strategy 2: Break before special formatting" MOVE 'Y' TO WS-SPECIAL-FORMAT IF WS-SPECIAL-FORMAT = 'Y' DISPLAY " Would start new page for special content" END-IF DISPLAY " Strategy 3: Prevent orphan lines" IF LINAGE-COUNTER OF REPORT-FILE > 50 DISPLAY " Would force new page to prevent orphans" END-IF DISPLAY SPACES. MULTI-SECTION-REPORTS. 01 WS-SECTION-HEADERS. 05 WS-SECTION-1 PIC X(50) VALUE "EMPLOYEE DEMOGRAPHICS". 05 WS-SECTION-2 PIC X(50) VALUE "SALARY ANALYSIS". 05 WS-SECTION-3 PIC X(50) VALUE "DEPARTMENT SUMMARY". 01 WS-SECTION-INDEX PIC 9(2). 01 WS-CURRENT-SECTION PIC X(50). DISPLAY "Multi-section report with LINAGE:" PERFORM VARYING WS-SECTION-INDEX FROM 1 BY 1 UNTIL WS-SECTION-INDEX > 3 EVALUATE WS-SECTION-INDEX WHEN 1 MOVE WS-SECTION-1 TO WS-CURRENT-SECTION WHEN 2 MOVE WS-SECTION-2 TO WS-CURRENT-SECTION WHEN 3 MOVE WS-SECTION-3 TO WS-CURRENT-SECTION END-EVALUATE DISPLAY " Section " WS-SECTION-INDEX ": " WS-CURRENT-SECTION DISPLAY " Start new page: " IF WS-SECTION-INDEX > 1 DISPLAY "YES (section boundary)" ELSE DISPLAY "NO (first section)" END-IF DISPLAY " Estimated lines: " EVALUATE WS-SECTION-INDEX WHEN 1 DISPLAY "15-20 lines" WHEN 2 DISPLAY "25-30 lines" WHEN 3 DISPLAY "10-15 lines" END-EVALUATE DISPLAY SPACES END-PERFORM.
1234567891011121314151617181920212223242526272829FD EMPLOYEE-REPORT LINAGE IS 55 LINES WITH FOOTING AT 50 LINES AT TOP 2 LINES AT BOTTOM 2. 01 REPORT-LINE PIC X(120). PROCEDURE DIVISION. WRITE-EMPLOYEE-REPORT. OPEN OUTPUT EMPLOYEE-REPORT *> Write header MOVE "EMPLOYEE LISTING REPORT" TO REPORT-LINE WRITE REPORT-LINE *> Write detail lines with automatic page control PERFORM VARYING WS-INDEX FROM 1 BY 1 UNTIL WS-INDEX > 100 MOVE "EMPLOYEE DETAIL LINE" TO REPORT-LINE WRITE REPORT-LINE AT END-OF-PAGE PERFORM NEW-PAGE-PROCESSING END-PERFORM CLOSE EMPLOYEE-REPORT. NEW-PAGE-PROCESSING. DISPLAY "Page overflow - LINAGE-COUNTER: " LINAGE-COUNTER OF EMPLOYEE-REPORT.
123456789101112131415161718192021222324252627282901 WS-PAGE-SIZE PIC 9(2). 01 WS-FOOTING-LINE PIC 9(2). 01 WS-REPORT-TYPE PIC X(10). FD FLEXIBLE-REPORT LINAGE IS WS-PAGE-SIZE LINES WITH FOOTING AT WS-FOOTING-LINE. 01 FLEX-REPORT-LINE PIC X(100). PROCEDURE DIVISION. SETUP-DYNAMIC-REPORT. MOVE "STANDARD" TO WS-REPORT-TYPE EVALUATE WS-REPORT-TYPE WHEN "COMPACT" MOVE 40 TO WS-PAGE-SIZE MOVE 35 TO WS-FOOTING-LINE WHEN "STANDARD" MOVE 60 TO WS-PAGE-SIZE MOVE 55 TO WS-FOOTING-LINE WHEN "EXTENDED" MOVE 80 TO WS-PAGE-SIZE MOVE 75 TO WS-FOOTING-LINE END-EVALUATE OPEN OUTPUT FLEXIBLE-REPORT DISPLAY "Report configured for " WS-REPORT-TYPE " format" DISPLAY "Page size: " WS-PAGE-SIZE " lines".
What are the main components of a LINAGE clause?
Answer: The main components are: LINAGE IS (lines per page), WITH FOOTING AT (footing line number), LINES AT TOP (top margin), and LINES AT BOTTOM (bottom margin). Only LINAGE IS is required.
How does LINAGE-COUNTER work with page overflow?
Answer: LINAGE-COUNTER automatically tracks the current line number within the page. When it reaches the footing line or page limit, page overflow occurs and LINAGE-COUNTER resets to 1 for the new page.
What are common uses for LINAGE in business applications?
Answer: Common uses include generating multi-page reports, invoices with automatic pagination, employee listings, financial statements, and any document requiring consistent page formatting with headers and footers.