blob: a464101ae16d9788a6c6795eb0a5b54fcc888b62 (
plain)
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
|
*> { dg-do run }
*> { dg-output-file "group2/INSPECT_ISO_Example_2.out" }
Identification Division.
Program-Id. Clouseau.
Data Division.
Working-Storage Section.
01 rows pic 99 value 2.
01 counts pic 99 value 2.
01 rowlim pic 99.
01 ncount pic 99.
01 inputs.
05 row occurs 4 times indexed by counter.
10 star PIC X.
10 input PIC X(20).
10 count PIC 99 occurs 2 times.
10 output PIC X(20).
77 len PIC 9(8).
Procedure Division.
*> Odd-numbered rows are "read only" and contain the inputs and expected
*> outputs.
*> Even-numbered rows are modified by the INSPECT statements and contain
*> the observed outputs
Move ' BBB 0300ZZZ' to row(1).
Move ' ABA 0300ZZZ' to row(3).
`
compute rowlim = 2*rows - 1
Display ' INPUT C0 C1 OUTPUT'
Display ' -------------------- -- -- ----------------'
Perform Example-1 with test after
varying counter from 1 by 2 until counter >= rowlim.
Goback.
Inspection Section.
Example-1.
Move row(counter) to row(counter + 1)
perform varying ncount from 1 by 1 until ncount > counts
Move Zero to count(counter + 1 ncount)
end-perform
Move function length( function trim(input(counter)) ) to len.
MOVE INPUT(COUNTER) TO OUTPUT(COUNTER + 1)
INSPECT INPUT(COUNTER)(1:len) TALLYING
COUNT(counter + 1 1) FOR CHARACTERS
COUNT(counter + 1 2) FOR ALL "A";
INSPECT OUTPUT(COUNTER + 1)(1:len) REPLACING
CHARACTERS BY "Z"
ALL "A" BY "X"
If row(counter) = row(counter + 1) then
Move '*' to star(counter + 1)
Else
Move '!' to star(counter + 1).
Display star(counter) ' '
input(counter) ' ' with no advancing
perform varying ncount from 1 by 1 until ncount > counts
Display count(counter ncount) ' ' with no advancing
end-perform
display function trim(output(counter))
Display star(1 + counter) ' '
input(1 + counter) ' ' with no advancing
perform varying ncount from 1 by 1 until ncount > counts
Display count(1 + counter ncount) ' ' with no advancing
end-perform
display function trim(output(1 + counter))
continue.
end program Clouseau.
|