MainframeMaster

COBOL Tutorial

COBOL INTO Keyword

The INTO keyword represents a fundamental data destination specification mechanism within COBOL programming environments, providing precise control over result storage for arithmetic computations, string manipulations, and data transformation operations. This keyword embodies the principles of explicit data flow by supporting clear destination designation, flexible result storage options, and comprehensive data movement control while maintaining type safety, ensuring data integrity, and facilitating efficient program execution across enterprise applications requiring sophisticated data processing, reliable result storage, and comprehensive data manipulation with predictable destination handling and optimized performance characteristics.

INTO Usage Patterns

Common INTO Operations
cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
*> COMPUTE with INTO COMPUTE result-field = expression *> DIVIDE with INTO (quotient and remainder) DIVIDE dividend BY divisor GIVING quotient REMAINDER remainder *> STRING with INTO STRING field1 field2 DELIMITED BY SIZE INTO result-field *> UNSTRING with INTO (multiple destinations) UNSTRING source-field DELIMITED BY delimiter INTO field1 field2 field3 *> Function results with INTO MOVE FUNCTION LENGTH(input-field) TO length-field MOVE FUNCTION UPPER-CASE(input-field) TO output-field *> Basic examples 01 WS-NUMBERS. 05 WS-NUM1 PIC 9(3) VALUE 100. 05 WS-NUM2 PIC 9(3) VALUE 25. 05 WS-RESULT PIC 9(5). 05 WS-QUOTIENT PIC 9(3). 05 WS-REMAINDER PIC 9(2). 01 WS-STRINGS. 05 WS-FIRST-NAME PIC X(15) VALUE "JOHN". 05 WS-LAST-NAME PIC X(20) VALUE "SMITH". 05 WS-FULL-NAME PIC X(40). 05 WS-INPUT-DATA PIC X(50) VALUE "A,B,C,D,E". 05 WS-FIELD1 PIC X(10). 05 WS-FIELD2 PIC X(10). 05 WS-FIELD3 PIC X(10). PROCEDURE DIVISION. *> Arithmetic operations with INTO COMPUTE WS-RESULT = WS-NUM1 + WS-NUM2 *> Result stored in WS-RESULT DIVIDE WS-NUM1 BY WS-NUM2 GIVING WS-QUOTIENT REMAINDER WS-REMAINDER *> Quotient in WS-QUOTIENT, remainder in WS-REMAINDER *> String operations with INTO STRING WS-FIRST-NAME " " WS-LAST-NAME DELIMITED BY SIZE INTO WS-FULL-NAME *> Concatenated result in WS-FULL-NAME *> String parsing with multiple INTO UNSTRING WS-INPUT-DATA DELIMITED BY "," INTO WS-FIELD1, WS-FIELD2, WS-FIELD3 *> Each field gets corresponding part
Data Movement
Result Storage
Destination Control

