Step 1 of 5 · Reading · ~2 min
Learn
Arithmetic and Editing
COBOL's killer reporting feature: edit pictures that format numbers for human readers. Built into the language since 1959.
Zero suppression with Z
01 N PIC 9(5) VALUE 42.
01 OUTPUT-N PIC ZZZZ9.
MOVE N TO OUTPUT-N.
DISPLAY OUTPUT-N. *> ' 42' (3 spaces, then 42)
Z shows the digit if non-zero, replaces with space if leading zero. 9 always shows the digit.
Asterisk fill
01 OUTPUT-N PIC ****9.
MOVE 42 TO OUTPUT-N.
DISPLAY OUTPUT-N. *> '***42'
Useful for security on checks ("$****42.00" prevents adding zeros).
Currency
01 PRICE PIC 9(5)V99 VALUE 1234.56.
01 OUTPUT-P PIC $$$,$$9.99.
MOVE PRICE TO OUTPUT-P.
DISPLAY OUTPUT-P. *> '$1,234.56'
$$$— floating dollar sign (rightmost non-blank position),— thousands separator.— decimal point (must matchVin source PIC)
Sign
01 OUTPUT-N PIC +9999. *> '+0042' or '-0042'
01 OUTPUT-N PIC 9999+. *> trailing sign: '0042+'
01 OUTPUT-N PIC 9999CR. *> '0042CR' for negative, '0042 ' for positive
01 OUTPUT-N PIC 9999DB. *> '0042DB' / '0042 ' (DB = debit, accounting)
Complete example
01 GROSS PIC 9(7)V99 VALUE 12345.67.
01 GROSS-DISPLAY PIC $$$$,$$9.99.
MOVE GROSS TO GROSS-DISPLAY.
DISPLAY GROSS-DISPLAY. *> '$12,345.67'
Date formatting
01 DATE-IN PIC 9(8) VALUE 20260508.
01 DATE-DISPLAY PIC 9999/99/99.
MOVE DATE-IN TO DATE-DISPLAY.
DISPLAY DATE-DISPLAY. *> '2026/05/08'
The / is a literal — copies through.
Common edit picture characters
9— digit, always showZ— digit, replace leading zero with space*— digit, replace leading zero with*$— currency, floats to leftmost non-zero position,.— separators (literal in output)+-— sign at start+at end — sign at endCRDB— credit/debit indicators (only show on negatives)B— blank (insert space)0— literal zero/— literal slash
This is COBOL's gift to financial reporting. Even with modern formatters, edit pictures remain incredibly readable for the cases they cover.
Up nextMOVE Patterns and InitializationArithmetic and Editing
Discussion
Ask a question, share an insight, or help someone who’s stuck.
Sign in to post a comment or reply.
Loading…