The JUST and JUSTIFIED keywords represent specialized data alignment specifications within COBOL data definition environments, providing sophisticated right-alignment capabilities for alphanumeric fields that enable precise text positioning, formatted output generation, and controlled data presentation. These alignment modifiers embody advanced formatting principles by ensuring consistent text positioning, supporting legacy system requirements, and maintaining compatibility with external interfaces while facilitating professional report formatting, standardized data layout patterns, and comprehensive text manipulation across enterprise applications requiring precise field alignment and sophisticated data presentation capabilities with reliable formatting consistency and optimized display characteristics.
12345678910111213141516171819202122232425262728293031323334*> Basic JUSTIFIED syntax 01 field-name PIC X(n) JUSTIFIED. 01 field-name PIC X(n) JUST. *> JUST is equivalent to JUSTIFIED *> Examples of JUSTIFIED fields 01 WS-RIGHT-ALIGNED-NAME PIC X(20) JUSTIFIED. 01 WS-ACCOUNT-CODE PIC X(10) JUST. 01 WS-FORMATTED-TEXT PIC X(30) JUSTIFIED. *> Without JUSTIFIED (default left alignment) 01 WS-LEFT-ALIGNED-NAME PIC X(20). *> Demonstration of alignment differences PROCEDURE DIVISION. *> Left-aligned field (default) MOVE "SMITH" TO WS-LEFT-ALIGNED-NAME *> Result: "SMITH " (left-aligned with trailing spaces) *> Right-aligned field (JUSTIFIED) MOVE "SMITH" TO WS-RIGHT-ALIGNED-NAME *> Result: " SMITH" (right-aligned with leading spaces) *> Account code right-aligned MOVE "ABC123" TO WS-ACCOUNT-CODE *> Result: " ABC123" (right-aligned) *> JUSTIFIED only applies to alphanumeric fields 01 WS-VALID-JUSTIFIED PIC X(15) JUSTIFIED. *> Valid 01 WS-INVALID-JUSTIFIED PIC 9(5) JUSTIFIED. *> Compilation error *> Group items cannot be JUSTIFIED 01 WS-GROUP-ITEM JUSTIFIED. *> Invalid 05 WS-FIELD1 PIC X(10). 05 WS-FIELD2 PIC X(10).
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388IDENTIFICATION DIVISION. PROGRAM-ID. JUSTIFIED-DEMONSTRATION. DATA DIVISION. WORKING-STORAGE SECTION. *> Comparison of aligned and non-aligned fields 01 ALIGNMENT-DEMO-FIELDS. 05 WS-STANDARD-NAME PIC X(25). 05 WS-JUSTIFIED-NAME PIC X(25) JUSTIFIED. 05 WS-STANDARD-CODE PIC X(12). 05 WS-JUSTIFIED-CODE PIC X(12) JUSTIFIED. 05 WS-STANDARD-ADDRESS PIC X(40). 05 WS-JUSTIFIED-ADDRESS PIC X(40) JUSTIFIED. *> Report formatting fields 01 REPORT-FIELDS. 05 WS-REPORT-TITLE PIC X(50) JUSTIFIED. 05 WS-PAGE-NUMBER PIC X(10) JUSTIFIED. 05 WS-DATE-STAMP PIC X(15) JUSTIFIED. 05 WS-COLUMN-HEADER PIC X(20) JUSTIFIED. *> Financial data formatting 01 FINANCIAL-FIELDS. 05 WS-ACCOUNT-NUMBER PIC X(15) JUSTIFIED. 05 WS-ROUTING-NUMBER PIC X(12) JUSTIFIED. 05 WS-BANK-NAME PIC X(30) JUSTIFIED. 05 WS-CUSTOMER-ID PIC X(10) JUSTIFIED. *> Form layout fields 01 FORM-LAYOUT-FIELDS. 05 WS-LABEL-FIELD PIC X(20) JUSTIFIED. 05 WS-VALUE-FIELD PIC X(30). 05 WS-SIGNATURE-LINE PIC X(40) JUSTIFIED. 05 WS-DATE-LINE PIC X(12) JUSTIFIED. *> Demonstration arrays 01 EMPLOYEE-NAMES. 05 WS-STANDARD-NAMES OCCURS 5 TIMES PIC X(20). 05 WS-JUSTIFIED-NAMES OCCURS 5 TIMES PIC X(20) JUSTIFIED. 01 TEST-DATA-TABLE. 05 WS-TEST-ENTRIES OCCURS 10 TIMES. 10 WS-ENTRY-ID PIC X(8) JUSTIFIED. 10 WS-ENTRY-DESC PIC X(25). 10 WS-ENTRY-CODE PIC X(6) JUSTIFIED. *> Working variables 01 WS-COUNTERS. 05 WS-NAME-COUNT PIC 9(2) VALUE 0. 05 WS-DEMO-COUNT PIC 9(2) VALUE 0. 05 WS-FIELD-LENGTH PIC 9(2). 01 WS-SAMPLE-DATA. 05 FILLER PIC X(100) VALUE "JOHN JANE MICHAEL SARAH DAVID ". 05 WS-SAMPLE-NAMES REDEFINES FILLER. 10 WS-SAMPLE-NAME OCCURS 5 TIMES PIC X(8). PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM DEMONSTRATE-BASIC-ALIGNMENT PERFORM DEMONSTRATE-REPORT-FORMATTING PERFORM DEMONSTRATE-FINANCIAL-FORMATTING PERFORM DEMONSTRATE-FORM-LAYOUTS PERFORM DEMONSTRATE-ARRAY-PROCESSING PERFORM DEMONSTRATE-BUSINESS-APPLICATIONS STOP RUN. DEMONSTRATE-BASIC-ALIGNMENT. DISPLAY "=== BASIC ALIGNMENT DEMONSTRATION ===" *> Test various name lengths MOVE "SMITH" TO WS-STANDARD-NAME MOVE "SMITH" TO WS-JUSTIFIED-NAME DISPLAY "Standard Name : '" WS-STANDARD-NAME "'" DISPLAY "Justified Name : '" WS-JUSTIFIED-NAME "'" DISPLAY SPACES *> Test shorter names MOVE "DOE" TO WS-STANDARD-NAME MOVE "DOE" TO WS-JUSTIFIED-NAME DISPLAY "Standard Name : '" WS-STANDARD-NAME "'" DISPLAY "Justified Name : '" WS-JUSTIFIED-NAME "'" DISPLAY SPACES *> Test longer names (truncation) MOVE "VERY-LONG-EMPLOYEE-NAME-EXAMPLE" TO WS-STANDARD-NAME MOVE "VERY-LONG-EMPLOYEE-NAME-EXAMPLE" TO WS-JUSTIFIED-NAME DISPLAY "Standard Name : '" WS-STANDARD-NAME "'" DISPLAY "Justified Name : '" WS-JUSTIFIED-NAME "'" DISPLAY SPACES *> Test codes MOVE "A123" TO WS-STANDARD-CODE MOVE "A123" TO WS-JUSTIFIED-CODE DISPLAY "Standard Code : '" WS-STANDARD-CODE "'" DISPLAY "Justified Code : '" WS-JUSTIFIED-CODE "'" DISPLAY SPACES. DEMONSTRATE-REPORT-FORMATTING. DISPLAY "=== REPORT FORMATTING WITH JUSTIFIED ===" *> Format report headers MOVE "MONTHLY SALES REPORT" TO WS-REPORT-TITLE MOVE "Page 1" TO WS-PAGE-NUMBER MOVE "12/31/2024" TO WS-DATE-STAMP DISPLAY "==================================================" DISPLAY WS-REPORT-TITLE DISPLAY "Page: " WS-PAGE-NUMBER " Date: " WS-DATE-STAMP DISPLAY "==================================================" *> Format column headers MOVE "Employee Name" TO WS-COLUMN-HEADER DISPLAY "Left Header : '" WS-COLUMN-HEADER "'" MOVE "Sales Amount" TO WS-COLUMN-HEADER DISPLAY "Right Header : '" WS-COLUMN-HEADER "'" MOVE "Department" TO WS-COLUMN-HEADER DISPLAY "Center-ish : '" WS-COLUMN-HEADER "'" DISPLAY SPACES. DEMONSTRATE-FINANCIAL-FORMATTING. DISPLAY "=== FINANCIAL DATA FORMATTING ===" *> Format banking information MOVE "123456789012345" TO WS-ACCOUNT-NUMBER MOVE "021000021" TO WS-ROUTING-NUMBER MOVE "FIRST NATIONAL BANK" TO WS-BANK-NAME MOVE "CUST001" TO WS-CUSTOMER-ID DISPLAY "BANK ACCOUNT INFORMATION" DISPLAY "========================" DISPLAY "Account Number: " WS-ACCOUNT-NUMBER DISPLAY "Routing Number: " WS-ROUTING-NUMBER DISPLAY "Bank Name : " WS-BANK-NAME DISPLAY "Customer ID : " WS-CUSTOMER-ID *> Demonstrate check formatting DISPLAY SPACES DISPLAY "CHECK FORMAT EXAMPLE:" DISPLAY "----------------------------------------" DISPLAY " " WS-DATE-STAMP DISPLAY "PAY TO THE ORDER OF: JOHN SMITH" DISPLAY "AMOUNT: $1,234.56 " WS-ACCOUNT-NUMBER DISPLAY " " WS-BANK-NAME DISPLAY "----------------------------------------" DISPLAY SPACES. DEMONSTRATE-FORM-LAYOUTS. DISPLAY "=== FORM LAYOUT FORMATTING ===" *> Create form-like layout MOVE "Name:" TO WS-LABEL-FIELD MOVE "John Smith" TO WS-VALUE-FIELD DISPLAY WS-LABEL-FIELD " " WS-VALUE-FIELD MOVE "Address:" TO WS-LABEL-FIELD MOVE "123 Main Street" TO WS-VALUE-FIELD DISPLAY WS-LABEL-FIELD " " WS-VALUE-FIELD MOVE "Phone:" TO WS-LABEL-FIELD MOVE "555-123-4567" TO WS-VALUE-FIELD DISPLAY WS-LABEL-FIELD " " WS-VALUE-FIELD *> Signature section MOVE "X" TO WS-SIGNATURE-LINE MOVE "Date" TO WS-DATE-LINE DISPLAY SPACES DISPLAY "Signature: " WS-SIGNATURE-LINE DISPLAY " Date: " WS-DATE-LINE DISPLAY SPACES. DEMONSTRATE-ARRAY-PROCESSING. DISPLAY "=== ARRAY PROCESSING WITH JUSTIFIED ===" *> Initialize arrays with sample data PERFORM VARYING WS-NAME-COUNT FROM 1 BY 1 UNTIL WS-NAME-COUNT > 5 MOVE WS-SAMPLE-NAME(WS-NAME-COUNT) TO WS-STANDARD-NAMES(WS-NAME-COUNT) MOVE WS-SAMPLE-NAME(WS-NAME-COUNT) TO WS-JUSTIFIED-NAMES(WS-NAME-COUNT) END-PERFORM DISPLAY "Standard Names (Left-aligned):" PERFORM VARYING WS-NAME-COUNT FROM 1 BY 1 UNTIL WS-NAME-COUNT > 5 DISPLAY WS-NAME-COUNT ". '" WS-STANDARD-NAMES(WS-NAME-COUNT) "'" END-PERFORM DISPLAY SPACES DISPLAY "Justified Names (Right-aligned):" PERFORM VARYING WS-NAME-COUNT FROM 1 BY 1 UNTIL WS-NAME-COUNT > 5 DISPLAY WS-NAME-COUNT ". '" WS-JUSTIFIED-NAMES(WS-NAME-COUNT) "'" END-PERFORM DISPLAY SPACES. DEMONSTRATE-BUSINESS-APPLICATIONS. DISPLAY "=== BUSINESS APPLICATION EXAMPLES ===" PERFORM INVENTORY-REPORT-FORMATTING PERFORM CUSTOMER-STATEMENT-FORMATTING PERFORM EMPLOYEE-DIRECTORY-FORMATTING. INVENTORY-REPORT-FORMATTING. DISPLAY "Inventory Report Formatting:" DISPLAY "----------------------------" *> Product information with right-aligned codes MOVE "WIDGET-A" TO WS-JUSTIFIED-CODE DISPLAY "Product Code: " WS-JUSTIFIED-CODE " Description: Premium Widget" MOVE "TOOL-B" TO WS-JUSTIFIED-CODE DISPLAY "Product Code: " WS-JUSTIFIED-CODE " Description: Professional Tool" MOVE "PART-C" TO WS-JUSTIFIED-CODE DISPLAY "Product Code: " WS-JUSTIFIED-CODE " Description: Replacement Part" DISPLAY SPACES. CUSTOMER-STATEMENT-FORMATTING. DISPLAY "Customer Statement Formatting:" DISPLAY "------------------------------" *> Statement header with right-aligned information MOVE "STMT-001" TO WS-CUSTOMER-ID MOVE "12/31/2024" TO WS-DATE-STAMP DISPLAY "CUSTOMER STATEMENT" DISPLAY "Statement ID: " WS-CUSTOMER-ID DISPLAY "Date : " WS-DATE-STAMP DISPLAY " " DISPLAY "Customer: ACME Corporation" DISPLAY "Account : " WS-ACCOUNT-NUMBER DISPLAY SPACES. EMPLOYEE-DIRECTORY-FORMATTING. DISPLAY "Employee Directory Formatting:" DISPLAY "------------------------------" *> Directory entries with consistent alignment MOVE "EMP001" TO WS-ENTRY-ID(1) MOVE "John Smith" TO WS-ENTRY-DESC(1) MOVE "IT" TO WS-ENTRY-CODE(1) MOVE "EMP002" TO WS-ENTRY-ID(2) MOVE "Jane Doe" TO WS-ENTRY-DESC(2) MOVE "HR" TO WS-ENTRY-CODE(2) MOVE "EMP003" TO WS-ENTRY-ID(3) MOVE "Bob Johnson" TO WS-ENTRY-DESC(3) MOVE "FIN" TO WS-ENTRY-CODE(3) PERFORM VARYING WS-DEMO-COUNT FROM 1 BY 1 UNTIL WS-DEMO-COUNT > 3 DISPLAY WS-ENTRY-ID(WS-DEMO-COUNT) " | " WS-ENTRY-DESC(WS-DEMO-COUNT) " | " WS-ENTRY-CODE(WS-DEMO-COUNT) END-PERFORM DISPLAY SPACES. *> Additional demonstrations for advanced JUSTIFIED usage ADVANCED-JUSTIFIED-TECHNIQUES. DISPLAY "=== ADVANCED JUSTIFIED TECHNIQUES ===" PERFORM DEMONSTRATE-MIXED-ALIGNMENT PERFORM DEMONSTRATE-DYNAMIC-FORMATTING PERFORM DEMONSTRATE-LEGACY-INTERFACE. DEMONSTRATE-MIXED-ALIGNMENT. 01 WS-MIXED-RECORD. 05 WS-LEFT-FIELD PIC X(15). 05 WS-RIGHT-FIELD PIC X(15) JUSTIFIED. 05 WS-CENTER-FIELD PIC X(15). DISPLAY "Mixed Alignment in Records:" MOVE "LEFT" TO WS-LEFT-FIELD MOVE "RIGHT" TO WS-RIGHT-FIELD MOVE "CENTER" TO WS-CENTER-FIELD DISPLAY "Left : '" WS-LEFT-FIELD "'" DISPLAY "Right : '" WS-RIGHT-FIELD "'" DISPLAY "Center: '" WS-CENTER-FIELD "'" DISPLAY SPACES. DEMONSTRATE-DYNAMIC-FORMATTING. 01 WS-FORMAT-FIELDS. 05 WS-DYNAMIC-FIELD PIC X(20) JUSTIFIED. 05 WS-INPUT-DATA PIC X(50). 05 WS-PROCESSED-DATA PIC X(20). DISPLAY "Dynamic Content Formatting:" MOVE "Short" TO WS-DYNAMIC-FIELD DISPLAY "Content: '" WS-DYNAMIC-FIELD "'" MOVE "Medium Length" TO WS-DYNAMIC-FIELD DISPLAY "Content: '" WS-DYNAMIC-FIELD "'" MOVE "Very Long Content Text" TO WS-DYNAMIC-FIELD DISPLAY "Content: '" WS-DYNAMIC-FIELD "'" DISPLAY SPACES. DEMONSTRATE-LEGACY-INTERFACE. 01 WS-LEGACY-RECORD. 05 WS-LEGACY-ID PIC X(8) JUSTIFIED. 05 WS-LEGACY-NAME PIC X(25) JUSTIFIED. 05 WS-LEGACY-CODE PIC X(6) JUSTIFIED. DISPLAY "Legacy System Interface:" MOVE "12345" TO WS-LEGACY-ID MOVE "CUSTOMER NAME" TO WS-LEGACY-NAME MOVE "ABC" TO WS-LEGACY-CODE DISPLAY "Legacy Format:" DISPLAY "ID : '" WS-LEGACY-ID "'" DISPLAY "Name: '" WS-LEGACY-NAME "'" DISPLAY "Code: '" WS-LEGACY-CODE "'" DISPLAY SPACES. FORMATTING-BEST-PRACTICES. DISPLAY "=== FORMATTING BEST PRACTICES ===" *> Demonstrate proper field sizing 01 WS-PROPER-SIZING. 05 WS-SHORT-FIELD PIC X(10) JUSTIFIED. 05 WS-MEDIUM-FIELD PIC X(20) JUSTIFIED. 05 WS-LONG-FIELD PIC X(40) JUSTIFIED. DISPLAY "Field Sizing Guidelines:" MOVE "ABC" TO WS-SHORT-FIELD MOVE "MEDIUM CONTENT" TO WS-MEDIUM-FIELD MOVE "THIS IS A LONGER FIELD WITH MORE CONTENT" TO WS-LONG-FIELD DISPLAY "Short : '" WS-SHORT-FIELD "'" DISPLAY "Medium: '" WS-MEDIUM-FIELD "'" DISPLAY "Long : '" WS-LONG-FIELD "'" *> Demonstrate consistent formatting DISPLAY SPACES DISPLAY "Consistent Report Formatting:" DISPLAY "==============================" MOVE "REPORT TITLE" TO WS-REPORT-TITLE MOVE "Page 1 of 10" TO WS-PAGE-NUMBER MOVE "Generated 12/31/2024" TO WS-DATE-STAMP DISPLAY WS-REPORT-TITLE DISPLAY WS-PAGE-NUMBER " " WS-DATE-STAMP DISPLAY "==============================" DISPLAY SPACES. COMMON-PITFALLS-AND-SOLUTIONS. DISPLAY "=== COMMON PITFALLS AND SOLUTIONS ===" *> Demonstrate truncation issues 01 WS-TRUNCATION-DEMO. 05 WS-SHORT-JUSTIFIED PIC X(8) JUSTIFIED. 05 WS-LONG-SOURCE PIC X(20) VALUE "VERY LONG TEXT STRING". DISPLAY "Truncation Demonstration:" MOVE WS-LONG-SOURCE TO WS-SHORT-JUSTIFIED DISPLAY "Original: '" WS-LONG-SOURCE "'" DISPLAY "Result : '" WS-SHORT-JUSTIFIED "'" *> Demonstrate spacing issues 01 WS-SPACING-DEMO. 05 WS-SPACED-FIELD PIC X(15) JUSTIFIED. DISPLAY SPACES DISPLAY "Spacing Considerations:" MOVE "A B C" TO WS-SPACED-FIELD DISPLAY "Spaced Text: '" WS-SPACED-FIELD "'" MOVE " LEADING SPACE" TO WS-SPACED-FIELD DISPLAY "Leading Spc: '" WS-SPACED-FIELD "'" MOVE "TRAILING SPACE " TO WS-SPACED-FIELD DISPLAY "Trailing Sp: '" WS-SPACED-FIELD "'" DISPLAY SPACES.
1234567891011121314151617181901 REPORT-LAYOUT. 05 WS-COMPANY-NAME PIC X(40) JUSTIFIED. 05 WS-REPORT-NAME PIC X(30) JUSTIFIED. 05 WS-PAGE-INFO PIC X(15) JUSTIFIED. 05 WS-DATE-INFO PIC X(12) JUSTIFIED. PROCEDURE DIVISION. PRINT-HEADER. MOVE "ACME CORPORATION" TO WS-COMPANY-NAME MOVE "EMPLOYEE LISTING" TO WS-REPORT-NAME MOVE "Page 1 of 5" TO WS-PAGE-INFO MOVE "12/31/2024" TO WS-DATE-INFO DISPLAY "==========================================" DISPLAY WS-COMPANY-NAME DISPLAY WS-REPORT-NAME DISPLAY WS-PAGE-INFO " " WS-DATE-INFO DISPLAY "==========================================" .
12345678910111213141516171801 INVOICE-LAYOUT. 05 WS-ITEM-CODE PIC X(10) JUSTIFIED. 05 WS-DESCRIPTION PIC X(25). 05 WS-QUANTITY PIC X(8) JUSTIFIED. 05 WS-UNIT-PRICE PIC X(10) JUSTIFIED. 05 WS-TOTAL-AMOUNT PIC X(12) JUSTIFIED. PROCEDURE DIVISION. FORMAT-INVOICE-LINE. MOVE "ABC123" TO WS-ITEM-CODE MOVE "Premium Widget Set" TO WS-DESCRIPTION MOVE "5" TO WS-QUANTITY MOVE "$49.99" TO WS-UNIT-PRICE MOVE "$249.95" TO WS-TOTAL-AMOUNT DISPLAY WS-ITEM-CODE " | " WS-DESCRIPTION " | " WS-QUANTITY " | " WS-UNIT-PRICE " | " WS-TOTAL-AMOUNT .
123401 HEADER-FIELDS. 05 WS-TITLE PIC X(30) JUSTIFIED. 05 WS-PAGE PIC X(10) JUSTIFIED. 05 WS-DATE PIC X(12) JUSTIFIED.
123401 ACCOUNT-FIELDS. 05 WS-ACCOUNT-NUM PIC X(15) JUSTIFIED. 05 WS-ROUTING-NUM PIC X(12) JUSTIFIED. 05 WS-CHECK-NUM PIC X(8) JUSTIFIED.
What does JUSTIFIED do to alphanumeric data?
Answer: JUSTIFIED right-aligns alphanumeric data within the field. If the data is shorter than the field, leading spaces are added. If longer, data is truncated from the left.
Can JUSTIFIED be used with numeric fields?
Answer: No, JUSTIFIED can only be used with alphanumeric (PIC X) fields. It cannot be applied to numeric fields, group items, or other data types.
Is there a shorter form of JUSTIFIED?
Answer: Yes, JUST is the abbreviated form of JUSTIFIED. Both keywords are functionally identical and can be used interchangeably.