Comprehensive INTO Examples

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
IDENTIFICATION DIVISION. PROGRAM-ID. INTO-KEYWORD-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-ARITHMETIC-FIELDS. 05 WS-SALES-AMOUNT PIC 9(8)V99 VALUE 15000.50. 05 WS-TAX-RATE PIC 9V9999 VALUE 0.0825. 05 WS-DISCOUNT-RATE PIC 9V99 VALUE 0.10. 05 WS-TAX-AMOUNT PIC 9(6)V99. 05 WS-DISCOUNT-AMOUNT PIC 9(6)V99. 05 WS-NET-AMOUNT PIC 9(8)V99. 05 WS-COMMISSION-RATE PIC 9V9999 VALUE 0.0250. 05 WS-COMMISSION PIC 9(6)V99. 01 WS-DIVISION-OPERATIONS. 05 WS-TOTAL-HOURS PIC 9(4) VALUE 2080. 05 WS-WEEKS-PER-YEAR PIC 9(2) VALUE 52. 05 WS-HOURS-PER-WEEK PIC 9(2). 05 WS-REMAINDER-HOURS PIC 9(2). 05 WS-ANNUAL-SALARY PIC 9(7) VALUE 75000. 05 WS-HOURLY-RATE PIC 9(3)V99. 05 WS-RATE-REMAINDER PIC 9(2). 01 WS-STRING-OPERATIONS. 05 WS-CUSTOMER-DATA. 10 WS-CUST-ID PIC X(8) VALUE "CUST0001". 10 WS-CUST-NAME PIC X(30) VALUE "JOHN P. SMITH". 10 WS-CUST-TYPE PIC X(10) VALUE "PREMIUM". 10 WS-CUST-REGION PIC X(15) VALUE "NORTHEAST". 05 WS-FORMATTED-RECORD PIC X(100). 05 WS-DISPLAY-LINE PIC X(80). 01 WS-PARSING-FIELDS. 05 WS-CSV-INPUT PIC X(100) VALUE "Smith,John,Manager,Sales,75000,2020-01-15". 05 WS-PIPE-INPUT PIC X(100) VALUE "PROD001|Widget A|Electronics|49.99|100". 05 WS-EMPLOYEE-RECORD. 10 WS-EMP-LASTNAME PIC X(20). 10 WS-EMP-FIRSTNAME PIC X(15). 10 WS-EMP-TITLE PIC X(20). 10 WS-EMP-DEPARTMENT PIC X(15). 10 WS-EMP-SALARY PIC X(10). 10 WS-EMP-HIRE-DATE PIC X(10). 05 WS-PRODUCT-RECORD. 10 WS-PROD-CODE PIC X(10). 10 WS-PROD-NAME PIC X(25). 10 WS-PROD-CATEGORY PIC X(15). 10 WS-PROD-PRICE PIC X(10). 10 WS-PROD-QUANTITY PIC X(10). 01 WS-FUNCTION-RESULTS. 05 WS-INPUT-TEXT PIC X(50) VALUE "Hello World 123". 05 WS-UPPER-TEXT PIC X(50). 05 WS-TEXT-LENGTH PIC 9(3). 05 WS-CURRENT-DATE PIC 9(8). 05 WS-CURRENT-TIME PIC 9(8). 05 WS-FORMATTED-DATE PIC X(10). 05 WS-NUMERIC-VALUE PIC X(10) VALUE "12345". 05 WS-CONVERTED-NUM PIC 9(5). 01 WS-COMPLEX-CALCULATIONS. 05 WS-INVESTMENT-AMOUNT PIC 9(8)V99 VALUE 100000.00. 05 WS-INTEREST-RATE PIC 9V9999 VALUE 0.0450. 05 WS-YEARS PIC 9(2) VALUE 5. 05 WS-COMPOUND-INTEREST PIC 9(8)V99. 05 WS-MONTHLY-PAYMENT PIC 9(6)V99. 05 WS-PRINCIPAL PIC 9(8)V99. 05 WS-INTEREST-PORTION PIC 9(6)V99. 01 WS-COUNTERS-AND-FLAGS. 05 WS-COUNTER PIC 9(3) VALUE 0. 05 WS-PROCESSING-FLAG PIC X VALUE 'N'. 88 PROCESSING-DONE VALUE 'Y'. 05 WS-ERROR-COUNT PIC 9(3) VALUE 0. PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM DEMONSTRATE-ARITHMETIC-INTO PERFORM DEMONSTRATE-DIVISION-INTO PERFORM DEMONSTRATE-STRING-INTO PERFORM DEMONSTRATE-UNSTRING-INTO PERFORM DEMONSTRATE-FUNCTION-INTO PERFORM DEMONSTRATE-COMPLEX-CALCULATIONS PERFORM DEMONSTRATE-ADVANCED-TECHNIQUES STOP RUN. DEMONSTRATE-ARITHMETIC-INTO. DISPLAY "=== ARITHMETIC OPERATIONS WITH INTO ===" *> Calculate tax amount COMPUTE WS-TAX-AMOUNT = WS-SALES-AMOUNT * WS-TAX-RATE DISPLAY "Sales Amount: $" WS-SALES-AMOUNT DISPLAY "Tax Rate: " WS-TAX-RATE DISPLAY "Tax Amount: $" WS-TAX-AMOUNT *> Calculate discount COMPUTE WS-DISCOUNT-AMOUNT = WS-SALES-AMOUNT * WS-DISCOUNT-RATE DISPLAY "Discount Amount: $" WS-DISCOUNT-AMOUNT *> Calculate net amount (sales + tax - discount) COMPUTE WS-NET-AMOUNT = WS-SALES-AMOUNT + WS-TAX-AMOUNT - WS-DISCOUNT-AMOUNT DISPLAY "Net Amount: $" WS-NET-AMOUNT *> Calculate commission on net amount COMPUTE WS-COMMISSION = WS-NET-AMOUNT * WS-COMMISSION-RATE DISPLAY "Commission: $" WS-COMMISSION DISPLAY SPACES. DEMONSTRATE-DIVISION-INTO. DISPLAY "=== DIVISION OPERATIONS WITH INTO ===" *> Calculate hours per week with remainder DIVIDE WS-TOTAL-HOURS BY WS-WEEKS-PER-YEAR GIVING WS-HOURS-PER-WEEK REMAINDER WS-REMAINDER-HOURS DISPLAY "Total Annual Hours: " WS-TOTAL-HOURS DISPLAY "Weeks per Year: " WS-WEEKS-PER-YEAR DISPLAY "Hours per Week: " WS-HOURS-PER-WEEK DISPLAY "Remainder Hours: " WS-REMAINDER-HOURS *> Calculate hourly rate from annual salary DIVIDE WS-ANNUAL-SALARY BY WS-TOTAL-HOURS GIVING WS-HOURLY-RATE REMAINDER WS-RATE-REMAINDER DISPLAY "Annual Salary: $" WS-ANNUAL-SALARY DISPLAY "Hourly Rate: $" WS-HOURLY-RATE DISPLAY "Rate Remainder: " WS-RATE-REMAINDER DISPLAY SPACES. DEMONSTRATE-STRING-INTO. DISPLAY "=== STRING OPERATIONS WITH INTO ===" *> Create formatted customer record STRING "Customer: " WS-CUST-ID " | " WS-CUST-NAME " | Type: " WS-CUST-TYPE " | Region: " WS-CUST-REGION DELIMITED BY SIZE INTO WS-FORMATTED-RECORD DISPLAY "Formatted Record:" DISPLAY WS-FORMATTED-RECORD *> Create display line with alignment STRING "ID: " WS-CUST-ID SPACE "Name: " WS-CUST-NAME SPACE "(" WS-CUST-TYPE ")" DELIMITED BY SIZE INTO WS-DISPLAY-LINE DISPLAY "Display Line:" DISPLAY WS-DISPLAY-LINE *> Create report header STRING "Customer Report - " WS-CUST-REGION " Region" DELIMITED BY SIZE INTO WS-DISPLAY-LINE DISPLAY "Report Header:" DISPLAY WS-DISPLAY-LINE DISPLAY SPACES. DEMONSTRATE-UNSTRING-INTO. DISPLAY "=== UNSTRING OPERATIONS WITH INTO ===" *> Parse CSV employee data DISPLAY "Parsing CSV: " WS-CSV-INPUT UNSTRING WS-CSV-INPUT DELIMITED BY "," INTO WS-EMP-LASTNAME, WS-EMP-FIRSTNAME, WS-EMP-TITLE, WS-EMP-DEPARTMENT, WS-EMP-SALARY, WS-EMP-HIRE-DATE DISPLAY "Employee Record:" DISPLAY " Last Name: " WS-EMP-LASTNAME DISPLAY " First Name: " WS-EMP-FIRSTNAME DISPLAY " Title: " WS-EMP-TITLE DISPLAY " Department: " WS-EMP-DEPARTMENT DISPLAY " Salary: $" WS-EMP-SALARY DISPLAY " Hire Date: " WS-EMP-HIRE-DATE *> Parse pipe-delimited product data DISPLAY "Parsing Pipe Data: " WS-PIPE-INPUT UNSTRING WS-PIPE-INPUT DELIMITED BY "|" INTO WS-PROD-CODE, WS-PROD-NAME, WS-PROD-CATEGORY, WS-PROD-PRICE, WS-PROD-QUANTITY DISPLAY "Product Record:" DISPLAY " Code: " WS-PROD-CODE DISPLAY " Name: " WS-PROD-NAME DISPLAY " Category: " WS-PROD-CATEGORY DISPLAY " Price: $" WS-PROD-PRICE DISPLAY " Quantity: " WS-PROD-QUANTITY DISPLAY SPACES. DEMONSTRATE-FUNCTION-INTO. DISPLAY "=== FUNCTION RESULTS WITH INTO ===" *> Get text length MOVE FUNCTION LENGTH(WS-INPUT-TEXT) TO WS-TEXT-LENGTH DISPLAY "Input Text: '" WS-INPUT-TEXT "'" DISPLAY "Text Length: " WS-TEXT-LENGTH *> Convert to uppercase MOVE FUNCTION UPPER-CASE(WS-INPUT-TEXT) TO WS-UPPER-TEXT DISPLAY "Uppercase: '" WS-UPPER-TEXT "'" *> Get current date and time MOVE FUNCTION CURRENT-DATE(1:8) TO WS-CURRENT-DATE MOVE FUNCTION CURRENT-DATE(9:8) TO WS-CURRENT-TIME DISPLAY "Current Date: " WS-CURRENT-DATE DISPLAY "Current Time: " WS-CURRENT-TIME *> Format date for display STRING WS-CURRENT-DATE(5:2) "/" WS-CURRENT-DATE(7:2) "/" WS-CURRENT-DATE(1:4) DELIMITED BY SIZE INTO WS-FORMATTED-DATE DISPLAY "Formatted Date: " WS-FORMATTED-DATE *> Convert string to numeric MOVE FUNCTION NUMVAL(WS-NUMERIC-VALUE) TO WS-CONVERTED-NUM DISPLAY "String Value: '" WS-NUMERIC-VALUE "'" DISPLAY "Numeric Value: " WS-CONVERTED-NUM DISPLAY SPACES. DEMONSTRATE-COMPLEX-CALCULATIONS. DISPLAY "=== COMPLEX CALCULATIONS WITH INTO ===" *> Calculate compound interest COMPUTE WS-COMPOUND-INTEREST = WS-INVESTMENT-AMOUNT * ((1 + WS-INTEREST-RATE) ** WS-YEARS) - WS-INVESTMENT-AMOUNT DISPLAY "Investment Calculation:" DISPLAY " Principal: $" WS-INVESTMENT-AMOUNT DISPLAY " Rate: " WS-INTEREST-RATE DISPLAY " Years: " WS-YEARS DISPLAY " Compound Interest: $" WS-COMPOUND-INTEREST *> Calculate monthly payment for loan COMPUTE WS-MONTHLY-PAYMENT = (WS-INVESTMENT-AMOUNT * (WS-INTEREST-RATE / 12)) / (1 - ((1 + (WS-INTEREST-RATE / 12)) ** (- WS-YEARS * 12))) DISPLAY "Loan Payment Calculation:" DISPLAY " Loan Amount: $" WS-INVESTMENT-AMOUNT DISPLAY " Monthly Payment: $" WS-MONTHLY-PAYMENT *> Calculate first month interest and principal COMPUTE WS-INTEREST-PORTION = WS-INVESTMENT-AMOUNT * (WS-INTEREST-RATE / 12) COMPUTE WS-PRINCIPAL = WS-MONTHLY-PAYMENT - WS-INTEREST-PORTION DISPLAY "First Payment Breakdown:" DISPLAY " Interest Portion: $" WS-INTEREST-PORTION DISPLAY " Principal Portion: $" WS-PRINCIPAL DISPLAY SPACES. DEMONSTRATE-ADVANCED-TECHNIQUES. DISPLAY "=== ADVANCED INTO TECHNIQUES ===" PERFORM CONDITIONAL-INTO-OPERATIONS PERFORM LOOP-WITH-INTO-OPERATIONS PERFORM ERROR-HANDLING-WITH-INTO DISPLAY "Advanced techniques demonstration completed" DISPLAY SPACES. CONDITIONAL-INTO-OPERATIONS. DISPLAY "Conditional INTO Operations:" *> Conditional calculation based on customer type IF WS-CUST-TYPE = "PREMIUM" COMPUTE WS-DISCOUNT-AMOUNT = WS-SALES-AMOUNT * 0.15 DISPLAY " Premium discount applied: 15%" ELSE IF WS-CUST-TYPE = "STANDARD" COMPUTE WS-DISCOUNT-AMOUNT = WS-SALES-AMOUNT * 0.10 DISPLAY " Standard discount applied: 10%" ELSE COMPUTE WS-DISCOUNT-AMOUNT = WS-SALES-AMOUNT * 0.05 DISPLAY " Basic discount applied: 5%" END-IF END-IF DISPLAY " Calculated Discount: $" WS-DISCOUNT-AMOUNT. LOOP-WITH-INTO-OPERATIONS. DISPLAY "Loop Operations with INTO:" *> Calculate running totals MOVE 0 TO WS-NET-AMOUNT PERFORM VARYING WS-COUNTER FROM 1 BY 1 UNTIL WS-COUNTER > 5 COMPUTE WS-TAX-AMOUNT = WS-COUNTER * 100 ADD WS-TAX-AMOUNT TO WS-NET-AMOUNT DISPLAY " Iteration " WS-COUNTER ": Added $" WS-TAX-AMOUNT " Total: $" WS-NET-AMOUNT END-PERFORM. ERROR-HANDLING-WITH-INTO. DISPLAY "Error Handling with INTO:" *> Safe division with error checking IF WS-WEEKS-PER-YEAR > 0 DIVIDE WS-TOTAL-HOURS BY WS-WEEKS-PER-YEAR GIVING WS-HOURS-PER-WEEK REMAINDER WS-REMAINDER-HOURS DISPLAY " Division successful: " WS-HOURS-PER-WEEK " hours/week" ELSE MOVE 0 TO WS-HOURS-PER-WEEK MOVE 0 TO WS-REMAINDER-HOURS ADD 1 TO WS-ERROR-COUNT DISPLAY " Error: Division by zero prevented" END-IF DISPLAY " Error Count: " WS-ERROR-COUNT. *> Advanced INTO patterns FINANCIAL-CALCULATIONS. DISPLAY "=== FINANCIAL CALCULATIONS ===" *> Present Value calculation COMPUTE WS-COMPOUND-INTEREST = WS-INVESTMENT-AMOUNT / ((1 + WS-INTEREST-RATE) ** WS-YEARS) DISPLAY "Present Value: $" WS-COMPOUND-INTEREST *> Future Value with compound interest COMPUTE WS-NET-AMOUNT = WS-INVESTMENT-AMOUNT * ((1 + WS-INTEREST-RATE) ** WS-YEARS) DISPLAY "Future Value: $" WS-NET-AMOUNT. DATA-TRANSFORMATION. DISPLAY "=== DATA TRANSFORMATION ===" *> Transform customer data format STRING WS-CUST-NAME ", " WS-CUST-TYPE " Customer, " WS-CUST-REGION DELIMITED BY SIZE INTO WS-FORMATTED-RECORD DISPLAY "Transformed Format: " WS-FORMATTED-RECORD *> Extract and reformat date components UNSTRING WS-EMP-HIRE-DATE DELIMITED BY "-" INTO WS-FIELD1, WS-FIELD2, WS-FIELD3 STRING WS-FIELD2 "/" WS-FIELD3 "/" WS-FIELD1 DELIMITED BY SIZE INTO WS-FORMATTED-DATE DISPLAY "Original Date: " WS-EMP-HIRE-DATE DISPLAY "Reformatted: " WS-FORMATTED-DATE. PERFORMANCE-OPTIMIZATION. DISPLAY "=== PERFORMANCE OPTIMIZATION ===" *> Efficient bulk calculations COMPUTE WS-TAX-AMOUNT = WS-SALES-AMOUNT * WS-TAX-RATE COMPUTE WS-DISCOUNT-AMOUNT = WS-SALES-AMOUNT * WS-DISCOUNT-RATE COMPUTE WS-COMMISSION = (WS-SALES-AMOUNT + WS-TAX-AMOUNT - WS-DISCOUNT-AMOUNT) * WS-COMMISSION-RATE COMPUTE WS-NET-AMOUNT = WS-SALES-AMOUNT + WS-TAX-AMOUNT - WS-DISCOUNT-AMOUNT - WS-COMMISSION DISPLAY "Optimized calculation results:" DISPLAY " Tax: $" WS-TAX-AMOUNT DISPLAY " Discount: $" WS-DISCOUNT-AMOUNT DISPLAY " Commission: $" WS-COMMISSION DISPLAY " Net Amount: $" WS-NET-AMOUNT. VALIDATION-AND-CONVERSION. DISPLAY "=== VALIDATION AND CONVERSION ===" *> Validate and convert data IF WS-NUMERIC-VALUE IS NUMERIC MOVE FUNCTION NUMVAL(WS-NUMERIC-VALUE) TO WS-CONVERTED-NUM DISPLAY "Valid number converted: " WS-CONVERTED-NUM ELSE MOVE 0 TO WS-CONVERTED-NUM DISPLAY "Invalid number, defaulted to 0" END-IF *> Safe string operations IF WS-INPUT-TEXT NOT = SPACES MOVE FUNCTION UPPER-CASE(WS-INPUT-TEXT) TO WS-UPPER-TEXT MOVE FUNCTION LENGTH(WS-INPUT-TEXT) TO WS-TEXT-LENGTH DISPLAY "Processed text: " WS-UPPER-TEXT DISPLAY "Length: " WS-TEXT-LENGTH ELSE MOVE SPACES TO WS-UPPER-TEXT MOVE 0 TO WS-TEXT-LENGTH DISPLAY "Empty input handled" END-IF. BUSINESS-RULE-CALCULATIONS. DISPLAY "=== BUSINESS RULE CALCULATIONS ===" *> Complex business logic with INTO EVALUATE WS-CUST-TYPE WHEN "PREMIUM" COMPUTE WS-DISCOUNT-RATE = 0.20 WHEN "GOLD" COMPUTE WS-DISCOUNT-RATE = 0.15 WHEN "SILVER" COMPUTE WS-DISCOUNT-RATE = 0.10 WHEN OTHER COMPUTE WS-DISCOUNT-RATE = 0.05 END-EVALUATE COMPUTE WS-DISCOUNT-AMOUNT = WS-SALES-AMOUNT * WS-DISCOUNT-RATE COMPUTE WS-FINAL-AMOUNT = WS-SALES-AMOUNT - WS-DISCOUNT-AMOUNT DISPLAY "Business Rule Applied:" DISPLAY " Customer Type: " WS-CUST-TYPE DISPLAY " Discount Rate: " WS-DISCOUNT-RATE DISPLAY " Discount Amount: $" WS-DISCOUNT-AMOUNT DISPLAY " Final Amount: $" WS-FINAL-AMOUNT.

