000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. NUMSPL.
000003 ENVIRONMENT DIVISION.
000004 DATA DIVISION.
000005 WORKING-STORAGE SECTION.
000006 01 I PIC S9(5) COMP-3 VALUE 0.
000007 01 J PIC 9(4) COMP-6 VALUE 0.
000008 01 K PIC 9(4) COMP-6 VALUE 0.
000009 01 N1 PIC 9(13).
000010 01 N1-X REDEFINES N1.
000011 02 VEC-N1 PIC X OCCURS 13.
000012 01 N2 PIC V9(5).
000013 01 N2-X REDEFINES N2.
000014 02 VEC-N2 PIC X OCCURS 5.
000015 01 X PIC X(20) JUST RIGHT.
000016 01 X-R REDEFINES X.
000017 02 VEC-X PIC X OCCURS 20.
000018 01 SW-DOT PIC 9.
000019 01 SW-SIGN PIC 9.
000020**********************
000021 LINKAGE SECTION.
000022 01 INP PIC X(20) JUST RIGHT.
000023 01 N PIC S9(12)V9(5) COMP-3.
000024********************************************************
000025 PROCEDURE DIVISION USING INP N.
000026 MAIN SECTION.
000027 1. MOVE INP TO X.
000028 PERFORM IN-NUM.
000029 EXIT PROGRAM.
000030 IN-NUM.
000031 IF VEC-X(20) = SPACE MOVE "," TO VEC-X(20).
000032 INSPECT X REPLACING ALL SPACE BY ZERO.
000033 MOVE 0 TO N1 N2.
000034 MOVE 0 TO K SW-DOT SW-SIGN.
000035 PERFORM IN-NUM1 VARYING I FROM 1 BY 1 UNTIL I > 20.
000036 IF SW-DOT > 0 SUBTRACT 1 FROM K
000037 ELSE MOVE 20 TO K.
000038 MOVE 14 TO J.
000039 PERFORM IN-NUM2
000040 VARYING I FROM K BY -1 UNTIL (J = 1 OR I < 1).
000041 IF SW-DOT > 0 ADD 2 TO K
000042 MOVE 0 TO J
000043 PERFORM IN-NUM3
000044 VARYING I FROM K BY 1 UNTIL (J = 5 OR I > 20).
000045 ADD N1 N2 GIVING N.
000046 IF SW-SIGN = 1 MULTIPLY -1 BY N.
000047 IN-NUM1.
000048 IF VEC-X(I) = "." MOVE I TO K
000049 MOVE 77 TO I
000050 MOVE 1 TO SW-DOT.
000051 IN-NUM2.
000052 IF VEC-X(I) = "-" MOVE 1 TO SW-SIGN
000053 ELSE IF VEC-X(I) NOT = "," SUBTRACT 1 FROM J
000054 MOVE VEC-X(I) TO VEC-N1(J).
000055 IN-NUM3.
000056 IF VEC-X(I) = "-" MOVE 1 TO SW-SIGN
000057 ELSE IF VEC-X(I) NOT = "," ADD 1 TO J
000058 MOVE VEC-X(I) TO VEC-N2(J).
000059 EX-IN-NUM.