IDENTIFICATION DIVISION.
PROGRAM-ID.  Numbers4.
DATA DIVISION.
WORKING-STORAGE SECTION.
  VALID-NUMBER             PIC X VALUE ‘N’.
  LEAD-SEP-NEG-9-5V99AN.
    05  LEAD-SEP-NEG-9-5V99  PIC S9(5)V99
                    SIGN LEADING SEPARATE VALUE ZERO.
  LEAD-SEP-CHAR-9-5V99AN.
    05  LEAD-SEP-CHAR-SIGN   PIC X VALUE SPACE.
    05  LEAD-SEP-CHAR-9-5V99 PIC 9(5)V99 VALUE ZERO.
  LEAD-SEP-CHAR-RESULT     PIC S9(5)V99
                    SIGN LEADING SEPARATE VALUE ZERO.
PROCEDURE DIVISION.
-MAIN.
    PERFORM 0100-LOOP1
       UNTIL VALID-NUMBER = ‘Y’.
    DISPLAY ‘THE NUMBER ENTERED IS: ‘
       LEAD-SEP-NEG-9-5V99.
    MOVE ‘N’ TO VALID-NUMBER.
    PERFORM 0200-LOOP2
       UNTIL VALID-NUMBER = ‘Y’.
    MOVE LEAD-SEP-CHAR-9-5V99 TO LEAD-SEP-CHAR-RESULT.
    IF LEAD-SEP-CHAR-SIGN = ‘-‘
       MULTIPLY LEAD-SEP-CHAR-RESULT BY -1
          GIVING LEAD-SEP-CHAR-RESULT.
    DISPLAY ‘THE NUMBER ENTERED IS: ‘
       LEAD-SEP-CHAR-RESULT.
    STOP RUN.
-LOOP1.
    MOVE ZERO TO LEAD-SEP-NEG-9-5V99.
    DISPLAY ‘ENTER S9(5)V99 AS +/- AND 7 DIGITS: ‘.
    ACCEPT LEAD-SEP-NEG-9-5V99AN.
    IF LEAD-SEP-NEG-9-5V99 NOT NUMERIC
       DISPLAY ‘TRY AGAIN’.
    IF LEAD-SEP-NEG-9-5V99 NUMERIC
       MOVE ‘Y’ TO VALID-NUMBER.
-LOOP2.
    MOVE ZERO TO LEAD-SEP-CHAR-9-5V99.
    MOVE SPACE TO LEAD-SEP-CHAR-SIGN.
    DISPLAY ‘ENTER S9(5)V99 AS +/- AND 7 DIGITS: ‘.
    ACCEPT LEAD-SEP-CHAR-9-5V99AN.
    MOVE ‘Y’ TO VALID-NUMBER.
    IF LEAD-SEP-CHAR-9-5V99 NOT NUMERIC
        MOVE ‘N’ TO VALID-NUMBER.
    IF LEAD-SEP-CHAR-SIGN NOT = ‘-‘
       AND LEAD-SEP-CHAR-SIGN NOT = ‘+’
       AND LEAD-SEP-CHAR-SIGN NOT = SPACE
         MOVE ‘N’ TO VALID-NUMBER.
    IF VALID-NUMBER = ‘N’
       DISPLAY ‘TRY AGAIN’.
