Skip to content

Commit f440b77

Browse files
authored
Merge pull request #2400 from TypeCobolTeam/v1.5.23
v1.5.23
2 parents 7799d7e + 9e0107f commit f440b77

File tree

8 files changed

+841
-206
lines changed

8 files changed

+841
-206
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
================================ ICobolTextLine ================================
2+
No change
3+
================================= ITokensLine ==================================
4+
No change
5+
============================= IProcessedTokensLine =============================
6+
No change
7+
============================== ICodeElementsLine ===============================
8+
No change
Lines changed: 318 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,318 @@
1+
IDENTIFICATION DIVISION.
2+
PROGRAM-ID. TestingPgm.
3+
ENVIRONMENT DIVISION.
4+
INPUT-OUTPUT SECTION.
5+
FILE-CONTROL.
6+
SELECT Z-SORT-1 ASSIGN TO ZSORT1.
7+
8+
DATA DIVISION.
9+
FILE SECTION.
10+
SD Z-SORT-1.
11+
01 Z-SD-1-1-RECORD.
12+
05 Z-SD-1-1-KEY PIC 9(08).
13+
14+
WORKING-STORAGE SECTION.
15+
01 Level1.
16+
05 Level2.
17+
06 VarLevel2 PIC X(10).
18+
05 Level2-2.
19+
06 VarLevel2-2 PIC X(10).
20+
21+
PROCEDURE DIVISION.
22+
23+
*** Testing statements in procedure division
24+
*OK PAR02 is uniquely defined in SEC02
25+
Perform PAR02
26+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
27+
INPUT PROCEDURE IS PAR02
28+
OUTPUT PROCEDURE IS PAR02.
29+
30+
*KO PAR05 is declared multiple times in this scope (PROCEDURE DIVISION)
31+
Perform PAR05
32+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
33+
INPUT PROCEDURE IS PAR05
34+
OUTPUT PROCEDURE IS PAR05.
35+
36+
*OK PAR01 is declared only once in this scope (PROCEDURE DIVISION)
37+
Perform PAR01 thru PAR02.
38+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
39+
INPUT PROCEDURE IS PAR01
40+
OUTPUT PROCEDURE IS PAR01.
41+
42+
*OK
43+
Perform PAR01 thru PAR02 OF SEC02.
44+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
45+
INPUT PROCEDURE IS PAR01 thru PAR02 OF SEC02
46+
OUTPUT PROCEDURE IS PAR01 thru PAR02 OF SEC02.
47+
48+
*KO ambiguous reference between SEC01.PAR04 and SEC02.PAR04
49+
Perform PAR04.
50+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
51+
INPUT PROCEDURE IS PAR04
52+
OUTPUT PROCEDURE IS PAR04.
53+
54+
*KO ambiguous reference between section SEC05 and paragraph SEC06.SEC05
55+
Perform SEC05.
56+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
57+
INPUT PROCEDURE IS SEC05
58+
OUTPUT PROCEDURE IS SEC05.
59+
60+
*OK name SEC05 is qualified
61+
Perform SEC05 OF SEC06.
62+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
63+
INPUT PROCEDURE IS SEC05 OF SEC06
64+
OUTPUT PROCEDURE IS SEC05 OF SEC06.
65+
66+
*KO ambiguous reference to SEC07 defined multiple times
67+
Perform SEC07.
68+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
69+
INPUT PROCEDURE IS SEC07
70+
OUTPUT PROCEDURE IS SEC07.
71+
72+
*** Testing perform statements in a paragraph of procedure division
73+
TEST-PERFORM-PROCDIV.
74+
*OK PAR02 is uniquely defined in SEC02
75+
Perform PAR02
76+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
77+
INPUT PROCEDURE IS PAR02
78+
OUTPUT PROCEDURE IS PAR02.
79+
80+
*KO PAR05 is declared multiple times in this scope (PROCEDURE DIVISION)
81+
Perform PAR05
82+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
83+
INPUT PROCEDURE IS PAR05
84+
OUTPUT PROCEDURE IS PAR05.
85+
86+
*OK PAR01 is declared only once in this scope (PROCEDURE DIVISION)
87+
Perform PAR01 thru PAR02.
88+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
89+
INPUT PROCEDURE IS PAR01 thru PAR02
90+
OUTPUT PROCEDURE IS PAR01 thru PAR02.
91+
92+
*OK
93+
Perform PAR01 thru PAR02 OF SEC02.
94+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
95+
INPUT PROCEDURE IS PAR01 thru PAR02 OF SEC02
96+
OUTPUT PROCEDURE IS PAR01 thru PAR02 OF SEC02.
97+
98+
*KO ambiguous reference between SEC01.PAR04 and SEC02.PAR04
99+
Perform PAR04.
100+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
101+
INPUT PROCEDURE IS PAR04
102+
OUTPUT PROCEDURE IS PAR04.
103+
.
104+
105+
*OK PAR01 is declared only once in procedure division
106+
PAR01.
107+
continue.
108+
.
109+
*OK PAR03 is already defined but in SEC01
110+
PAR03.
111+
continue.
112+
.
113+
*KO PAR05 already declared in procedure division
114+
PAR05.
115+
continue.
116+
.
117+
*KO PAR05 already declared in procedure division
118+
PAR05.
119+
continue.
120+
.
121+
122+
INIT-LIBRARY.
123+
exit.
124+
SectionEmpty SECTION.
125+
126+
SectionEmpty2 SECTION.
127+
.
128+
129+
Section1 SECTION.
130+
.
131+
Parag1.
132+
EXEC SQL OPEN something END-EXEC
133+
.
134+
135+
Parag2.
136+
.
137+
138+
Parag3.
139+
.
140+
141+
MOVE Level2 OF Level1 TO Level2-2 IN Level1.
142+
143+
Parag4.
144+
.
145+
146+
Parag5.
147+
.
148+
149+
.
150+
Parag6.
151+
152+
SEC01 SECTION.
153+
154+
*KO PAR01 is already declared in section SEC01
155+
PAR01.
156+
continue
157+
.
158+
*OK PAR03 is already defined but in procedure division
159+
PAR03.
160+
continue.
161+
.
162+
*OK PAR04 is already defined but in another section
163+
PAR04.
164+
continue.
165+
.
166+
*KO PAR01 is already declared in section SEC01
167+
PAR01.
168+
continue
169+
.
170+
171+
SEC02 SECTION.
172+
*OK, PAR01 is already defined but in another section
173+
PAR01.
174+
continue
175+
.
176+
*OK PAR02 is uniquely defined
177+
PAR02.
178+
continue
179+
.
180+
*OK PAR04 is already defined but in another section
181+
PAR04.
182+
continue.
183+
.
184+
185+
*** Testing perform statements in section
186+
*OK PAR01 and PAR02 are uniquely defined in SEC02
187+
Perform PAR01 thru PAR02.
188+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
189+
INPUT PROCEDURE IS PAR01 thru PAR02
190+
OUTPUT PROCEDURE IS PAR01 thru PAR02.
191+
192+
*KO ambiguous reference to SEC01.PAR01
193+
Perform PAR01 OF SEC01.
194+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
195+
INPUT PROCEDURE IS PAR01 OF SEC01
196+
OUTPUT PROCEDURE IS PAR01 OF SEC01.
197+
198+
*KO PAR02.SEC01 is not defined
199+
Perform PAR02 OF SEC01.
200+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
201+
INPUT PROCEDURE IS PAR02 OF SEC01
202+
OUTPUT PROCEDURE IS PAR02 OF SEC01.
203+
204+
*KO can't resolve between SEC01.PAR03 and PROCEDURE DIVISION.PAR03
205+
Perform PAR03.
206+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
207+
INPUT PROCEDURE IS PAR03
208+
OUTPUT PROCEDURE IS PAR03.
209+
210+
*OK PAR03 is qualified
211+
Perform PAR03 OF SEC01 thru PAR04.
212+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
213+
INPUT PROCEDURE IS PAR03 OF SEC01 thru PAR04
214+
OUTPUT PROCEDURE IS PAR03 OF SEC01 thru PAR04.
215+
216+
*** Testing perform statements in a paragraph of a section
217+
TEST-PERFORM-SEC02.
218+
*OK PAR01 and PAR02 are uniquely defined in SEC02
219+
Perform PAR01 thru PAR02.
220+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
221+
INPUT PROCEDURE IS PAR01 thru PAR02
222+
OUTPUT PROCEDURE IS PAR01 thru PAR02.
223+
224+
*KO ambiguous reference to SEC01.PAR01
225+
Perform PAR01 OF SEC01.
226+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
227+
INPUT PROCEDURE IS PAR01 OF SEC01
228+
OUTPUT PROCEDURE IS PAR01 OF SEC01.
229+
230+
*KO PAR02.SEC01 is not defined
231+
Perform PAR02 OF SEC01.
232+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
233+
INPUT PROCEDURE IS PAR02 OF SEC01
234+
OUTPUT PROCEDURE IS PAR02 OF SEC01.
235+
236+
*KO can't resolve between SEC01.PAR03 and PROCEDURE DIVISION.PAR03
237+
Perform PAR03.
238+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
239+
INPUT PROCEDURE IS PAR03
240+
OUTPUT PROCEDURE IS PAR03.
241+
242+
*OK PAR03 is qualified
243+
Perform PAR03 OF SEC01 thru PAR04.
244+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
245+
INPUT PROCEDURE IS PAR03 OF SEC01 thru PAR04
246+
OUTPUT PROCEDURE IS PAR03 OF SEC01 thru PAR04.
247+
.
248+
249+
SEC03 SECTION.
250+
TEST-PERFORM-SEC03.
251+
*KO can't resolve between SEC01.PAR04 and SEC02.PAR04
252+
Perform PAR04.
253+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
254+
INPUT PROCEDURE IS PAR04
255+
OUTPUT PROCEDURE IS PAR04.
256+
*KO can't resolve between SEC01.PAR04 and SEC02.PAR04
257+
Perform PAR02 thru PAR04
258+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
259+
INPUT PROCEDURE IS PAR02 thru PAR04
260+
OUTPUT PROCEDURE IS PAR02 thru PAR04.
261+
*OK PAR02 is uniquely defined and PAR04 is qualified
262+
Perform PAR02 thru PAR04 OF SEC01
263+
.
264+
265+
*KO SEC04 already declared as paragraph
266+
SEC04 SECTION.
267+
*KO SEC04 already declared as section
268+
SEC04.
269+
continue
270+
.
271+
272+
*KO section SEC05 already declared as a paragraph
273+
SEC05 SECTION.
274+
PAR06.
275+
continue
276+
.
277+
*KO ambiguous reference between section SEC05 and paragraph SEC06.SEC05
278+
Perform SEC05.
279+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
280+
INPUT PROCEDURE IS SEC05
281+
OUTPUT PROCEDURE IS SEC05.
282+
283+
SEC06 SECTION.
284+
*KO ambiguous reference between section SEC05 and paragraph SEC06.SEC05
285+
Perform SEC05.
286+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
287+
INPUT PROCEDURE IS SEC05
288+
OUTPUT PROCEDURE IS SEC05.
289+
*OK name SEC05 is qualified
290+
Perform SEC05 OF SEC06.
291+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
292+
INPUT PROCEDURE IS SEC05 OF SEC06
293+
OUTPUT PROCEDURE IS SEC05 OF SEC06.
294+
*KO paragraph SEC05 is already declared as a section
295+
SEC05.
296+
continue
297+
.
298+
PAR07.
299+
*KO ambiguous reference to SEC07 defined multiple times
300+
Perform SEC07.
301+
SORT Z-SORT-1 ON ASCENDING Z-SD-1-1-KEY
302+
INPUT PROCEDURE IS SEC07
303+
OUTPUT PROCEDURE IS SEC07.
304+
.
305+
306+
*Warning SEC07 declared more than once
307+
SEC07 SECTION.
308+
PAR07.
309+
continue
310+
.
311+
312+
*Warning SEC07 declared more than once
313+
SEC07 SECTION.
314+
PAR08.
315+
continue
316+
.
317+
318+
END PROGRAM TestingPgm.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
IDENTIFICATION DIVISION.
2+
PROGRAM-ID. Pgm.
3+
ENVIRONMENT DIVISION.
4+
DATA DIVISION.
5+
WORKING-STORAGE SECTION.
6+
01.
7+
02 DSRCE-TAB OCCURS 83
8+
ASCENDING KEY IS DSRCE-KEY-A
9+
* KO, duplicate key
10+
DESCENDING KEY IS DSRCE-KEY-A
11+
INDEXED BY Idx, Idx2.
12+
05 DSRCE-KEY-A Pic 99.
13+
05 DSRCE-KEY-D Pic 99.
14+
05 DSRCE-SRCE-VAL Pic S9(3).
15+
16+
01 WS-KEY Pic 99.
17+
01 WS-KEY2 Pic 99.
18+
01 WS-SRCE-VAL Pic S9(3).
19+
01 I Pic 99.
20+
21+
PROCEDURE DIVISION.
22+
23+
SEARCH ALL DSRCE-TAB
24+
AT END
25+
DISPLAY 'VALUE NOT FOUND'
26+
* Ok
27+
WHEN DSRCE-KEY-A (Idx) = WS-KEY
28+
DISPLAY 'VALUE FOUND'
29+
END-SEARCH
30+
31+
GOBACK
32+
.
33+
34+
END PROGRAM Pgm.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
--- Diagnostics ---
2+
Line 10[41,51] <27, Error, Syntax> - Syntax error : Sorting key 'DSRCE-KEY-A' is already defined for this table. RuleStack=codeElement>dataDescriptionEntry>occursClause>tableSortingKeys>dataNameReference, OffendingSymbol=[41,51:DSRCE-KEY-A]<UserDefinedWord>
3+
4+
--- Program ---
5+
PROGRAM: Pgm common:False initial:False recursive:False
6+
author: ? written: ? compiled: ? installation: ? security: ?
7+
--- Intrinsic:Namespace:Program:Global:Local
8+
-- DATA --------
9+
Idx:Numeric
10+
Idx2:Numeric
11+
DSRCE-TAB:Array
12+
DSRCE-KEY-A:Numeric
13+
DSRCE-KEY-D:Numeric
14+
DSRCE-SRCE-VAL:Numeric
15+
WS-KEY:Numeric
16+
WS-KEY2:Numeric
17+
WS-SRCE-VAL:Numeric
18+
I:Numeric
19+
--- Intrinsic
20+
-- TYPES -------
21+
BOOL:BOOL
22+
DATE:DATE
23+
CURRENCY:CURRENCY
24+
STRING:STRING

0 commit comments

Comments
 (0)