Joe Geiser writes:
>Your receiving field (the X(8) field) should be:
>
> FIELD-A PIC X(8) JUSTIFY RIGHT.
>
>MOVE INPUT-FLD TO FIELD-A.
You know, I've never been able to get this to work. If the INPUT-FLD is
X(8) and FIELD-A is X(8) also, then I always end up with the same data in
FIELD-A as was in INPUT-FLD.
Example:
3 01 PROGRAM-WORK-AREA.
3.1 03 ACCEPT-STRING PIC X(8).
3.2 03 RIGHT-JUST-STRING PIC X(8) JUST RIGHT.
3.3 03 ACCEPT-NUMBER PIC 9(8).
3.4 $PAGE
3.5 *****************************************************************
3.6 *** P R O C E D U R E D I V I S I O N
3.7 *****************************************************************
3.8 PROCEDURE DIVISION.
3.9 DECLARATIVES.
4 S0000-JKP082-DEBUG SECTION 01.
4.1 USE FOR DEBUGGING ON ALL PROCEDURES.
4.2 P0000-DEBUG-PARAGRAPH.
4.3 DISPLAY DEBUG-ITEM.
4.4 END DECLARATIVES.
4.5 *****************************************************************
4.6 S0100-JKP082-INIT SECTION 03.
4.7 P1000-INITIALIZATION.
4.8 DISPLAY "TESTING COBOL ACCEPTS".
4.9 DISPLAY " ".
5
5.1 DISPLAY "ENTER A NUMBER".
5.2 MOVE LOW-VALUES TO ACCEPT-STRING.
5.3 ACCEPT ACCEPT-STRING.
5.4 DISPLAY " ".
5.5 DISPLAY "YOU ENTERED [", ACCEPT-STRING, "]"
5.6 "<--- ACCEPT STRING PIC X(8)".
5.7 DISPLAY " ".
5.8 MOVE ACCEPT-STRING TO RIGHT-JUST-STRING.
5.9 DISPLAY "RIGHT JUST [", RIGHT-JUST-STRING, "]"
6 "<--- RIGHT JUST STRING PIC X(8) JUST RIGHT".
6.1 DISPLAY " ".
6.2 MOVE ACCEPT-STRING TO ACCEPT-NUMBER.
6.3 DISPLAY "ACCEPT NUMBER [", ACCEPT-NUMBER, "]"
6.4 "<--- ACCEPT NUMBER PIC 9(8)".
6.5 MOVE RIGHT-JUST-STRING TO ACCEPT-NUMBER.
6.6 DISPLAY "RIGHT JUST NUMBER [", ACCEPT-NUMBER, "]"
6.7 "<--- ACCEPT NUMBER PIC 9(8)".
6.8
6.9 MOVE LOW-VALUES TO RIGHT-JUST-STRING.
7 DISPLAY "ENTER ANOTHER NUMBER".
7.1 ACCEPT RIGHT-JUST-STRING.
7.2 DISPLAY " ".
7.3 DISPLAY "YOU ENTERED [", RIGHT-JUST-STRING, "]"
7.4 "<--- RIGHT JUST STRING PIC X(8) JUST RIGHT".
7.5 MOVE RIGHT-JUST-STRING TO ACCEPT-NUMBER.
7.6 DISPLAY "RIGHT JUST NUMBER [", ACCEPT-NUMBER, "]"
7.7 "<--- ACCEPT NUMBER PIC 9(8)".
7.8
7.9 STOP RUN.
When run this produces:
TESTING COBOL ACCEPTS
ENTER A NUMBER
23
YOU ENTERED [23]<--- ACCEPT STRING PIC X(8)
RIGHT JUST [23]<--- RIGHT JUST STRING PIC X(8) JUST RIGHT
ACCEPT NUMBER [23]<--- ACCEPT NUMBER PIC 9(8)
RIGHT JUST NUMBER [23]<--- ACCEPT NUMBER PIC 9(8)
ENTER ANOTHER NUMBER
34
YOU ENTERED [34]<--- RIGHT JUST STRING PIC X(8) JUST RIGHT
RIGHT JUST NUMBER [34]<--- ACCEPT NUMBER PIC 9(8)
If I change the LOW-VALUES to SPACES then it produces this:
TESTING COBOL ACCEPTS
ENTER A NUMBER
23
YOU ENTERED [23 ]<--- ACCEPT STRING PIC X(8)
RIGHT JUST [23 ]<--- RIGHT JUST STRING PIC X(8) JUST RIGHT
ACCEPT NUMBER [23 ]<--- ACCEPT NUMBER PIC 9(8)
RIGHT JUST NUMBER [23 ]<--- ACCEPT NUMBER PIC 9(8)
ENTER ANOTHER NUMBER
34
YOU ENTERED [34 ]<--- RIGHT JUST STRING PIC X(8) JUST RIGHT
RIGHT JUST NUMBER [34 ]<--- ACCEPT NUMBER PIC 9(8)
Also, note that I don't get any zeroes in the numeric field at all.
So, what I have always done is either control the input so that it
is pre-edited to be all numeric (including any leading zeroes) and
accepted it directly into a numeric-defined field. Or accept free
form data (without leading zeroes) and convert it using a byte-by-byte
move from the input field into a receiving field where I right justify
it myself and fill leading zeroes, thereby making it numeric.
Jim Phillips Manager of Information Systems
E-Mail: [log in to unmask] Therm-O-Link, Inc.
Phone: (330) 527-2124 P. O. Box 285
Fax: (330) 527-2123 Garrettsville, Ohio 44231
|