|
| 1 | + IDENTIFICATION DIVISION. |
| 2 | + PROGRAM-ID. Pgm. |
| 3 | + DATA DIVISION. |
| 4 | + WORKING-STORAGE SECTION. |
| 5 | + |
| 6 | + 01 NotATable PIC X(20). |
| 7 | + |
| 8 | + 01 TableWithoutKey. |
| 9 | + 05 tab1 OCCURS 20. |
| 10 | + 10 tab1-item PIC X. |
| 11 | + |
| 12 | + 01 TableWithoutIndex. |
| 13 | + 05 tab2 OCCURS 20 |
| 14 | + ASCENDING KEY IS tab2-key. |
| 15 | + 10 tab2-key PIC 99. |
| 16 | + 10 tab2-item PIC XX. |
| 17 | + |
| 18 | + 01 MultiDim1. |
| 19 | + 05 tab3 OCCURS 10. |
| 20 | + 10 tab3-1 OCCURS 10 |
| 21 | + ASCENDING KEY IS tab3-1-key |
| 22 | + INDEXED BY tab3-1-idx. |
| 23 | + 15 tab3-1-key PIC 99. |
| 24 | + 15 tab3-1-item PIC XX. |
| 25 | + |
| 26 | + 01 test-value PIC XX. |
| 27 | + 01 some-value PIC XX. |
| 28 | + |
| 29 | + 01 MultiDim2. |
| 30 | + 05 tab4 OCCURS 10 |
| 31 | + INDEXED BY tab4-idx1 tab4-idx2 tab4-idx3. |
| 32 | + 10 tab4-1 OCCURS 10 |
| 33 | + INDEXED BY tab4-1-idx1 tab4-1-idx2 tab4-1-idx3. |
| 34 | + 15 tab4-2 OCCURS 10 |
| 35 | + ASCENDING KEY IS tab4-2-key-asc |
| 36 | + DESCENDING KEY IS tab4-2-key-desc |
| 37 | + INDEXED BY tab4-2-idx1 tab4-2-idx2 |
| 38 | + tab4-2-idx3. |
| 39 | + 20 tab4-2-key-asc PIC 99. |
| 40 | + 20 tab4-2-key-desc PIC 99. |
| 41 | + 20 tab4-2-item PIC XX. |
| 42 | + |
| 43 | + 01 some-key-value-1 PIC 99. |
| 44 | + 01 some-key-value-2 PIC 99. |
| 45 | + |
| 46 | + 01 MultiDim3. |
| 47 | + 05 tab5 OCCURS 10. |
| 48 | + 10 tab5-1 OCCURS 10. |
| 49 | + 15 tab5-2 OCCURS 10 |
| 50 | + ASCENDING KEY IS tab5-2-key. |
| 51 | + 20 tab5-2-key PIC 99. |
| 52 | + 20 tab5-2-item PIC XX. |
| 53 | + |
| 54 | + PROCEDURE DIVISION. |
| 55 | + *KO search on something that is not a table |
| 56 | +Line 56[12,31] <27, Error, Syntax> - Syntax error : Cannot SEARCH in 'NotATable', data item is not a table. |
| 57 | + SEARCH ALL NotATable |
| 58 | + WHEN test-value = some-value |
| 59 | + DISPLAY 'Ok' |
| 60 | + END-SEARCH |
| 61 | + *KO binary search on a table without key |
| 62 | +Line 61[12,26] <27, Error, Syntax> - Syntax error : Cannot use binary SEARCH on 'tab1' because it has no KEY. |
| 63 | +Line 61[12,26] <27, Error, Syntax> - Syntax error : Cannot use binary SEARCH on 'tab1' because it is not indexed. |
| 64 | + SEARCH ALL tab1 |
| 65 | +Line 62[15,42] <27, Error, Syntax> - Syntax error : Left side operand of a WHEN condition must use first index of the table and at least one of declared keys. |
| 66 | + WHEN test-value = some-value |
| 67 | + DISPLAY 'Ok' |
| 68 | + END-SEARCH |
| 69 | + *KO binary search on a table without index |
| 70 | +Line 66[12,26] <27, Error, Syntax> - Syntax error : Cannot use binary SEARCH on 'tab2' because it is not indexed. |
| 71 | + SEARCH ALL tab2 |
| 72 | +Line 67[15,42] <27, Error, Syntax> - Syntax error : Left side operand of a WHEN condition must use first index of the table and at least one of declared keys. |
| 73 | + WHEN test-value = some-value |
| 74 | + DISPLAY 'Ok' |
| 75 | + END-SEARCH |
| 76 | + *KO binary search on a table with parent table without index |
| 77 | +Line 71[12,28] <27, Error, Syntax> - Syntax error : Cannot use binary SEARCH on 'tab3-1' because parent table 'tab3' is not indexed. |
| 78 | + SEARCH ALL tab3-1 |
| 79 | +Line 72[15,42] <27, Error, Syntax> - Syntax error : Left side operand of a WHEN condition must use first index of the table and at least one of declared keys. |
| 80 | + WHEN test-value = some-value |
| 81 | + DISPLAY 'Ok' |
| 82 | + END-SEARCH |
| 83 | + *KO all keys defined before any referenced key must be used |
| 84 | + SEARCH ALL tab4-2 |
| 85 | +Line 77[15,37] <27, Error, Syntax> - Syntax error : All the table keys that precede a referenced key must be used. |
| 86 | + WHEN tab4-2-key-desc (tab4-idx1 tab4-1-idx1 tab4-2-idx1) |
| 87 | + = some-key-value-1 |
| 88 | + DISPLAY 'Ok' |
| 89 | + END-SEARCH |
| 90 | + *KO must use equality |
| 91 | + SEARCH ALL tab4-2 |
| 92 | +Line 83[15,37] <27, Error, Syntax> - Syntax error : Invalid relational operator in WHEN SEARCH condition, EqualTo operator expected. |
| 93 | + WHEN tab4-2-key-asc (tab4-idx1 tab4-1-idx1 tab4-2-idx1) |
| 94 | + > some-key-value-1 |
| 95 | + DISPLAY 'Ok' |
| 96 | + END-SEARCH |
| 97 | + *KO must use AND |
| 98 | + SEARCH ALL tab4-2 |
| 99 | +Line 89[15,37] <27, Error, Syntax> - Syntax error : Invalid logical operator in WHEN SEARCH condition, AND operator expected. |
| 100 | + WHEN tab4-2-key-asc (tab4-idx1 tab4-1-idx1 tab4-2-idx1) |
| 101 | + = some-key-value-1 |
| 102 | + OR |
| 103 | + tab4-2-key-desc (tab4-idx1 tab4-1-idx1 tab4-2-idx1) |
| 104 | + = some-key-value-2 |
| 105 | + DISPLAY 'Ok' |
| 106 | + END-SEARCH |
| 107 | + *KO not a table item comparison |
| 108 | + SEARCH ALL tab4-2 |
| 109 | +Line 98[15,29] <27, Error, Syntax> - Syntax error : Invalid condition in WHEN SEARCH, only condition-names and key to value comparison are allowed. |
| 110 | + WHEN tab4-2-key-asc (tab4-idx1 tab4-1-idx1 tab4-2-idx1) |
| 111 | + IS NUMERIC |
| 112 | + DISPLAY 'Ok' |
| 113 | + END-SEARCH |
| 114 | + *KO must use first index |
| 115 | + SEARCH ALL tab4-2 |
| 116 | +Line 104[15,37] <27, Error, Syntax> - Syntax error : When subscripting, only first index declared for the table is allowed. |
| 117 | + WHEN tab4-2-key-asc (tab4-idx1 tab4-1-idx2 tab4-2-idx3) |
| 118 | + = some-key-value-1 |
| 119 | + DISPLAY 'Ok' |
| 120 | + END-SEARCH |
| 121 | + *KO must use proper keys |
| 122 | + SEARCH ALL tab4-2 |
| 123 | +Line 110[15,37] <27, Error, Syntax> - Syntax error : 'tab5-2-key' is not a sorting key of table 'tab4-2'. |
| 124 | + WHEN tab5-2-key (tab4-idx1 tab4-1-idx1 tab4-2-idx1) |
| 125 | + = some-key-value-1 |
| 126 | + DISPLAY 'Ok' |
| 127 | + END-SEARCH |
| 128 | + *KO key must be on left side |
| 129 | + SEARCH ALL tab4-2 |
| 130 | +Line 116[15,71] <27, Error, Syntax> - Syntax error : Left side operand of a WHEN condition must use first index of the table and at least one of declared keys. |
| 131 | + WHEN some-key-value-1 |
| 132 | + = tab4-2-key-asc (tab4-idx1 tab4-1-idx1 tab4-2-idx1) |
| 133 | + DISPLAY 'Ok' |
| 134 | + END-SEARCH |
| 135 | + *OK |
| 136 | + SEARCH ALL tab4-2 |
| 137 | + WHEN tab4-2-key-asc (tab4-idx1 tab4-1-idx1 tab4-2-idx1) |
| 138 | + = some-key-value-1 |
| 139 | + DISPLAY 'Ok' |
| 140 | + END-SEARCH |
| 141 | + GOBACK |
| 142 | + . |
| 143 | + END PROGRAM Pgm. |
0 commit comments