MainframeMaster

COBOL Tutorial

COBOL NUMBER

The NUMBER data type represents comprehensive numeric data management and sophisticated mathematical computation capabilities within COBOL programming environments, providing advanced precision control features, enhanced decimal accuracy mechanisms, and intelligent numeric processing that enable precise business calculations, complex mathematical operations, and systematic numeric data handling processes. This data type embodies modern numeric programming principles by supporting comprehensive precision specifications, enabling sophisticated decimal arithmetic workflows, and facilitating precise numeric control requirements while maintaining calculation accuracy, ensuring predictable numeric behavior, and enabling flexible numeric architectures across enterprise applications requiring exact decimal computations, financial calculations, and reliable numeric processing throughout sophisticated business logic scenarios and mathematical computation workflows.

NUMBER Data Type Declaration

Basic NUMBER Syntax and Usage
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
*> Basic NUMBER declarations 01 WS-CALCULATION-AMOUNT NUMBER(10,2). 01 WS-INTEREST-RATE NUMBER(5,4). 01 WS-PRECISION-VALUE NUMBER(18,6). 01 WS-COUNTER NUMBER(8). *> NUMBER with VALUE clauses 01 WS-TAX-RATE NUMBER(4,4) VALUE 0.0825. 01 WS-DISCOUNT-PERCENT NUMBER(5,2) VALUE 15.50. 01 WS-MINIMUM-BALANCE NUMBER(10,2) VALUE -500.00. *> NUMBER in table structures 01 WS-MONTHLY-SALES-TABLE. 05 WS-SALES-MONTH OCCURS 12 TIMES. 10 WS-MONTH-TOTAL NUMBER(12,2). 10 WS-MONTH-AVERAGE NUMBER(10,2). 10 WS-GROWTH-RATE NUMBER(6,4). *> NUMBER with sign specifications 01 WS-SIGNED-NUMBERS. 05 WS-PROFIT-LOSS NUMBER(15,2) SIGN LEADING. 05 WS-VARIANCE NUMBER(12,4) SIGN TRAILING. 05 WS-ADJUSTMENT NUMBER(10,2) SIGN SEPARATE. *> NUMBER for financial calculations 01 WS-FINANCIAL-DATA. 05 WS-PRINCIPAL-AMOUNT NUMBER(15,2). 05 WS-ANNUAL-RATE NUMBER(6,5). 05 WS-COMPOUND-FACTOR NUMBER(8,6). 05 WS-FUTURE-VALUE NUMBER(18,2). *> NUMBER with USAGE specifications 01 WS-DISPLAY-NUMBERS. 05 WS-FORMATTED-AMOUNT NUMBER(12,2) USAGE DISPLAY. 05 WS-REPORT-TOTAL NUMBER(15,2) USAGE DISPLAY. *> NUMBER arrays for statistical analysis 01 WS-STATISTICS-ARRAY. 05 WS-DATA-POINTS OCCURS 100 TIMES. 10 WS-VALUE NUMBER(10,4). 10 WS-WEIGHT NUMBER(6,4). 05 WS-MEAN-VALUE NUMBER(12,6). 05 WS-STANDARD-DEVIATION NUMBER(10,6). *> NUMBER for precise calculations 01 WS-PRECISION-CALCULATIONS. 05 WS-PI-VALUE NUMBER(15,12) VALUE 3.141592653589. 05 WS-EULER-CONSTANT NUMBER(15,12) VALUE 2.718281828459. 05 WS-GOLDEN-RATIO NUMBER(15,12) VALUE 1.618033988749.
Data Type
Numeric
Precision

NUMBER Arithmetic Operations