INTO with Different Statements

Arithmetic Operations
  • • COMPUTE expression INTO result
  • • DIVIDE dividend BY divisor GIVING quotient
  • • ADD/SUBTRACT operations with results
  • • Mathematical function results
String Operations
  • • STRING concatenation INTO destination
  • • UNSTRING parsing INTO multiple fields
  • • Function results INTO string variables
  • • Data format conversion results

Interactive Tutorial

Hands-On Exercise: Data Processing with INTO
Practice using INTO with various operations for data processing

Exercise 1: Financial Calculations

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
01 WS-FINANCIAL-DATA. 05 WS-PRINCIPAL PIC 9(7)V99 VALUE 50000.00. 05 WS-RATE PIC 9V9999 VALUE 0.0525. 05 WS-YEARS PIC 9(2) VALUE 10. 05 WS-INTEREST PIC 9(8)V99. 05 WS-TOTAL PIC 9(8)V99. PROCEDURE DIVISION. *> Calculate compound interest COMPUTE WS-INTEREST = WS-PRINCIPAL * ((1 + WS-RATE) ** WS-YEARS) - WS-PRINCIPAL COMPUTE WS-TOTAL = WS-PRINCIPAL + WS-INTEREST DISPLAY "Principal: $" WS-PRINCIPAL DISPLAY "Interest: $" WS-INTEREST DISPLAY "Total: $" WS-TOTAL.

