PROCESSING LITERALS

Literals in COBOL are classified as numeric and alphanumeric. The way they are handled varies sharply.

Alphanumeric literals:

When alphanumeric data including literals are moved to a field they are pushed against the left wall of the field leaving any blanks to the right. For example if WOLF is moved to a six character field it will be stored as WOLF followed by two spaces. When the programmer actually writes the move statement, WOLF must be enclosed in quotes. (Most compilers allow either single or double quotes, some are fussy.)

    MOVE "WOLF" TO ANIMAL-PR.

If the programmer wrote MOVE WOLF TO ANIMAL-PR, the compiler would go looking for a data name in the DATA DIVISION called WOLF so it could move the contents of the field to the field on the print line.

Literals can also be set up in VALUE clauses and again they must be enclosed in quotes.

    05  DOG-WS      PIC XXX     VALUE "DOG".

Numeric literals:

When numeric data including literals are moved to a field they are pushed against the right wall of the field. The data will be zero filled on the left. For example, if the programmer moves 212 to a five character field numeric field it will end up as 00212. When the programmer moves the number to the numeric field it should not be enclosed in quotes (thereby classifying the literal as numeric). This is possible because a number can never be confused with a data name since data names must contain at least one letter. If the number has a decimal point, it should be included in the literal or the data will be treated as a whole number. For decimal data, the destination PIC should contain a V so that alignment will be done correctly.

    MOVE 212 TO NUM-WS.      (NUM-WS has a PIC of 999)
    MOVE 24.71 TO ANS-WS.    (ANS-WS has a PIC of 99V99)

Numeric literals can also be stored in value clauses. If numeric literals have decimal places, the location must be specified in both the PIC and the VALUE. For example, the number 56.78 should be stored using a PIC of 99V99 to indicate the decimal place and the actual decimal place should appear in the value clause. (Notice that this is different from input data. Input data is brought in as whole numbers and the V alone establishes the decimal place. This means that on the data file, the numbers are stored as whole numbers and the V in the input picture defines which part of the number is to be treated as a whole number and which part of the number is to be treated as a decimal number.)

    05  AMT1-WS     PIC 999       VALUE 123.
    05  AMT2-WS     PIC 99V99     VALUE 56.78.

Data should not be edited in WORKING-STORAGE or in INPUT areas. Data should only be edited when it being display on the screen or printed on the printer for users to read.