Mathematical Computations with NUMBER
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
*> Addition with NUMBER ADD WS-BASE-AMOUNT TO WS-TOTAL-AMOUNT ADD WS-INTEREST WS-FEES GIVING WS-GRAND-TOTAL ADD 1 TO WS-COUNTER *> Subtraction with NUMBER SUBTRACT WS-DISCOUNT FROM WS-GROSS-AMOUNT SUBTRACT WS-TAXES WS-FEES FROM WS-NET-AMOUNT SUBTRACT WS-PREVIOUS-BALANCE FROM WS-CURRENT-BALANCE GIVING WS-CHANGE-AMOUNT *> Multiplication with NUMBER MULTIPLY WS-QUANTITY BY WS-UNIT-PRICE MULTIPLY WS-PRINCIPAL BY WS-INTEREST-RATE GIVING WS-INTEREST-AMOUNT MULTIPLY WS-SALES-AMOUNT BY 0.15 GIVING WS-COMMISSION *> Division with NUMBER DIVIDE WS-TOTAL-AMOUNT BY WS-NUMBER-OF-MONTHS GIVING WS-MONTHLY-PAYMENT DIVIDE WS-TOTAL-SALES BY WS-SALES-COUNT GIVING WS-AVERAGE-SALE DIVIDE WS-ANNUAL-INCOME BY 12 GIVING WS-MONTHLY-INCOME REMAINDER WS-EXTRA-AMOUNT *> Complex calculations COMPUTE WS-COMPOUND-INTEREST = WS-PRINCIPAL * ((1 + WS-ANNUAL-RATE / WS-COMPOUNDS-PER-YEAR) ** (WS-COMPOUNDS-PER-YEAR * WS-YEARS)) COMPUTE WS-MONTHLY-PAYMENT = (WS-LOAN-AMOUNT * WS-MONTHLY-RATE) / (1 - ((1 + WS-MONTHLY-RATE) ** (-WS-NUMBER-OF-PAYMENTS))) *> Statistical calculations COMPUTE WS-VARIANCE = ((WS-VALUE1 - WS-MEAN) ** 2 + (WS-VALUE2 - WS-MEAN) ** 2 + (WS-VALUE3 - WS-MEAN) ** 2) / 3 *> Percentage calculations COMPUTE WS-PERCENTAGE = (WS-PART / WS-WHOLE) * 100 COMPUTE WS-GROWTH-RATE = ((WS-NEW-VALUE - WS-OLD-VALUE) / WS-OLD-VALUE) * 100 *> Rounding operations COMPUTE WS-ROUNDED-AMOUNT = FUNCTION ROUND(WS-PRECISE-AMOUNT, 2) COMPUTE WS-TRUNCATED-VALUE = FUNCTION INTEGER(WS-DECIMAL-VALUE)