Exercise 2: Data Parsing

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
01 WS-INPUT-RECORD PIC X(100) VALUE "John,Doe,Manager,Sales,75000,2020-01-15". 01 WS-EMPLOYEE-DATA. 05 WS-FIRST-NAME PIC X(15). 05 WS-LAST-NAME PIC X(15). 05 WS-TITLE PIC X(20). 05 WS-DEPARTMENT PIC X(15). 05 WS-SALARY PIC X(10). 05 WS-HIRE-DATE PIC X(10). PROCEDURE DIVISION. UNSTRING WS-INPUT-RECORD DELIMITED BY "," INTO WS-FIRST-NAME, WS-LAST-NAME, WS-TITLE, WS-DEPARTMENT, WS-SALARY, WS-HIRE-DATE.

Best Practices

Knowledge Check

Test Your Understanding

Question 1: Purpose

What is the primary purpose of the INTO keyword?

Answer: INTO specifies the destination where results from operations (arithmetic, string, functions) should be stored. It provides explicit control over where computed or processed data is placed.

Question 2: Multiple Destinations

Which operations can use multiple INTO clauses?

Answer: UNSTRING can use multiple INTO clauses to store parsed components in different fields. DIVIDE can use GIVING and REMAINDER to store quotient and remainder in separate fields.

Question 3: Data Type Considerations

What should you consider when choosing destination fields for INTO operations?

Answer: Consider field size to prevent truncation, data type compatibility for proper conversion, decimal places for numeric results, and potential for overflow in calculations.

Common INTO Patterns

Calculation Results
cobol
1
2
3
4
5
6
COMPUTE WS-TOTAL = WS-SUBTOTAL + WS-TAX - WS-DISCOUNT DIVIDE WS-TOTAL BY WS-QUANTITY GIVING WS-UNIT-PRICE REMAINDER WS-REMAINDER
String Processing
cobol
1
2
3
4
5
6
STRING WS-FIRST " " WS-LAST DELIMITED BY SIZE INTO WS-FULL-NAME UNSTRING WS-CSV-DATA DELIMITED BY "," INTO WS-FIELD1, WS-FIELD2, WS-FIELD3