Skip to content

Commit c4e7f64

Browse files
committed
fix: allow db2 declare statement in the working storage and linkage section
Signed-off-by: Aman Prashant <[email protected]>
1 parent f45d384 commit c4e7f64

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

server/engine/src/main/antlr4/org/eclipse/lsp/db2/parser/Db2SqlParser.g4

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ procedureDivisionRules: ((dbs_allocate | dbs_alter | dbs_associate | dbs_call |
4040
dbs_revoke | dbs_rollback | dbs_savepoint | dbs_select | dbs_set | dbs_signal | dbs_transfer | dbs_truncate |
4141
dbs_update | dbs_values) dbs_semicolon_end?)+;
4242

43-
rulesAllowedInDataDivisionAndProcedureDivision: ((dbs_declare_cursor | dbs_whenever | dbs_declare_table | dbs_include) dbs_semicolon_end?)+;
43+
rulesAllowedInDataDivisionAndProcedureDivision: ((dbs_declare_cursor | dbs_whenever | dbs_declare_table | dbs_include | DECLARE dbs_declare_statement) dbs_semicolon_end?)+;
4444

4545
rulesAllowedInWorkingStorageAndLinkageSection: ((dbs_begin | dbs_end | dbs_include_sqlca | dbs_include_sqlda) dbs_semicolon_end?)+;
4646

@@ -552,7 +552,7 @@ dbs_create_view: VIEW dbs_view_name column_loop? AS tbl_expr_loop? dbs_fullsele
552552
tbl_expr_loop: WITH dbs_select_statement_common_table_expression dbs_comma_separator dbs_select_statement_common_table_expression*;
553553

554554
/*DECLARE (all) */
555-
dbs_declare: DECLARE (dbs_declare_global | dbs_declare_statement);
555+
dbs_declare: DECLARE dbs_declare_global;
556556

557557
dbs_declare_cursor: DECLARE dbs_cursor_name ((NO|ASENSITIVE|INSENSITIVE|SENSITIVE (DYNAMIC|STATIC)?) SCROLL)? CURSOR ((WITH|WITHOUT) HOLD |
558558
(WITHOUT RETURN|WITH RETURN TO (CALLER|CLIENT)) | (WITH|WITHOUT) ROWSET POSITIONING)* /*random ordering req*/
@@ -1799,4 +1799,4 @@ dbs_integer_max: INTEGERLITERAL {validateValue($INTEGERLITERAL.text, "214748364
17991799
dbs_char_a: NONNUMERICLITERAL {validateValue($NONNUMERICLITERAL.text, "A");};
18001800
dbs_char_n: NONNUMERICLITERAL {validateValue($NONNUMERICLITERAL.text, "N");};
18011801
dbs_char_r: NONNUMERICLITERAL {validateValue($NONNUMERICLITERAL.text, "R");};
1802-
/////// End Variables /////////////
1802+
/////

server/engine/src/test/java/org/eclipse/lsp/cobol/usecases/TestSqlAllDeclareStatements.java

+25-3
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,12 @@
1717

1818
import com.google.common.collect.ImmutableList;
1919
import com.google.common.collect.ImmutableMap;
20+
import java.util.stream.Stream;
2021
import org.eclipse.lsp.cobol.test.engine.UseCaseEngine;
2122
import org.junit.jupiter.api.DisplayName;
2223
import org.junit.jupiter.params.ParameterizedTest;
2324
import org.junit.jupiter.params.provider.MethodSource;
2425

25-
import java.util.stream.Stream;
26-
2726
/**
2827
* This PARAMETERIZED test checks if all below sql DECLARE statements works correctly.
2928
*
@@ -107,13 +106,36 @@ class TestSqlAllDeclareStatements {
107106
+ " DECLARE :{$AMBER} VARIABLE CCSID UNICODE;\n"
108107
+ " END-EXEC.";
109108

109+
public static final String DECLARE_STATEMENT_IN_WORKING_STORAGE =
110+
" IDENTIFICATION DIVISION.\n"
111+
+ " PROGRAM-ID. HELLO-SQL.\n"
112+
+ " DATA DIVISION.\n"
113+
+ " WORKING-STORAGE SECTION.\n"
114+
+ " EXEC SQL\n"
115+
+ " declare asasa statement\n"
116+
+ " END-EXEC.\n"
117+
+ " PROCEDURE DIVISION.";
118+
119+
public static final String DECLARE_STATEMENT_IN_LINKAGE_SECTION =
120+
" IDENTIFICATION DIVISION.\n"
121+
+ " PROGRAM-ID. HELLO-SQL.\n"
122+
+ " DATA DIVISION.\n"
123+
+ " WORKING-STORAGE SECTION.\n"
124+
+ " LINKAGE SECTION.\n"
125+
+ " EXEC SQL\n"
126+
+ " declare asasa statement\n"
127+
+ " END-EXEC.\n"
128+
+ " PROCEDURE DIVISION.";
129+
110130
private static Stream<String> textsToTest() {
111131
return Stream.of(
112132
DECLARE_CURSOR,
113133
DECLARE_GLOBAL_TEMP_TABLE,
114134
DECLARE_TABLE,
115135
DECLARE_STATEMENT,
116-
DECLARE_VARIABLE);
136+
DECLARE_VARIABLE,
137+
DECLARE_STATEMENT_IN_WORKING_STORAGE,
138+
DECLARE_STATEMENT_IN_LINKAGE_SECTION);
117139
}
118140

119141
@ParameterizedTest

0 commit comments

Comments
 (0)