Comprehensive NUMBER 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
433
434
435
436
437
438
439
440
441
442
443
444
445
IDENTIFICATION DIVISION. PROGRAM-ID. NUMBER-DEMONSTRATION. DATA DIVISION. WORKING-STORAGE SECTION. *> Financial calculation examples 01 WS-FINANCIAL-CALCULATIONS. 05 WS-LOAN-PRINCIPAL NUMBER(12,2). 05 WS-ANNUAL-INTEREST-RATE NUMBER(5,4). 05 WS-LOAN-TERM-YEARS NUMBER(3). 05 WS-MONTHLY-PAYMENT NUMBER(10,2). 05 WS-TOTAL-INTEREST NUMBER(12,2). 05 WS-TOTAL-AMOUNT-PAID NUMBER(15,2). *> Scientific calculation examples 01 WS-SCIENTIFIC-CALCULATIONS. 05 WS-PI NUMBER(15,12) VALUE 3.141592653589. 05 WS-RADIUS NUMBER(8,4). 05 WS-CIRCUMFERENCE NUMBER(12,4). 05 WS-AREA NUMBER(15,4). 05 WS-VOLUME NUMBER(18,4). *> Business metrics calculations 01 WS-BUSINESS-METRICS. 05 WS-GROSS-REVENUE NUMBER(15,2). 05 WS-TOTAL-EXPENSES NUMBER(15,2). 05 WS-NET-PROFIT NUMBER(15,2). 05 WS-PROFIT-MARGIN NUMBER(6,4). 05 WS-ROI-PERCENTAGE NUMBER(6,2). *> Statistical analysis examples 01 WS-STATISTICAL-DATA. 05 WS-DATA-POINTS OCCURS 10 TIMES. 10 WS-VALUE NUMBER(10,4). 05 WS-SUM NUMBER(15,4). 05 WS-MEAN NUMBER(12,6). 05 WS-VARIANCE NUMBER(15,8). 05 WS-STANDARD-DEVIATION NUMBER(12,6). *> Currency conversion examples 01 WS-CURRENCY-CONVERSION. 05 WS-USD-AMOUNT NUMBER(12,2). 05 WS-EXCHANGE-RATE NUMBER(8,6). 05 WS-FOREIGN-AMOUNT NUMBER(15,2). 05 WS-CONVERSION-FEE-RATE NUMBER(4,4) VALUE 0.0250. 05 WS-CONVERSION-FEE NUMBER(10,2). *> Tax calculation examples 01 WS-TAX-CALCULATIONS. 05 WS-TAXABLE-INCOME NUMBER(12,2). 05 WS-TAX-BRACKETS OCCURS 5 TIMES. 10 WS-BRACKET-THRESHOLD NUMBER(10,2). 10 WS-BRACKET-RATE NUMBER(4,4). 05 WS-TOTAL-TAX NUMBER(12,2). 05 WS-EFFECTIVE-TAX-RATE NUMBER(6,4). *> Investment portfolio examples 01 WS-PORTFOLIO-ANALYSIS. 05 WS-INVESTMENTS OCCURS 20 TIMES. 10 WS-INVESTMENT-VALUE NUMBER(12,2). 10 WS-ALLOCATION-PERCENT NUMBER(5,4). 05 WS-TOTAL-PORTFOLIO-VALUE NUMBER(15,2). 05 WS-PORTFOLIO-VARIANCE NUMBER(12,6). 05 WS-SHARPE-RATIO NUMBER(8,4). PROCEDURE DIVISION. MAIN-NUMBER-DEMONSTRATION. DISPLAY "=== COBOL NUMBER DATA TYPE DEMONSTRATION ===" DISPLAY SPACES PERFORM DEMONSTRATE-BASIC-NUMBER-OPERATIONS PERFORM DEMONSTRATE-FINANCIAL-CALCULATIONS PERFORM DEMONSTRATE-SCIENTIFIC-CALCULATIONS PERFORM DEMONSTRATE-STATISTICAL-ANALYSIS PERFORM DEMONSTRATE-BUSINESS-METRICS PERFORM DEMONSTRATE-CURRENCY-OPERATIONS PERFORM DEMONSTRATE-TAX-CALCULATIONS PERFORM DEMONSTRATE-PRECISION-CONTROL DISPLAY "=== NUMBER DEMONSTRATION COMPLETE ===" STOP RUN. DEMONSTRATE-BASIC-NUMBER-OPERATIONS. DISPLAY "=== BASIC NUMBER OPERATIONS ===" DISPLAY SPACES DISPLAY "Testing basic NUMBER arithmetic operations..." *> Initialize test values MOVE 1250.75 TO WS-LOAN-PRINCIPAL MOVE 0.0525 TO WS-ANNUAL-INTEREST-RATE MOVE 5 TO WS-LOAN-TERM-YEARS *> Basic addition ADD 150.25 TO WS-LOAN-PRINCIPAL DISPLAY " ✓ After adding fees: $" WS-LOAN-PRINCIPAL *> Basic subtraction SUBTRACT 50.00 FROM WS-LOAN-PRINCIPAL DISPLAY " ✓ After discount: $" WS-LOAN-PRINCIPAL *> Basic multiplication MULTIPLY WS-ANNUAL-INTEREST-RATE BY 12 GIVING WS-MONTHLY-PAYMENT DISPLAY " ✓ Monthly rate factor: " WS-MONTHLY-PAYMENT *> Basic division DIVIDE WS-LOAN-PRINCIPAL BY WS-LOAN-TERM-YEARS GIVING WS-MONTHLY-PAYMENT DISPLAY " ✓ Simple annual payment: $" WS-MONTHLY-PAYMENT *> Complex computation COMPUTE WS-TOTAL-INTEREST = WS-LOAN-PRINCIPAL * WS-ANNUAL-INTEREST-RATE * WS-LOAN-TERM-YEARS DISPLAY " ✓ Simple interest: $" WS-TOTAL-INTEREST DISPLAY SPACES. DEMONSTRATE-FINANCIAL-CALCULATIONS. DISPLAY "=== FINANCIAL CALCULATIONS ===" DISPLAY SPACES DISPLAY "Calculating loan payment schedules..." *> Sample loan data MOVE 250000.00 TO WS-LOAN-PRINCIPAL MOVE 0.0375 TO WS-ANNUAL-INTEREST-RATE MOVE 30 TO WS-LOAN-TERM-YEARS *> Calculate monthly payment using standard formula COMPUTE WS-MONTHLY-PAYMENT = (WS-LOAN-PRINCIPAL * (WS-ANNUAL-INTEREST-RATE / 12)) / (1 - ((1 + (WS-ANNUAL-INTEREST-RATE / 12)) ** (-(WS-LOAN-TERM-YEARS * 12)))) DISPLAY " 💰 Loan Details:" DISPLAY " Principal: $" WS-LOAN-PRINCIPAL DISPLAY " Annual Rate: " WS-ANNUAL-INTEREST-RATE DISPLAY " Term: " WS-LOAN-TERM-YEARS " years" DISPLAY " Monthly Payment: $" WS-MONTHLY-PAYMENT *> Calculate total amounts COMPUTE WS-TOTAL-AMOUNT-PAID = WS-MONTHLY-PAYMENT * WS-LOAN-TERM-YEARS * 12 COMPUTE WS-TOTAL-INTEREST = WS-TOTAL-AMOUNT-PAID - WS-LOAN-PRINCIPAL DISPLAY " Total Interest: $" WS-TOTAL-INTEREST DISPLAY " Total Paid: $" WS-TOTAL-AMOUNT-PAID *> Investment return calculation MOVE 10000.00 TO WS-LOAN-PRINCIPAL MOVE 0.08 TO WS-ANNUAL-INTEREST-RATE MOVE 10 TO WS-LOAN-TERM-YEARS COMPUTE WS-TOTAL-AMOUNT-PAID = WS-LOAN-PRINCIPAL * ((1 + WS-ANNUAL-INTEREST-RATE) ** WS-LOAN-TERM-YEARS) DISPLAY " " DISPLAY " 📈 Investment Growth:" DISPLAY " Initial Investment: $" WS-LOAN-PRINCIPAL DISPLAY " Annual Return: " WS-ANNUAL-INTEREST-RATE DISPLAY " Future Value: $" WS-TOTAL-AMOUNT-PAID COMPUTE WS-TOTAL-INTEREST = WS-TOTAL-AMOUNT-PAID - WS-LOAN-PRINCIPAL DISPLAY " Total Gains: $" WS-TOTAL-INTEREST DISPLAY SPACES. DEMONSTRATE-SCIENTIFIC-CALCULATIONS. DISPLAY "=== SCIENTIFIC CALCULATIONS ===" DISPLAY SPACES DISPLAY "Performing geometric and scientific computations..." *> Circle calculations MOVE 7.5 TO WS-RADIUS COMPUTE WS-CIRCUMFERENCE = 2 * WS-PI * WS-RADIUS COMPUTE WS-AREA = WS-PI * (WS-RADIUS ** 2) COMPUTE WS-VOLUME = (4 / 3) * WS-PI * (WS-RADIUS ** 3) DISPLAY " 🔵 Circle Calculations:" DISPLAY " Radius: " WS-RADIUS " units" DISPLAY " Circumference: " WS-CIRCUMFERENCE " units" DISPLAY " Area: " WS-AREA " sq units" DISPLAY " Sphere Volume: " WS-VOLUME " cu units" *> Temperature conversion MOVE 75.5 TO WS-RADIUS *> Reusing as Fahrenheit COMPUTE WS-CIRCUMFERENCE = (WS-RADIUS - 32) * (5 / 9) *> To Celsius COMPUTE WS-AREA = WS-CIRCUMFERENCE + 273.15 *> To Kelvin DISPLAY " " DISPLAY " 🌡️ Temperature Conversions:" DISPLAY " Fahrenheit: " WS-RADIUS "°F" DISPLAY " Celsius: " WS-CIRCUMFERENCE "°C" DISPLAY " Kelvin: " WS-AREA "K" *> Physics calculation - kinetic energy MOVE 50.0 TO WS-RADIUS *> Mass in kg MOVE 25.5 TO WS-CIRCUMFERENCE *> Velocity in m/s COMPUTE WS-AREA = 0.5 * WS-RADIUS * (WS-CIRCUMFERENCE ** 2) DISPLAY " " DISPLAY " ⚡ Physics Calculation:" DISPLAY " Mass: " WS-RADIUS " kg" DISPLAY " Velocity: " WS-CIRCUMFERENCE " m/s" DISPLAY " Kinetic Energy: " WS-AREA " joules" DISPLAY SPACES. DEMONSTRATE-STATISTICAL-ANALYSIS. DISPLAY "=== STATISTICAL ANALYSIS ===" DISPLAY SPACES DISPLAY "Calculating statistical measures..." *> Sample data points MOVE 85.5 TO WS-VALUE(1) MOVE 92.3 TO WS-VALUE(2) MOVE 78.9 TO WS-VALUE(3) MOVE 94.7 TO WS-VALUE(4) MOVE 88.1 TO WS-VALUE(5) MOVE 91.2 TO WS-VALUE(6) MOVE 87.6 TO WS-VALUE(7) MOVE 89.4 TO WS-VALUE(8) MOVE 93.8 TO WS-VALUE(9) MOVE 86.3 TO WS-VALUE(10) *> Calculate sum and mean MOVE 0 TO WS-SUM PERFORM VARYING WS-LOAN-TERM-YEARS FROM 1 BY 1 UNTIL WS-LOAN-TERM-YEARS > 10 ADD WS-VALUE(WS-LOAN-TERM-YEARS) TO WS-SUM END-PERFORM COMPUTE WS-MEAN = WS-SUM / 10 DISPLAY " 📊 Statistical Analysis:" DISPLAY " Data Points: 10 values" DISPLAY " Sum: " WS-SUM DISPLAY " Mean: " WS-MEAN *> Calculate variance MOVE 0 TO WS-VARIANCE PERFORM VARYING WS-LOAN-TERM-YEARS FROM 1 BY 1 UNTIL WS-LOAN-TERM-YEARS > 10 COMPUTE WS-VARIANCE = WS-VARIANCE + ((WS-VALUE(WS-LOAN-TERM-YEARS) - WS-MEAN) ** 2) END-PERFORM COMPUTE WS-VARIANCE = WS-VARIANCE / 10 *> Calculate standard deviation COMPUTE WS-STANDARD-DEVIATION = WS-VARIANCE ** 0.5 DISPLAY " Variance: " WS-VARIANCE DISPLAY " Standard Deviation: " WS-STANDARD-DEVIATION *> Find min and max MOVE WS-VALUE(1) TO WS-RADIUS WS-CIRCUMFERENCE PERFORM VARYING WS-LOAN-TERM-YEARS FROM 2 BY 1 UNTIL WS-LOAN-TERM-YEARS > 10 IF WS-VALUE(WS-LOAN-TERM-YEARS) < WS-RADIUS MOVE WS-VALUE(WS-LOAN-TERM-YEARS) TO WS-RADIUS END-IF IF WS-VALUE(WS-LOAN-TERM-YEARS) > WS-CIRCUMFERENCE MOVE WS-VALUE(WS-LOAN-TERM-YEARS) TO WS-CIRCUMFERENCE END-IF END-PERFORM DISPLAY " Minimum: " WS-RADIUS DISPLAY " Maximum: " WS-CIRCUMFERENCE COMPUTE WS-AREA = WS-CIRCUMFERENCE - WS-RADIUS DISPLAY " Range: " WS-AREA DISPLAY SPACES. DEMONSTRATE-BUSINESS-METRICS. DISPLAY "=== BUSINESS METRICS ===" DISPLAY SPACES DISPLAY "Calculating key business performance indicators..." *> Sample business data MOVE 1250000.00 TO WS-GROSS-REVENUE MOVE 875000.00 TO WS-TOTAL-EXPENSES *> Calculate profit metrics COMPUTE WS-NET-PROFIT = WS-GROSS-REVENUE - WS-TOTAL-EXPENSES COMPUTE WS-PROFIT-MARGIN = (WS-NET-PROFIT / WS-GROSS-REVENUE) * 100 DISPLAY " 💼 Business Performance:" DISPLAY " Gross Revenue: $" WS-GROSS-REVENUE DISPLAY " Total Expenses: $" WS-TOTAL-EXPENSES DISPLAY " Net Profit: $" WS-NET-PROFIT DISPLAY " Profit Margin: " WS-PROFIT-MARGIN "%" *> ROI calculation MOVE 500000.00 TO WS-LOAN-PRINCIPAL *> Investment COMPUTE WS-ROI-PERCENTAGE = (WS-NET-PROFIT / WS-LOAN-PRINCIPAL) * 100 DISPLAY " Initial Investment: $" WS-LOAN-PRINCIPAL DISPLAY " ROI: " WS-ROI-PERCENTAGE "%" *> Break-even analysis MOVE 75.00 TO WS-RADIUS *> Unit price MOVE 45.00 TO WS-CIRCUMFERENCE *> Variable cost per unit MOVE 180000.00 TO WS-AREA *> Fixed costs COMPUTE WS-VOLUME = WS-AREA / (WS-RADIUS - WS-CIRCUMFERENCE) DISPLAY " " DISPLAY " 📈 Break-Even Analysis:" DISPLAY " Unit Price: $" WS-RADIUS DISPLAY " Variable Cost: $" WS-CIRCUMFERENCE DISPLAY " Fixed Costs: $" WS-AREA DISPLAY " Break-Even Units: " WS-VOLUME DISPLAY SPACES. DEMONSTRATE-CURRENCY-OPERATIONS. DISPLAY "=== CURRENCY OPERATIONS ===" DISPLAY SPACES DISPLAY "Processing international currency conversions..." *> USD to EUR conversion MOVE 5000.00 TO WS-USD-AMOUNT MOVE 0.85 TO WS-EXCHANGE-RATE COMPUTE WS-FOREIGN-AMOUNT = WS-USD-AMOUNT * WS-EXCHANGE-RATE COMPUTE WS-CONVERSION-FEE = WS-FOREIGN-AMOUNT * WS-CONVERSION-FEE-RATE COMPUTE WS-FOREIGN-AMOUNT = WS-FOREIGN-AMOUNT - WS-CONVERSION-FEE DISPLAY " 💱 Currency Conversion (USD to EUR):" DISPLAY " USD Amount: $" WS-USD-AMOUNT DISPLAY " Exchange Rate: " WS-EXCHANGE-RATE DISPLAY " Conversion Fee Rate: " WS-CONVERSION-FEE-RATE DISPLAY " Conversion Fee: €" WS-CONVERSION-FEE DISPLAY " Final EUR Amount: €" WS-FOREIGN-AMOUNT *> GBP to USD conversion MOVE 3500.00 TO WS-FOREIGN-AMOUNT MOVE 1.25 TO WS-EXCHANGE-RATE COMPUTE WS-USD-AMOUNT = WS-FOREIGN-AMOUNT * WS-EXCHANGE-RATE COMPUTE WS-CONVERSION-FEE = WS-USD-AMOUNT * WS-CONVERSION-FEE-RATE COMPUTE WS-USD-AMOUNT = WS-USD-AMOUNT - WS-CONVERSION-FEE DISPLAY " " DISPLAY " 💱 Currency Conversion (GBP to USD):" DISPLAY " GBP Amount: £" WS-FOREIGN-AMOUNT DISPLAY " Exchange Rate: " WS-EXCHANGE-RATE DISPLAY " Conversion Fee: $" WS-CONVERSION-FEE DISPLAY " Final USD Amount: $" WS-USD-AMOUNT DISPLAY SPACES. DEMONSTRATE-TAX-CALCULATIONS. DISPLAY "=== TAX CALCULATIONS ===" DISPLAY SPACES DISPLAY "Computing progressive tax calculations..." *> Sample tax brackets MOVE 0.00 TO WS-BRACKET-THRESHOLD(1) MOVE 0.10 TO WS-BRACKET-RATE(1) MOVE 9950.00 TO WS-BRACKET-THRESHOLD(2) MOVE 0.12 TO WS-BRACKET-RATE(2) MOVE 40525.00 TO WS-BRACKET-THRESHOLD(3) MOVE 0.22 TO WS-BRACKET-RATE(3) MOVE 86375.00 TO WS-BRACKET-THRESHOLD(4) MOVE 0.24 TO WS-BRACKET-RATE(4) MOVE 164925.00 TO WS-BRACKET-THRESHOLD(5) MOVE 0.32 TO WS-BRACKET-RATE(5) *> Calculate tax for $85,000 income MOVE 85000.00 TO WS-TAXABLE-INCOME MOVE 0 TO WS-TOTAL-TAX *> First bracket: $0 - $9,950 at 10% COMPUTE WS-TOTAL-TAX = WS-TOTAL-TAX + (9950 * 0.10) *> Second bracket: $9,951 - $40,525 at 12% COMPUTE WS-TOTAL-TAX = WS-TOTAL-TAX + ((40525 - 9950) * 0.12) *> Third bracket: $40,526 - $85,000 at 22% COMPUTE WS-TOTAL-TAX = WS-TOTAL-TAX + ((WS-TAXABLE-INCOME - 40525) * 0.22) COMPUTE WS-EFFECTIVE-TAX-RATE = (WS-TOTAL-TAX / WS-TAXABLE-INCOME) * 100 DISPLAY " 🏛️ Tax Calculation:" DISPLAY " Taxable Income: $" WS-TAXABLE-INCOME DISPLAY " Total Tax: $" WS-TOTAL-TAX DISPLAY " Effective Tax Rate: " WS-EFFECTIVE-TAX-RATE "%" COMPUTE WS-NET-PROFIT = WS-TAXABLE-INCOME - WS-TOTAL-TAX DISPLAY " After-Tax Income: $" WS-NET-PROFIT DISPLAY SPACES. DEMONSTRATE-PRECISION-CONTROL. DISPLAY "=== PRECISION CONTROL ===" DISPLAY SPACES DISPLAY "Demonstrating NUMBER precision and rounding..." *> High precision calculations MOVE 1.0 TO WS-RADIUS MOVE 3.0 TO WS-CIRCUMFERENCE COMPUTE WS-AREA = WS-RADIUS / WS-CIRCUMFERENCE DISPLAY " 🎯 Precision Demonstration:" DISPLAY " 1/3 with high precision: " WS-AREA *> Rounding examples MOVE 123.456789 TO WS-VOLUME COMPUTE WS-AREA = FUNCTION ROUND(WS-VOLUME, 2) DISPLAY " Original: " WS-VOLUME DISPLAY " Rounded to 2 decimal places: " WS-AREA COMPUTE WS-AREA = FUNCTION ROUND(WS-VOLUME, 0) DISPLAY " Rounded to whole number: " WS-AREA *> Truncation examples COMPUTE WS-AREA = FUNCTION INTEGER(WS-VOLUME) DISPLAY " Truncated: " WS-AREA *> Precision in financial calculations MOVE 999999.999999 TO WS-VOLUME COMPUTE WS-AREA = WS-VOLUME * 1.000001 DISPLAY " Large number precision test: " WS-AREA DISPLAY SPACES DISPLAY "NUMBER data type demonstration summary:" DISPLAY " ✓ Basic arithmetic operations performed" DISPLAY " ✓ Financial calculations completed" DISPLAY " ✓ Scientific computations executed" DISPLAY " ✓ Statistical analysis conducted" DISPLAY " ✓ Business metrics calculated" DISPLAY " ✓ Currency operations processed" DISPLAY " ✓ Tax calculations performed" DISPLAY " ✓ Precision control demonstrated" DISPLAY SPACES.

