@@ -15134,49 +15134,79 @@ AT_CHECK([COB_PROF_ENABLE=1 COB_PROF_FILE=prof.csv $COBCRUN_DIRECT ./caller], [0
15134
15134
AT_CLEANUP
15135
15135
15136
15136
15137
- AT_SETUP([display all characters of COMP-X])
15138
- # AT_KEYWORDS([display comp-x ])
15137
+ AT_SETUP([PICTURE COMP-X])
15138
+ AT_KEYWORDS([Numeric ])
15139
15139
15140
15140
AT_DATA([prog.cob], [
15141
15141
IDENTIFICATION DIVISION.
15142
15142
PROGRAM-ID. prog.
15143
-
15144
- DATA DIVISION.
15143
+ DATA DIVISION.
15145
15144
WORKING-STORAGE SECTION.
15146
-
15147
- 01 W-X PIC X COMP-X VALUE 99.
15148
- 01 W-Y PIC X COMP-X VALUE 128.
15149
- 01 W-Z PIC X VALUE "z".
15150
- 01 W-ZR REDEFINES W-Z PIC X COMP-X.
15151
- 01 W-A PIC XX COMP-X VALUE 256.
15152
- 01 W-B PIC XX COMP-X VALUE 64046.
15145
+ 01 TST.
15146
+ 05 BVAL PIC 9999 BINARY VALUE 512.
15147
+ 05 XVAL PIC XX COMP-X VALUE 512.
15148
+ 88 XLOW VALUE 0 THRU 256.
15149
+ 88 XHIGH VALUE 257 THRU 65536.
15150
+ 05 VAL9 PIC 99999 COMP-X VALUE 1024.
15151
+ 88 LOW9 VALUE 0 THRU 256.
15152
+ 88 HIGH9 VALUE 257 THRU 65536.
15153
+ 05 XVAL2 PIC XX COMP-X VALUE 16706.
15154
+ 05 XVALX REDEFINES XVAL2 PIC XX.
15155
+ 05 YVALX PIC XX VALUE 'A '.
15156
+ 05 YVAL2 REDEFINES YVALX PIC XX COMP-X.
15153
15157
15154
15158
PROCEDURE DIVISION.
15155
- MAIN.
15156
- DISPLAY FUNCTION BYTE-LENGTH (W-X).
15157
- DISPLAY FUNCTION BYTE-LENGTH (W-Y).
15158
- DISPLAY FUNCTION BYTE-LENGTH (W-ZR).
15159
- DISPLAY FUNCTION BYTE-LENGTH (W-A).
15160
- DISPLAY FUNCTION BYTE-LENGTH (W-B).
15161
- DISPLAY W-X.
15162
- DISPLAY W-Y.
15163
- DISPLAY W-ZR.
15164
- DISPLAY W-A.
15165
- DISPLAY W-B.
15166
- STOP RUN.
15167
- ])
15168
-
15169
- AT_CHECK([$COMPILE prog.cob])
15170
- AT_CHECK([$COBCRUN_DIRECT ./prog], [0], [1
15171
- 1
15172
- 1
15173
- 2
15174
- 2
15175
- 099
15176
- 128
15177
- 122
15178
- 00256
15179
- 64046
15159
+ DISPLAY " XVAL is " XVAL "; Length is " LENGTH OF XVAL.
15160
+ DISPLAY " VAL9 is " VAL9 "; Length is " LENGTH OF VAL9.
15161
+ MOVE 10240 TO XVAL.
15162
+ DISPLAY " XVAL is " XVAL "; Length is " LENGTH OF XVAL.
15163
+ DISPLAY "XVAL2 is " XVAL2 "; Length is " LENGTH OF XVAL2.
15164
+ DISPLAY "XVALX is " XVALX "; Length is " LENGTH OF XVALX.
15165
+ ADD 1 TO XVAL2.
15166
+ DISPLAY "XVALX is " XVALX " after +1;".
15167
+ COMPUTE XVAL2 = XVAL2 / 256 + 8192.
15168
+ DISPLAY "XVALX is " XVALX " after / 256 + 8192;".
15169
+ MOVE 'DE' TO XVALX.
15170
+ DISPLAY "Numeric: " XVAL2 " is char " XVALX.
15171
+ MOVE ZERO TO YVAL2.
15172
+ MOVE 'D' TO YVALX (1:1)
15173
+ MOVE LOW-VALUES TO YVALX (2:1)
15174
+ SUBTRACT YVAL2 FROM XVAL2.
15175
+ MOVE ' ' TO YVALX (1:1)
15176
+ MOVE LOW-VALUES TO YVALX (2:1)
15177
+ ADD YVAL2 TO XVAL2.
15178
+ DISPLAY "Numeric: " XVAL2 " is char " XVALX.
15179
+ MOVE 0 TO XVAL.
15180
+ ADD 10240 TO XVAL.
15181
+ IF XVAL = 10240
15182
+ DISPLAY "XVAL is " XVAL
15183
+ ELSE
15184
+ DISPLAY "XVAL is not 10240 but " XVAL
15185
+ END-IF.
15186
+ MOVE 0 TO BVAL.
15187
+ ADD 10240 TO BVAL.
15188
+ IF BVAL = 0240
15189
+ DISPLAY "BVAL is " BVAL
15190
+ ELSE
15191
+ DISPLAY "BVAL is not 0240 but " BVAL
15192
+ END-IF.
15193
+ STOP RUN.
15194
+ ])
15195
+
15196
+ AT_CHECK([$COMPILE prog.cob], [0], [], [])
15197
+
15198
+ AT_CHECK([./prog], [0], [ XVAL is 00512; Length is 2
15199
+ VAL9 is 01024; Length is 3
15200
+ XVAL is 10240; Length is 2
15201
+ XVAL2 is 16706; Length is 2
15202
+ XVALX is AB; Length is 2
15203
+ XVALX is AC after +1;
15204
+ XVALX is A after / 256 + 8192;
15205
+ Numeric: 17477 is char DE
15206
+ Numeric: 08261 is char E
15207
+ XVAL is 10240
15208
+ BVAL is 0240
15180
15209
], [])
15181
15210
15182
15211
AT_CLEANUP
15212
+
0 commit comments