NUMBER Features and Capabilities

Precision Control
  • • Up to 18 digits precision
  • • Configurable decimal places
  • • Exact decimal arithmetic
  • • Rounding and truncation
Arithmetic Operations
  • • Addition and subtraction
  • • Multiplication and division
  • • Exponentiation support
  • • Complex computations
Business Applications
  • • Financial calculations
  • • Statistical analysis
  • • Currency conversions
  • • Tax computations
Data Handling
  • • Sign specifications
  • • VALUE clause support
  • • Table and array usage
  • • USAGE compatibility

Best Practices

Knowledge Check

Test Your Understanding

Question 1: NUMBER Declaration

How do you declare a NUMBER field with 10 digits and 2 decimal places?

Answer: Use NUMBER(10,2) where 10 is the total precision (digits) and 2 is the scale (decimal places). Example: 01 WS-AMOUNT NUMBER(10,2).

Question 2: Precision vs Scale

What's the difference between precision and scale in NUMBER?

Answer: Precision is the total number of digits that can be stored, while scale is the number of digits after the decimal point. In NUMBER(12,4), precision is 12 and scale is 4.

Question 3: Business Applications

Why is NUMBER preferred for financial calculations?

Answer: NUMBER provides exact decimal arithmetic without floating-point rounding errors, making it ideal for financial calculations where precision is critical. It maintains accuracy for monetary values and business computations.