diff --git a/docs/port_invariance_contract.md b/docs/port_invariance_contract.md
index b96336d28..31f763612 100644
--- a/docs/port_invariance_contract.md
+++ b/docs/port_invariance_contract.md
@@ -19,7 +19,7 @@ above the floor. Measured 2026-10-02 with the scanner after #4163 and #4164:
| Reading (file_data) | Extraction key | ρ, 49 pairs | Floor | ρ, 12 committed pairs | Floor |
|---|---|---|---|---|---|
-| `function_count` (paragraphs, methods) | `functions` | 0.937 | 0.85 | 0.912 | 0.80 |
+| `function_count` (paragraphs, methods) | `functions` | 0.937 | 0.85 | 1.000 | 0.80 |
| `struct_branch` | `branch` | 0.855 | 0.75 | 0.784 | 0.65 |
| `state_flux` | `state_mutation` | 0.762 | 0.65 | 0.708 | 0.55 |
| `arch_io` | `io` | 0.871 | 0.75 | 0.958 | 0.80 |
@@ -30,14 +30,24 @@ literal (JDBC `?` placeholders, SQL `:host` variables) and a ternary twice (#417
"Literals"). Before that fix it read 0.826 on the 49 pairs and 0.745 on the 12; the other four readings did not
move.
+What `function_count` counts (#4444). On the COBOL side, the paragraphs and sections the scanner extracts. On the
+Java side, only the methods that are a COBOL paragraph: those the det translator documents `/** PARAGRAPH-NAME. */`
+(det/program.py), including the synthetic `(MAIN)` for code before the first paragraph. The helpers the translator
+generates have no paragraph behind them and are not counted: named 88-condition methods (`/** 88 NAME of PARENT. */`,
+#4202), `abended()` (#4541), `caWhole()` (#4642), `initialState()` (#4218), the entry points and dispatcher; they carry
+a prose comment or none, so a paragraph is told apart by its comment, not by a list of names. Counting every method
+had moved the 12-pair rho from 0.912 to 0.778 (CSUTLDTC: 22 methods against 3 paragraphs) with no scanner change; the
+floor stays 0.80 and the measurement now reads 1.000 (every pair's method count equals its paragraph count). The
+49-pair figure above has not been re-measured.
+
Each floor is the measurement less a margin of 0.08 to 0.15. On 12 pairs one pair changing places moves ρ by
about 0.05 to 0.1. Every fixture floor is above 0.50, the one-sided p < 0.05 critical value for 12 pairs, so a
passing fixture still shows a positive rank agreement that chance would rarely produce.
Two facts must also hold for every pair:
-- the port has at least as many methods as the COBOL has paragraphs and sections (the det port emits one method
- per paragraph and adds its own);
+- the port has at least as many paragraph methods as the COBOL has paragraphs and sections (the det port emits one
+ method per paragraph);
- the port does file I/O exactly when the COBOL does (`arch_io` zero on both sides or on neither).
## Readings a port may change
diff --git a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cbact03cService.java b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cbact03cService.java
index b05b925dc..5138094bb 100644
--- a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cbact03cService.java
+++ b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cbact03cService.java
@@ -34,11 +34,9 @@ public class Cbact03cService {
private static final Charset CS = CobolRecords.charset();
private static final int GOTO = 1 << 20;
- private static final BigDecimal D0 = new BigDecimal("0");
- private static final BigDecimal D16 = new BigDecimal("16");
- private static final BigDecimal D12 = new BigDecimal("12");
private static final BigDecimal D8 = new BigDecimal("8");
- private static final BigDecimal D999 = new BigDecimal("999");
+ private static final BigDecimal D12 = new BigDecimal("12");
+ private static final BigDecimal D0 = new BigDecimal("0");
private static final byte[] IMAGE_s_FD_XREFFILE_REC = Base64.getDecoder().decode(String.join("",
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA="));
@@ -52,14 +50,6 @@ public class Cbact03cService {
"AAA="));
private static final byte[] IMAGE_s_IO_STATUS_04 = Base64.getDecoder().decode(String.join("",
"MDAwMA=="));
- private static final byte[] IMAGE_s_APPL_RESULT = Base64.getDecoder().decode(String.join("",
- "AAAAAA=="));
- private static final byte[] IMAGE_s_END_OF_FILE = Base64.getDecoder().decode(String.join("",
- "Tg=="));
- private static final byte[] IMAGE_s_ABCODE = Base64.getDecoder().decode(String.join("",
- "AAAAAA=="));
- private static final byte[] IMAGE_s_TIMING = Base64.getDecoder().decode(String.join("",
- "AAAAAA=="));
private static final byte[] IMAGE_s_GG_RETURN_CODE = Base64.getDecoder().decode(String.join("",
"AAA="));
private final Storage s_FD_XREFFILE_REC = new Storage(IMAGE_s_FD_XREFFILE_REC.length);
@@ -68,38 +58,23 @@ public class Cbact03cService {
private final Storage s_IO_STATUS = new Storage(IMAGE_s_IO_STATUS.length);
private final Storage s_TWO_BYTES_BINARY = new Storage(IMAGE_s_TWO_BYTES_BINARY.length);
private final Storage s_IO_STATUS_04 = new Storage(IMAGE_s_IO_STATUS_04.length);
- private final Storage s_APPL_RESULT = new Storage(IMAGE_s_APPL_RESULT.length);
- private final Storage s_END_OF_FILE = new Storage(IMAGE_s_END_OF_FILE.length);
- private final Storage s_ABCODE = new Storage(IMAGE_s_ABCODE.length);
- private final Storage s_TIMING = new Storage(IMAGE_s_TIMING.length);
private final Storage s_GG_RETURN_CODE = new Storage(IMAGE_s_GG_RETURN_CODE.length);
- private Field f10_XREFFILE_STAT1;
- private Field f11_XREFFILE_STAT2;
- private Field f12_IO_STATUS;
- private Field f13_IO_STAT1;
- private Field f14_IO_STAT2;
- private Field f15_TWO_BYTES_BINARY;
- private Field f16_TWO_BYTES_ALPHA;
- private Field f17_TWO_BYTES_LEFT;
- private Field f18_TWO_BYTES_RIGHT;
- private Field f19_IO_STATUS_04;
- private Field f1_FD_XREFFILE_REC;
- private Field f20_IO_STATUS_0401;
- private Field f21_IO_STATUS_0403;
- private Field f22_APPL_RESULT;
- private Field f23_END_OF_FILE;
- private Field f24_ABCODE;
- private Field f25_TIMING;
- private Field f26_GG_RETURN_CODE;
- private Field f2_FD_XREF_CARD_NUM;
- private Field f3_FD_XREF_DATA;
- private Field f4_CARD_XREF_RECORD;
- private Field f5_XREF_CARD_NUM;
- private Field f6_XREF_CUST_ID;
- private Field f7_XREF_ACCT_ID;
- private Field f8_FILLER;
- private Field f9_XREFFILE_STATUS;
+ private final Field f1_FD_XREFFILE_REC = Field.group(s_FD_XREFFILE_REC, 0, 50);
+ private final Field f4_CARD_XREF_RECORD = Field.group(s_CARD_XREF_RECORD, 0, 50);
+ private final Field f9_XREFFILE_STATUS = Field.group(s_XREFFILE_STATUS, 0, 2);
+ private final Field f12_IO_STATUS = Field.group(s_IO_STATUS, 0, 2);
+ private final Field f13_IO_STAT1 = Field.alphanumeric(s_IO_STATUS, 0, 1, false);
+ private final Field f14_IO_STAT2 = Field.alphanumeric(s_IO_STATUS, 1, 1, false);
+ private final Field f15_TWO_BYTES_BINARY = Field.binary(s_TWO_BYTES_BINARY, 0, 4, 0, false, false);
+ private final Field f18_TWO_BYTES_RIGHT = Field.alphanumeric(s_TWO_BYTES_BINARY, 1, 1, false);
+ private final Field f19_IO_STATUS_04 = Field.group(s_IO_STATUS_04, 0, 4);
+ private final Field f21_IO_STATUS_0403 = Field.zoned(s_IO_STATUS_04, 1, 3, 0, false, false, false);
+ private final Field f26_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
+ private long f22_APPL_RESULT; // APPL-RESULT PIC S9(9) BINARY
+ private String f23_END_OF_FILE; // END-OF-FILE PIC X(01)
+ private long f24_ABCODE; // ABCODE PIC S9(9) BINARY
+ private long f25_TIMING; // TIMING PIC S9(9) BINARY
private static String id_CardXrefRecord(byte[] rec) {
Storage s = Storage.of(rec);
@@ -118,52 +93,27 @@ public Cbact03cService(CardXrefRecordRepository cardXrefRecordRepository, Datase
this.datasets = datasets;
this.files = files;
this.clock = clock;
- fields0();
}
- private void fields0() {
- f1_FD_XREFFILE_REC = Field.group(s_FD_XREFFILE_REC, 0, 50);
- f2_FD_XREF_CARD_NUM = Field.alphanumeric(s_FD_XREFFILE_REC, 0, 16, false);
- f3_FD_XREF_DATA = Field.alphanumeric(s_FD_XREFFILE_REC, 16, 34, false);
- f4_CARD_XREF_RECORD = Field.group(s_CARD_XREF_RECORD, 0, 50);
- f5_XREF_CARD_NUM = Field.alphanumeric(s_CARD_XREF_RECORD, 0, 16, false);
- f6_XREF_CUST_ID = Field.zoned(s_CARD_XREF_RECORD, 16, 9, 0, false, false, false);
- f7_XREF_ACCT_ID = Field.zoned(s_CARD_XREF_RECORD, 25, 11, 0, false, false, false);
- f8_FILLER = Field.alphanumeric(s_CARD_XREF_RECORD, 36, 14, false);
- f9_XREFFILE_STATUS = Field.group(s_XREFFILE_STATUS, 0, 2);
- f10_XREFFILE_STAT1 = Field.alphanumeric(s_XREFFILE_STATUS, 0, 1, false);
- f11_XREFFILE_STAT2 = Field.alphanumeric(s_XREFFILE_STATUS, 1, 1, false);
- f12_IO_STATUS = Field.group(s_IO_STATUS, 0, 2);
- f13_IO_STAT1 = Field.alphanumeric(s_IO_STATUS, 0, 1, false);
- f14_IO_STAT2 = Field.alphanumeric(s_IO_STATUS, 1, 1, false);
- f15_TWO_BYTES_BINARY = Field.binary(s_TWO_BYTES_BINARY, 0, 4, 0, false, false);
- f16_TWO_BYTES_ALPHA = Field.group(s_TWO_BYTES_BINARY, 0, 2);
- f17_TWO_BYTES_LEFT = Field.alphanumeric(s_TWO_BYTES_BINARY, 0, 1, false);
- f18_TWO_BYTES_RIGHT = Field.alphanumeric(s_TWO_BYTES_BINARY, 1, 1, false);
- f19_IO_STATUS_04 = Field.group(s_IO_STATUS_04, 0, 4);
- f20_IO_STATUS_0401 = Field.zoned(s_IO_STATUS_04, 0, 1, 0, false, false, false);
- f21_IO_STATUS_0403 = Field.zoned(s_IO_STATUS_04, 1, 3, 0, false, false, false);
- f22_APPL_RESULT = Field.binary(s_APPL_RESULT, 0, 9, 0, true, false);
- f23_END_OF_FILE = Field.alphanumeric(s_END_OF_FILE, 0, 1, false);
- f24_ABCODE = Field.binary(s_ABCODE, 0, 9, 0, true, false);
- f25_TIMING = Field.binary(s_TIMING, 0, 9, 0, true, false);
- f26_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
- }
-
- /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
- * initial storage; RETURN-CODE. */
- public int runProgram() {
+ /** WORKING-STORAGE (and every storage) as its VALUE clauses set it: each entry point starts from here. */
+ private void initialState() {
System.arraycopy(IMAGE_s_FD_XREFFILE_REC, 0, s_FD_XREFFILE_REC.bytes, 0, IMAGE_s_FD_XREFFILE_REC.length);
System.arraycopy(IMAGE_s_CARD_XREF_RECORD, 0, s_CARD_XREF_RECORD.bytes, 0, IMAGE_s_CARD_XREF_RECORD.length);
System.arraycopy(IMAGE_s_XREFFILE_STATUS, 0, s_XREFFILE_STATUS.bytes, 0, IMAGE_s_XREFFILE_STATUS.length);
System.arraycopy(IMAGE_s_IO_STATUS, 0, s_IO_STATUS.bytes, 0, IMAGE_s_IO_STATUS.length);
System.arraycopy(IMAGE_s_TWO_BYTES_BINARY, 0, s_TWO_BYTES_BINARY.bytes, 0, IMAGE_s_TWO_BYTES_BINARY.length);
System.arraycopy(IMAGE_s_IO_STATUS_04, 0, s_IO_STATUS_04.bytes, 0, IMAGE_s_IO_STATUS_04.length);
- System.arraycopy(IMAGE_s_APPL_RESULT, 0, s_APPL_RESULT.bytes, 0, IMAGE_s_APPL_RESULT.length);
- System.arraycopy(IMAGE_s_END_OF_FILE, 0, s_END_OF_FILE.bytes, 0, IMAGE_s_END_OF_FILE.length);
- System.arraycopy(IMAGE_s_ABCODE, 0, s_ABCODE.bytes, 0, IMAGE_s_ABCODE.length);
- System.arraycopy(IMAGE_s_TIMING, 0, s_TIMING.bytes, 0, IMAGE_s_TIMING.length);
System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ f22_APPL_RESULT = 0L;
+ f23_END_OF_FILE = "N";
+ f24_ABCODE = 0L;
+ f25_TIMING = 0L;
+ }
+
+ /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
+ * initial storage; RETURN-CODE. */
+ public int runProgram() {
+ initialState();
performDepth = 0;
try {
perform(0, 5);
@@ -173,10 +123,6 @@ public int runProgram() {
return Cobol.num(f26_GG_RETURN_CODE, CS).intValue();
}
- public void executeCbact03c() {
- runBatch(List.of(), null);
- }
-
/** GOBACK / STOP RUN. */
private static final class Goback extends RuntimeException {
@@ -194,18 +140,9 @@ private static Dd dd(List
dds, String name) {
/** The batch entry. */
public int runBatch(List dds, String parm) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
- System.arraycopy(IMAGE_s_FD_XREFFILE_REC, 0, s_FD_XREFFILE_REC.bytes, 0, IMAGE_s_FD_XREFFILE_REC.length);
- System.arraycopy(IMAGE_s_CARD_XREF_RECORD, 0, s_CARD_XREF_RECORD.bytes, 0, IMAGE_s_CARD_XREF_RECORD.length);
- System.arraycopy(IMAGE_s_XREFFILE_STATUS, 0, s_XREFFILE_STATUS.bytes, 0, IMAGE_s_XREFFILE_STATUS.length);
- System.arraycopy(IMAGE_s_IO_STATUS, 0, s_IO_STATUS.bytes, 0, IMAGE_s_IO_STATUS.length);
- System.arraycopy(IMAGE_s_TWO_BYTES_BINARY, 0, s_TWO_BYTES_BINARY.bytes, 0, IMAGE_s_TWO_BYTES_BINARY.length);
- System.arraycopy(IMAGE_s_IO_STATUS_04, 0, s_IO_STATUS_04.bytes, 0, IMAGE_s_IO_STATUS_04.length);
- System.arraycopy(IMAGE_s_APPL_RESULT, 0, s_APPL_RESULT.bytes, 0, IMAGE_s_APPL_RESULT.length);
- System.arraycopy(IMAGE_s_END_OF_FILE, 0, s_END_OF_FILE.bytes, 0, IMAGE_s_END_OF_FILE.length);
- System.arraycopy(IMAGE_s_ABCODE, 0, s_ABCODE.bytes, 0, IMAGE_s_ABCODE.length);
- System.arraycopy(IMAGE_s_TIMING, 0, s_TIMING.bytes, 0, IMAGE_s_TIMING.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
XREFFILE_FILE = new DetFiles.Indexed(files, "XREFFILE", s_FD_XREFFILE_REC, 0, 50, 0, 16, cardXrefRecordRepository::findAll, e -> e.toRecord(CS), b -> CardXrefRecord.fromRecord(b, CS), cardXrefRecordRepository::save, CS).withFindById(rec -> cardXrefRecordRepository.findById(id_CardXrefRecord(rec)));
try {
perform(0, 5);
@@ -215,6 +152,7 @@ public int runBatch(List dds, String parm) {
return Cobol.num(f26_GG_RETURN_CODE, CS).intValue();
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
@@ -291,13 +229,13 @@ private int p0() {
// PERFORM 0000-XREFFILE-OPEN
perform(2, 2);
// PERFORM UNTIL END-OF-FILE = 'Y'
- while (!(Cobol.compare(f23_END_OF_FILE, "Y", CS) == 0)) {
+ while (!(f23_END_OF_FILE.equals("Y"))) {
// IF END-OF-FILE = 'N'
- if (Cobol.compare(f23_END_OF_FILE, "N", CS) == 0) {
+ if (f23_END_OF_FILE.equals("N")) {
// PERFORM 1000-XREFFILE-GET-NEXT
perform(1, 1);
// IF END-OF-FILE = 'N'
- if (Cobol.compare(f23_END_OF_FILE, "N", CS) == 0) {
+ if (f23_END_OF_FILE.equals("N")) {
// DISPLAY CARD-XREF-RECORD
Sysout.display(Cobol.displayText(f4_CARD_XREF_RECORD, CS));
}
@@ -323,27 +261,27 @@ private int p1() {
// IF XREFFILE-STATUS = '00'
if (Cobol.compare(f9_XREFFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f22_APPL_RESULT, CS);
+ f22_APPL_RESULT = 0L;
// DISPLAY CARD-XREF-RECORD
Sysout.display(Cobol.displayText(f4_CARD_XREF_RECORD, CS));
} else {
// ELSE IF XREFFILE-STATUS = '10'
if (Cobol.compare(f9_XREFFILE_STATUS, "10", CS) == 0) {
// MOVE 16 TO APPL-RESULT
- Cobol.move(D16, f22_APPL_RESULT, CS);
+ f22_APPL_RESULT = 16L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f22_APPL_RESULT, CS);
+ f22_APPL_RESULT = 12L;
}
}
// IF APPL-AOK
- if (Cobol.compare(f22_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// ELSE IF APPL-EOF
- if (Cobol.compare(f22_APPL_RESULT, D16, CS) == 0) {
+ if (isApplEof()) {
// MOVE 'Y' TO END-OF-FILE
- Cobol.move("Y", f23_END_OF_FILE, CS);
+ f23_END_OF_FILE = "Y";
} else {
// DISPLAY 'ERROR READING XREFFILE'
Sysout.display("ERROR READING XREFFILE");
@@ -362,20 +300,20 @@ private int p1() {
/** 0000-XREFFILE-OPEN. */
private int p2() {
// MOVE 8 TO APPL-RESULT
- Cobol.move(D8, f22_APPL_RESULT, CS);
+ f22_APPL_RESULT = 8L;
// OPEN INPUT XREFFILE-FILE
String st2 = XREFFILE_FILE.open("INPUT");
Cobol.move(st2, f9_XREFFILE_STATUS, CS);
// IF XREFFILE-STATUS = '00'
if (Cobol.compare(f9_XREFFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f22_APPL_RESULT, CS);
+ f22_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f22_APPL_RESULT, CS);
+ f22_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f22_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR OPENING XREFFILE'
@@ -395,22 +333,22 @@ private int p2() {
private int p3() {
// ADD 8 TO ZERO GIVING APPL-RESULT
BigDecimal v3 = D8.add(BigDecimal.ZERO);
- Cobol.store(f22_APPL_RESULT, v3, false, CS);
+ f22_APPL_RESULT = Cobol.binary(v3, 9, true, false, CS);
// CLOSE XREFFILE-FILE
String st4 = XREFFILE_FILE.close();
Cobol.move(st4, f9_XREFFILE_STATUS, CS);
// IF XREFFILE-STATUS = '00'
if (Cobol.compare(f9_XREFFILE_STATUS, "00", CS) == 0) {
// SUBTRACT APPL-RESULT FROM APPL-RESULT
- BigDecimal t5 = Cobol.num(f22_APPL_RESULT, CS);
- Cobol.store(f22_APPL_RESULT, Cobol.num(f22_APPL_RESULT, CS).subtract(t5), false, CS);
+ BigDecimal t5 = BigDecimal.valueOf(f22_APPL_RESULT);
+ f22_APPL_RESULT = Cobol.binary(BigDecimal.valueOf(f22_APPL_RESULT).subtract(t5), 9, true, false, CS);
} else {
// ADD 12 TO ZERO GIVING APPL-RESULT
BigDecimal v7 = D12.add(BigDecimal.ZERO);
- Cobol.store(f22_APPL_RESULT, v7, false, CS);
+ f22_APPL_RESULT = Cobol.binary(v7, 9, true, false, CS);
}
// IF APPL-AOK
- if (Cobol.compare(f22_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR CLOSING XREFFILE'
@@ -431,11 +369,11 @@ private int p4() {
// DISPLAY 'ABENDING PROGRAM'
Sysout.display("ABENDING PROGRAM");
// MOVE 0 TO TIMING
- Cobol.move(D0, f25_TIMING, CS);
+ f25_TIMING = 0L;
// MOVE 999 TO ABCODE
- Cobol.move(D999, f24_ABCODE, CS);
+ f24_ABCODE = 999L;
// CALL 'CEE3ABD' USING ABCODE, TIMING
- if (true) throw CobolAbend.user(Cobol.num(f24_ABCODE, CS).intValue(), "CEE3ABD");
+ if (true) throw CobolAbend.user(BigDecimal.valueOf(f24_ABCODE).intValue(), "CEE3ABD");
return 5;
}
@@ -465,4 +403,10 @@ private int p5() {
return 6;
}
+ /** 88 APPL-AOK of APPL-RESULT. */
+ private boolean isApplAok() { return f22_APPL_RESULT == 0L; }
+
+ /** 88 APPL-EOF of APPL-RESULT. */
+ private boolean isApplEof() { return f22_APPL_RESULT == 16L; }
+
}
diff --git a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cbcus01cService.java b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cbcus01cService.java
index b94b7735c..7c69da332 100644
--- a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cbcus01cService.java
+++ b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cbcus01cService.java
@@ -34,11 +34,9 @@ public class Cbcus01cService {
private static final Charset CS = CobolRecords.charset();
private static final int GOTO = 1 << 20;
- private static final BigDecimal D0 = new BigDecimal("0");
- private static final BigDecimal D16 = new BigDecimal("16");
- private static final BigDecimal D12 = new BigDecimal("12");
private static final BigDecimal D8 = new BigDecimal("8");
- private static final BigDecimal D999 = new BigDecimal("999");
+ private static final BigDecimal D12 = new BigDecimal("12");
+ private static final BigDecimal D0 = new BigDecimal("0");
private static final byte[] IMAGE_s_FD_CUSTFILE_REC = Base64.getDecoder().decode(String.join("",
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg",
@@ -54,14 +52,6 @@ public class Cbcus01cService {
"AAA="));
private static final byte[] IMAGE_s_IO_STATUS_04 = Base64.getDecoder().decode(String.join("",
"MDAwMA=="));
- private static final byte[] IMAGE_s_APPL_RESULT = Base64.getDecoder().decode(String.join("",
- "AAAAAA=="));
- private static final byte[] IMAGE_s_END_OF_FILE = Base64.getDecoder().decode(String.join("",
- "Tg=="));
- private static final byte[] IMAGE_s_ABCODE = Base64.getDecoder().decode(String.join("",
- "AAAAAA=="));
- private static final byte[] IMAGE_s_TIMING = Base64.getDecoder().decode(String.join("",
- "AAAAAA=="));
private static final byte[] IMAGE_s_GG_RETURN_CODE = Base64.getDecoder().decode(String.join("",
"AAA="));
private final Storage s_FD_CUSTFILE_REC = new Storage(IMAGE_s_FD_CUSTFILE_REC.length);
@@ -70,53 +60,23 @@ public class Cbcus01cService {
private final Storage s_IO_STATUS = new Storage(IMAGE_s_IO_STATUS.length);
private final Storage s_TWO_BYTES_BINARY = new Storage(IMAGE_s_TWO_BYTES_BINARY.length);
private final Storage s_IO_STATUS_04 = new Storage(IMAGE_s_IO_STATUS_04.length);
- private final Storage s_APPL_RESULT = new Storage(IMAGE_s_APPL_RESULT.length);
- private final Storage s_END_OF_FILE = new Storage(IMAGE_s_END_OF_FILE.length);
- private final Storage s_ABCODE = new Storage(IMAGE_s_ABCODE.length);
- private final Storage s_TIMING = new Storage(IMAGE_s_TIMING.length);
private final Storage s_GG_RETURN_CODE = new Storage(IMAGE_s_GG_RETURN_CODE.length);
- private Field f10_CUST_ADDR_LINE_2;
- private Field f11_CUST_ADDR_LINE_3;
- private Field f12_CUST_ADDR_STATE_CD;
- private Field f13_CUST_ADDR_COUNTRY_CD;
- private Field f14_CUST_ADDR_ZIP;
- private Field f15_CUST_PHONE_NUM_1;
- private Field f16_CUST_PHONE_NUM_2;
- private Field f17_CUST_SSN;
- private Field f18_CUST_GOVT_ISSUED_ID;
- private Field f19_CUST_DOB_YYYY_MM_DD;
- private Field f1_FD_CUSTFILE_REC;
- private Field f20_CUST_EFT_ACCOUNT_ID;
- private Field f21_CUST_PRI_CARD_HOLDER_IND;
- private Field f22_CUST_FICO_CREDIT_SCORE;
- private Field f23_FILLER;
- private Field f24_CUSTFILE_STATUS;
- private Field f25_CUSTFILE_STAT1;
- private Field f26_CUSTFILE_STAT2;
- private Field f27_IO_STATUS;
- private Field f28_IO_STAT1;
- private Field f29_IO_STAT2;
- private Field f2_FD_CUST_ID;
- private Field f30_TWO_BYTES_BINARY;
- private Field f31_TWO_BYTES_ALPHA;
- private Field f32_TWO_BYTES_LEFT;
- private Field f33_TWO_BYTES_RIGHT;
- private Field f34_IO_STATUS_04;
- private Field f35_IO_STATUS_0401;
- private Field f36_IO_STATUS_0403;
- private Field f37_APPL_RESULT;
- private Field f38_END_OF_FILE;
- private Field f39_ABCODE;
- private Field f3_FD_CUST_DATA;
- private Field f40_TIMING;
- private Field f41_GG_RETURN_CODE;
- private Field f4_CUSTOMER_RECORD;
- private Field f5_CUST_ID;
- private Field f6_CUST_FIRST_NAME;
- private Field f7_CUST_MIDDLE_NAME;
- private Field f8_CUST_LAST_NAME;
- private Field f9_CUST_ADDR_LINE_1;
+ private final Field f1_FD_CUSTFILE_REC = Field.group(s_FD_CUSTFILE_REC, 0, 500);
+ private final Field f4_CUSTOMER_RECORD = Field.group(s_CUSTOMER_RECORD, 0, 500);
+ private final Field f24_CUSTFILE_STATUS = Field.group(s_CUSTFILE_STATUS, 0, 2);
+ private final Field f27_IO_STATUS = Field.group(s_IO_STATUS, 0, 2);
+ private final Field f28_IO_STAT1 = Field.alphanumeric(s_IO_STATUS, 0, 1, false);
+ private final Field f29_IO_STAT2 = Field.alphanumeric(s_IO_STATUS, 1, 1, false);
+ private final Field f30_TWO_BYTES_BINARY = Field.binary(s_TWO_BYTES_BINARY, 0, 4, 0, false, false);
+ private final Field f33_TWO_BYTES_RIGHT = Field.alphanumeric(s_TWO_BYTES_BINARY, 1, 1, false);
+ private final Field f34_IO_STATUS_04 = Field.group(s_IO_STATUS_04, 0, 4);
+ private final Field f36_IO_STATUS_0403 = Field.zoned(s_IO_STATUS_04, 1, 3, 0, false, false, false);
+ private final Field f41_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
+ private long f37_APPL_RESULT; // APPL-RESULT PIC S9(9) BINARY
+ private String f38_END_OF_FILE; // END-OF-FILE PIC X(01)
+ private long f39_ABCODE; // ABCODE PIC S9(9) BINARY
+ private long f40_TIMING; // TIMING PIC S9(9) BINARY
private static Integer id_CustomerRecord(byte[] rec) {
Storage s = Storage.of(rec);
@@ -135,67 +95,27 @@ public Cbcus01cService(CustomerRecordRepository customerRecordRepository, Datase
this.datasets = datasets;
this.files = files;
this.clock = clock;
- fields0();
}
- private void fields0() {
- f1_FD_CUSTFILE_REC = Field.group(s_FD_CUSTFILE_REC, 0, 500);
- f2_FD_CUST_ID = Field.zoned(s_FD_CUSTFILE_REC, 0, 9, 0, false, false, false);
- f3_FD_CUST_DATA = Field.alphanumeric(s_FD_CUSTFILE_REC, 9, 491, false);
- f4_CUSTOMER_RECORD = Field.group(s_CUSTOMER_RECORD, 0, 500);
- f5_CUST_ID = Field.zoned(s_CUSTOMER_RECORD, 0, 9, 0, false, false, false);
- f6_CUST_FIRST_NAME = Field.alphanumeric(s_CUSTOMER_RECORD, 9, 25, false);
- f7_CUST_MIDDLE_NAME = Field.alphanumeric(s_CUSTOMER_RECORD, 34, 25, false);
- f8_CUST_LAST_NAME = Field.alphanumeric(s_CUSTOMER_RECORD, 59, 25, false);
- f9_CUST_ADDR_LINE_1 = Field.alphanumeric(s_CUSTOMER_RECORD, 84, 50, false);
- f10_CUST_ADDR_LINE_2 = Field.alphanumeric(s_CUSTOMER_RECORD, 134, 50, false);
- f11_CUST_ADDR_LINE_3 = Field.alphanumeric(s_CUSTOMER_RECORD, 184, 50, false);
- f12_CUST_ADDR_STATE_CD = Field.alphanumeric(s_CUSTOMER_RECORD, 234, 2, false);
- f13_CUST_ADDR_COUNTRY_CD = Field.alphanumeric(s_CUSTOMER_RECORD, 236, 3, false);
- f14_CUST_ADDR_ZIP = Field.alphanumeric(s_CUSTOMER_RECORD, 239, 10, false);
- f15_CUST_PHONE_NUM_1 = Field.alphanumeric(s_CUSTOMER_RECORD, 249, 15, false);
- f16_CUST_PHONE_NUM_2 = Field.alphanumeric(s_CUSTOMER_RECORD, 264, 15, false);
- f17_CUST_SSN = Field.zoned(s_CUSTOMER_RECORD, 279, 9, 0, false, false, false);
- f18_CUST_GOVT_ISSUED_ID = Field.alphanumeric(s_CUSTOMER_RECORD, 288, 20, false);
- f19_CUST_DOB_YYYY_MM_DD = Field.alphanumeric(s_CUSTOMER_RECORD, 308, 10, false);
- f20_CUST_EFT_ACCOUNT_ID = Field.alphanumeric(s_CUSTOMER_RECORD, 318, 10, false);
- f21_CUST_PRI_CARD_HOLDER_IND = Field.alphanumeric(s_CUSTOMER_RECORD, 328, 1, false);
- f22_CUST_FICO_CREDIT_SCORE = Field.zoned(s_CUSTOMER_RECORD, 329, 3, 0, false, false, false);
- f23_FILLER = Field.alphanumeric(s_CUSTOMER_RECORD, 332, 168, false);
- f24_CUSTFILE_STATUS = Field.group(s_CUSTFILE_STATUS, 0, 2);
- f25_CUSTFILE_STAT1 = Field.alphanumeric(s_CUSTFILE_STATUS, 0, 1, false);
- f26_CUSTFILE_STAT2 = Field.alphanumeric(s_CUSTFILE_STATUS, 1, 1, false);
- f27_IO_STATUS = Field.group(s_IO_STATUS, 0, 2);
- f28_IO_STAT1 = Field.alphanumeric(s_IO_STATUS, 0, 1, false);
- f29_IO_STAT2 = Field.alphanumeric(s_IO_STATUS, 1, 1, false);
- f30_TWO_BYTES_BINARY = Field.binary(s_TWO_BYTES_BINARY, 0, 4, 0, false, false);
- f31_TWO_BYTES_ALPHA = Field.group(s_TWO_BYTES_BINARY, 0, 2);
- f32_TWO_BYTES_LEFT = Field.alphanumeric(s_TWO_BYTES_BINARY, 0, 1, false);
- f33_TWO_BYTES_RIGHT = Field.alphanumeric(s_TWO_BYTES_BINARY, 1, 1, false);
- f34_IO_STATUS_04 = Field.group(s_IO_STATUS_04, 0, 4);
- f35_IO_STATUS_0401 = Field.zoned(s_IO_STATUS_04, 0, 1, 0, false, false, false);
- f36_IO_STATUS_0403 = Field.zoned(s_IO_STATUS_04, 1, 3, 0, false, false, false);
- f37_APPL_RESULT = Field.binary(s_APPL_RESULT, 0, 9, 0, true, false);
- f38_END_OF_FILE = Field.alphanumeric(s_END_OF_FILE, 0, 1, false);
- f39_ABCODE = Field.binary(s_ABCODE, 0, 9, 0, true, false);
- f40_TIMING = Field.binary(s_TIMING, 0, 9, 0, true, false);
- f41_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
- }
-
- /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
- * initial storage; RETURN-CODE. */
- public int runProgram() {
+ /** WORKING-STORAGE (and every storage) as its VALUE clauses set it: each entry point starts from here. */
+ private void initialState() {
System.arraycopy(IMAGE_s_FD_CUSTFILE_REC, 0, s_FD_CUSTFILE_REC.bytes, 0, IMAGE_s_FD_CUSTFILE_REC.length);
System.arraycopy(IMAGE_s_CUSTOMER_RECORD, 0, s_CUSTOMER_RECORD.bytes, 0, IMAGE_s_CUSTOMER_RECORD.length);
System.arraycopy(IMAGE_s_CUSTFILE_STATUS, 0, s_CUSTFILE_STATUS.bytes, 0, IMAGE_s_CUSTFILE_STATUS.length);
System.arraycopy(IMAGE_s_IO_STATUS, 0, s_IO_STATUS.bytes, 0, IMAGE_s_IO_STATUS.length);
System.arraycopy(IMAGE_s_TWO_BYTES_BINARY, 0, s_TWO_BYTES_BINARY.bytes, 0, IMAGE_s_TWO_BYTES_BINARY.length);
System.arraycopy(IMAGE_s_IO_STATUS_04, 0, s_IO_STATUS_04.bytes, 0, IMAGE_s_IO_STATUS_04.length);
- System.arraycopy(IMAGE_s_APPL_RESULT, 0, s_APPL_RESULT.bytes, 0, IMAGE_s_APPL_RESULT.length);
- System.arraycopy(IMAGE_s_END_OF_FILE, 0, s_END_OF_FILE.bytes, 0, IMAGE_s_END_OF_FILE.length);
- System.arraycopy(IMAGE_s_ABCODE, 0, s_ABCODE.bytes, 0, IMAGE_s_ABCODE.length);
- System.arraycopy(IMAGE_s_TIMING, 0, s_TIMING.bytes, 0, IMAGE_s_TIMING.length);
System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ f37_APPL_RESULT = 0L;
+ f38_END_OF_FILE = "N";
+ f39_ABCODE = 0L;
+ f40_TIMING = 0L;
+ }
+
+ /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
+ * initial storage; RETURN-CODE. */
+ public int runProgram() {
+ initialState();
performDepth = 0;
try {
perform(0, 5);
@@ -205,10 +125,6 @@ public int runProgram() {
return Cobol.num(f41_GG_RETURN_CODE, CS).intValue();
}
- public void executeCbcus01c() {
- runBatch(List.of(), null);
- }
-
/** GOBACK / STOP RUN. */
private static final class Goback extends RuntimeException {
@@ -226,18 +142,9 @@ private static Dd dd(List dds, String name) {
/** The batch entry. */
public int runBatch(List dds, String parm) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
- System.arraycopy(IMAGE_s_FD_CUSTFILE_REC, 0, s_FD_CUSTFILE_REC.bytes, 0, IMAGE_s_FD_CUSTFILE_REC.length);
- System.arraycopy(IMAGE_s_CUSTOMER_RECORD, 0, s_CUSTOMER_RECORD.bytes, 0, IMAGE_s_CUSTOMER_RECORD.length);
- System.arraycopy(IMAGE_s_CUSTFILE_STATUS, 0, s_CUSTFILE_STATUS.bytes, 0, IMAGE_s_CUSTFILE_STATUS.length);
- System.arraycopy(IMAGE_s_IO_STATUS, 0, s_IO_STATUS.bytes, 0, IMAGE_s_IO_STATUS.length);
- System.arraycopy(IMAGE_s_TWO_BYTES_BINARY, 0, s_TWO_BYTES_BINARY.bytes, 0, IMAGE_s_TWO_BYTES_BINARY.length);
- System.arraycopy(IMAGE_s_IO_STATUS_04, 0, s_IO_STATUS_04.bytes, 0, IMAGE_s_IO_STATUS_04.length);
- System.arraycopy(IMAGE_s_APPL_RESULT, 0, s_APPL_RESULT.bytes, 0, IMAGE_s_APPL_RESULT.length);
- System.arraycopy(IMAGE_s_END_OF_FILE, 0, s_END_OF_FILE.bytes, 0, IMAGE_s_END_OF_FILE.length);
- System.arraycopy(IMAGE_s_ABCODE, 0, s_ABCODE.bytes, 0, IMAGE_s_ABCODE.length);
- System.arraycopy(IMAGE_s_TIMING, 0, s_TIMING.bytes, 0, IMAGE_s_TIMING.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
CUSTFILE_FILE = new DetFiles.Indexed(files, "CUSTFILE", s_FD_CUSTFILE_REC, 0, 500, 0, 9, customerRecordRepository::findAll, e -> e.toRecord(CS), b -> CustomerRecord.fromRecord(b, CS), customerRecordRepository::save, CS).withFindById(rec -> customerRecordRepository.findById(id_CustomerRecord(rec)));
try {
perform(0, 5);
@@ -247,6 +154,7 @@ public int runBatch(List dds, String parm) {
return Cobol.num(f41_GG_RETURN_CODE, CS).intValue();
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
@@ -323,13 +231,13 @@ private int p0() {
// PERFORM 0000-CUSTFILE-OPEN
perform(2, 2);
// PERFORM UNTIL END-OF-FILE = 'Y'
- while (!(Cobol.compare(f38_END_OF_FILE, "Y", CS) == 0)) {
+ while (!(f38_END_OF_FILE.equals("Y"))) {
// IF END-OF-FILE = 'N'
- if (Cobol.compare(f38_END_OF_FILE, "N", CS) == 0) {
+ if (f38_END_OF_FILE.equals("N")) {
// PERFORM 1000-CUSTFILE-GET-NEXT
perform(1, 1);
// IF END-OF-FILE = 'N'
- if (Cobol.compare(f38_END_OF_FILE, "N", CS) == 0) {
+ if (f38_END_OF_FILE.equals("N")) {
// DISPLAY CUSTOMER-RECORD
Sysout.display(Cobol.displayText(f4_CUSTOMER_RECORD, CS));
}
@@ -355,27 +263,27 @@ private int p1() {
// IF CUSTFILE-STATUS = '00'
if (Cobol.compare(f24_CUSTFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f37_APPL_RESULT, CS);
+ f37_APPL_RESULT = 0L;
// DISPLAY CUSTOMER-RECORD
Sysout.display(Cobol.displayText(f4_CUSTOMER_RECORD, CS));
} else {
// ELSE IF CUSTFILE-STATUS = '10'
if (Cobol.compare(f24_CUSTFILE_STATUS, "10", CS) == 0) {
// MOVE 16 TO APPL-RESULT
- Cobol.move(D16, f37_APPL_RESULT, CS);
+ f37_APPL_RESULT = 16L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f37_APPL_RESULT, CS);
+ f37_APPL_RESULT = 12L;
}
}
// IF APPL-AOK
- if (Cobol.compare(f37_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// ELSE IF APPL-EOF
- if (Cobol.compare(f37_APPL_RESULT, D16, CS) == 0) {
+ if (isApplEof()) {
// MOVE 'Y' TO END-OF-FILE
- Cobol.move("Y", f38_END_OF_FILE, CS);
+ f38_END_OF_FILE = "Y";
} else {
// DISPLAY 'ERROR READING CUSTOMER FILE'
Sysout.display("ERROR READING CUSTOMER FILE");
@@ -394,20 +302,20 @@ private int p1() {
/** 0000-CUSTFILE-OPEN. */
private int p2() {
// MOVE 8 TO APPL-RESULT
- Cobol.move(D8, f37_APPL_RESULT, CS);
+ f37_APPL_RESULT = 8L;
// OPEN INPUT CUSTFILE-FILE
String st2 = CUSTFILE_FILE.open("INPUT");
Cobol.move(st2, f24_CUSTFILE_STATUS, CS);
// IF CUSTFILE-STATUS = '00'
if (Cobol.compare(f24_CUSTFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f37_APPL_RESULT, CS);
+ f37_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f37_APPL_RESULT, CS);
+ f37_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f37_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR OPENING CUSTFILE'
@@ -427,22 +335,22 @@ private int p2() {
private int p3() {
// ADD 8 TO ZERO GIVING APPL-RESULT
BigDecimal v3 = D8.add(BigDecimal.ZERO);
- Cobol.store(f37_APPL_RESULT, v3, false, CS);
+ f37_APPL_RESULT = Cobol.binary(v3, 9, true, false, CS);
// CLOSE CUSTFILE-FILE
String st4 = CUSTFILE_FILE.close();
Cobol.move(st4, f24_CUSTFILE_STATUS, CS);
// IF CUSTFILE-STATUS = '00'
if (Cobol.compare(f24_CUSTFILE_STATUS, "00", CS) == 0) {
// SUBTRACT APPL-RESULT FROM APPL-RESULT
- BigDecimal t5 = Cobol.num(f37_APPL_RESULT, CS);
- Cobol.store(f37_APPL_RESULT, Cobol.num(f37_APPL_RESULT, CS).subtract(t5), false, CS);
+ BigDecimal t5 = BigDecimal.valueOf(f37_APPL_RESULT);
+ f37_APPL_RESULT = Cobol.binary(BigDecimal.valueOf(f37_APPL_RESULT).subtract(t5), 9, true, false, CS);
} else {
// ADD 12 TO ZERO GIVING APPL-RESULT
BigDecimal v7 = D12.add(BigDecimal.ZERO);
- Cobol.store(f37_APPL_RESULT, v7, false, CS);
+ f37_APPL_RESULT = Cobol.binary(v7, 9, true, false, CS);
}
// IF APPL-AOK
- if (Cobol.compare(f37_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR CLOSING CUSTOMER FILE'
@@ -463,11 +371,11 @@ private int p4() {
// DISPLAY 'ABENDING PROGRAM'
Sysout.display("ABENDING PROGRAM");
// MOVE 0 TO TIMING
- Cobol.move(D0, f40_TIMING, CS);
+ f40_TIMING = 0L;
// MOVE 999 TO ABCODE
- Cobol.move(D999, f39_ABCODE, CS);
+ f39_ABCODE = 999L;
// CALL 'CEE3ABD' USING ABCODE, TIMING
- if (true) throw CobolAbend.user(Cobol.num(f39_ABCODE, CS).intValue(), "CEE3ABD");
+ if (true) throw CobolAbend.user(BigDecimal.valueOf(f39_ABCODE).intValue(), "CEE3ABD");
return 5;
}
@@ -497,4 +405,10 @@ private int p5() {
return 6;
}
+ /** 88 APPL-AOK of APPL-RESULT. */
+ private boolean isApplAok() { return f37_APPL_RESULT == 0L; }
+
+ /** 88 APPL-EOF of APPL-RESULT. */
+ private boolean isApplEof() { return f37_APPL_RESULT == 16L; }
+
}
diff --git a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cbtrn01cService.java b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cbtrn01cService.java
index 2cf1dddd8..009a00d09 100644
--- a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cbtrn01cService.java
+++ b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cbtrn01cService.java
@@ -46,11 +46,8 @@ public class Cbtrn01cService {
private static final Charset CS = CobolRecords.charset();
private static final int GOTO = 1 << 20;
private static final BigDecimal D0 = new BigDecimal("0");
- private static final BigDecimal D16 = new BigDecimal("16");
- private static final BigDecimal D12 = new BigDecimal("12");
private static final BigDecimal D4 = new BigDecimal("4");
private static final BigDecimal D8 = new BigDecimal("8");
- private static final BigDecimal D999 = new BigDecimal("999");
private static final byte[] IMAGE_s_FD_TRAN_RECORD = Base64.getDecoder().decode(String.join("",
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg",
@@ -100,14 +97,6 @@ public class Cbtrn01cService {
"AAA="));
private static final byte[] IMAGE_s_IO_STATUS_04 = Base64.getDecoder().decode(String.join("",
"MDAwMA=="));
- private static final byte[] IMAGE_s_APPL_RESULT = Base64.getDecoder().decode(String.join("",
- "AAAAAA=="));
- private static final byte[] IMAGE_s_END_OF_DAILY_TRANS_FILE = Base64.getDecoder().decode(String.join("",
- "Tg=="));
- private static final byte[] IMAGE_s_ABCODE = Base64.getDecoder().decode(String.join("",
- "AAAAAA=="));
- private static final byte[] IMAGE_s_TIMING = Base64.getDecoder().decode(String.join("",
- "AAAAAA=="));
private static final byte[] IMAGE_s_WS_MISC_VARIABLES = Base64.getDecoder().decode(String.join("",
"MDAwMDAwMDA="));
private static final byte[] IMAGE_s_GG_RETURN_CODE = Base64.getDecoder().decode(String.join("",
@@ -133,144 +122,80 @@ public class Cbtrn01cService {
private final Storage s_IO_STATUS = new Storage(IMAGE_s_IO_STATUS.length);
private final Storage s_TWO_BYTES_BINARY = new Storage(IMAGE_s_TWO_BYTES_BINARY.length);
private final Storage s_IO_STATUS_04 = new Storage(IMAGE_s_IO_STATUS_04.length);
- private final Storage s_APPL_RESULT = new Storage(IMAGE_s_APPL_RESULT.length);
- private final Storage s_END_OF_DAILY_TRANS_FILE = new Storage(IMAGE_s_END_OF_DAILY_TRANS_FILE.length);
- private final Storage s_ABCODE = new Storage(IMAGE_s_ABCODE.length);
- private final Storage s_TIMING = new Storage(IMAGE_s_TIMING.length);
private final Storage s_WS_MISC_VARIABLES = new Storage(IMAGE_s_WS_MISC_VARIABLES.length);
private final Storage s_GG_RETURN_CODE = new Storage(IMAGE_s_GG_RETURN_CODE.length);
- private Field f100_TRAN_SOURCE;
- private Field f101_TRAN_DESC;
- private Field f102_TRAN_AMT;
- private Field f103_TRAN_MERCHANT_ID;
- private Field f104_TRAN_MERCHANT_NAME;
- private Field f105_TRAN_MERCHANT_CITY;
- private Field f106_TRAN_MERCHANT_ZIP;
- private Field f107_TRAN_CARD_NUM;
- private Field f108_TRAN_ORIG_TS;
- private Field f109_TRAN_PROC_TS;
- private Field f10_FD_CARDFILE_REC;
- private Field f110_FILLER;
- private Field f111_TRANFILE_STATUS;
- private Field f112_TRANFILE_STAT1;
- private Field f113_TRANFILE_STAT2;
- private Field f114_IO_STATUS;
- private Field f115_IO_STAT1;
- private Field f116_IO_STAT2;
- private Field f117_TWO_BYTES_BINARY;
- private Field f118_TWO_BYTES_ALPHA;
- private Field f119_TWO_BYTES_LEFT;
- private Field f11_FD_CARD_NUM;
- private Field f120_TWO_BYTES_RIGHT;
- private Field f121_IO_STATUS_04;
- private Field f122_IO_STATUS_0401;
- private Field f123_IO_STATUS_0403;
- private Field f124_APPL_RESULT;
- private Field f125_END_OF_DAILY_TRANS_FILE;
- private Field f126_ABCODE;
- private Field f127_TIMING;
- private Field f128_WS_MISC_VARIABLES;
- private Field f129_WS_XREF_READ_STATUS;
- private Field f12_FD_CARD_DATA;
- private Field f130_WS_ACCT_READ_STATUS;
- private Field f131_GG_RETURN_CODE;
- private Field f13_FD_ACCTFILE_REC;
- private Field f14_FD_ACCT_ID;
- private Field f15_FD_ACCT_DATA;
- private Field f16_FD_TRANFILE_REC;
- private Field f17_FD_TRANS_ID;
- private Field f18_FD_ACCT_DATA;
- private Field f19_DALYTRAN_RECORD;
- private Field f1_FD_TRAN_RECORD;
- private Field f20_DALYTRAN_ID;
- private Field f21_DALYTRAN_TYPE_CD;
- private Field f22_DALYTRAN_CAT_CD;
- private Field f23_DALYTRAN_SOURCE;
- private Field f24_DALYTRAN_DESC;
- private Field f25_DALYTRAN_AMT;
- private Field f26_DALYTRAN_MERCHANT_ID;
- private Field f27_DALYTRAN_MERCHANT_NAME;
- private Field f28_DALYTRAN_MERCHANT_CITY;
- private Field f29_DALYTRAN_MERCHANT_ZIP;
- private Field f2_FD_TRAN_ID;
- private Field f30_DALYTRAN_CARD_NUM;
- private Field f31_DALYTRAN_ORIG_TS;
- private Field f32_DALYTRAN_PROC_TS;
- private Field f33_FILLER;
- private Field f34_DALYTRAN_STATUS;
- private Field f35_DALYTRAN_STAT1;
- private Field f36_DALYTRAN_STAT2;
- private Field f37_CUSTOMER_RECORD;
- private Field f38_CUST_ID;
- private Field f39_CUST_FIRST_NAME;
- private Field f3_FD_CUST_DATA;
- private Field f40_CUST_MIDDLE_NAME;
- private Field f41_CUST_LAST_NAME;
- private Field f42_CUST_ADDR_LINE_1;
- private Field f43_CUST_ADDR_LINE_2;
- private Field f44_CUST_ADDR_LINE_3;
- private Field f45_CUST_ADDR_STATE_CD;
- private Field f46_CUST_ADDR_COUNTRY_CD;
- private Field f47_CUST_ADDR_ZIP;
- private Field f48_CUST_PHONE_NUM_1;
- private Field f49_CUST_PHONE_NUM_2;
- private Field f4_FD_CUSTFILE_REC;
- private Field f50_CUST_SSN;
- private Field f51_CUST_GOVT_ISSUED_ID;
- private Field f52_CUST_DOB_YYYY_MM_DD;
- private Field f53_CUST_EFT_ACCOUNT_ID;
- private Field f54_CUST_PRI_CARD_HOLDER_IND;
- private Field f55_CUST_FICO_CREDIT_SCORE;
- private Field f56_FILLER;
- private Field f57_CUSTFILE_STATUS;
- private Field f58_CUSTFILE_STAT1;
- private Field f59_CUSTFILE_STAT2;
- private Field f5_FD_CUST_ID;
- private Field f60_CARD_XREF_RECORD;
- private Field f61_XREF_CARD_NUM;
- private Field f62_XREF_CUST_ID;
- private Field f63_XREF_ACCT_ID;
- private Field f64_FILLER;
- private Field f65_XREFFILE_STATUS;
- private Field f66_XREFFILE_STAT1;
- private Field f67_XREFFILE_STAT2;
- private Field f68_CARD_RECORD;
- private Field f69_CARD_NUM;
- private Field f6_FD_CUST_DATA;
- private Field f70_CARD_ACCT_ID;
- private Field f71_CARD_CVV_CD;
- private Field f72_CARD_EMBOSSED_NAME;
- private Field f73_CARD_EXPIRAION_DATE;
- private Field f74_CARD_ACTIVE_STATUS;
- private Field f75_FILLER;
- private Field f76_CARDFILE_STATUS;
- private Field f77_CARDFILE_STAT1;
- private Field f78_CARDFILE_STAT2;
- private Field f79_ACCOUNT_RECORD;
- private Field f7_FD_XREFFILE_REC;
- private Field f80_ACCT_ID;
- private Field f81_ACCT_ACTIVE_STATUS;
- private Field f82_ACCT_CURR_BAL;
- private Field f83_ACCT_CREDIT_LIMIT;
- private Field f84_ACCT_CASH_CREDIT_LIMIT;
- private Field f85_ACCT_OPEN_DATE;
- private Field f86_ACCT_EXPIRAION_DATE;
- private Field f87_ACCT_REISSUE_DATE;
- private Field f88_ACCT_CURR_CYC_CREDIT;
- private Field f89_ACCT_CURR_CYC_DEBIT;
- private Field f8_FD_XREF_CARD_NUM;
- private Field f90_ACCT_ADDR_ZIP;
- private Field f91_ACCT_GROUP_ID;
- private Field f92_FILLER;
- private Field f93_ACCTFILE_STATUS;
- private Field f94_ACCTFILE_STAT1;
- private Field f95_ACCTFILE_STAT2;
- private Field f96_TRAN_RECORD;
- private Field f97_TRAN_ID;
- private Field f98_TRAN_TYPE_CD;
- private Field f99_TRAN_CAT_CD;
- private Field f9_FD_XREF_DATA;
+ private final Field f1_FD_TRAN_RECORD = Field.group(s_FD_TRAN_RECORD, 0, 350);
+ private final Field f7_FD_XREFFILE_REC = Field.group(s_FD_XREFFILE_REC, 0, 50);
+ private final Field f8_FD_XREF_CARD_NUM = Field.alphanumeric(s_FD_XREFFILE_REC, 0, 16, false);
+ private final Field f13_FD_ACCTFILE_REC = Field.group(s_FD_ACCTFILE_REC, 0, 300);
+ private final Field f14_FD_ACCT_ID = Field.zoned(s_FD_ACCTFILE_REC, 0, 11, 0, false, false, false);
+ private final Field f19_DALYTRAN_RECORD = Field.group(s_DALYTRAN_RECORD, 0, 350);
+ private final Field f20_DALYTRAN_ID = Field.alphanumeric(s_DALYTRAN_RECORD, 0, 16, false);
+ private final Field f30_DALYTRAN_CARD_NUM = Field.alphanumeric(s_DALYTRAN_RECORD, 262, 16, false);
+ private final Field f34_DALYTRAN_STATUS = Field.group(s_DALYTRAN_STATUS, 0, 2);
+ private final Field f57_CUSTFILE_STATUS = Field.group(s_CUSTFILE_STATUS, 0, 2);
+ private final Field f60_CARD_XREF_RECORD = Field.group(s_CARD_XREF_RECORD, 0, 50);
+ private final Field f61_XREF_CARD_NUM = Field.alphanumeric(s_CARD_XREF_RECORD, 0, 16, false);
+ private final Field f62_XREF_CUST_ID = Field.zoned(s_CARD_XREF_RECORD, 16, 9, 0, false, false, false);
+ private final Field f63_XREF_ACCT_ID = Field.zoned(s_CARD_XREF_RECORD, 25, 11, 0, false, false, false);
+ private final Field f65_XREFFILE_STATUS = Field.group(s_XREFFILE_STATUS, 0, 2);
+ private final Field f76_CARDFILE_STATUS = Field.group(s_CARDFILE_STATUS, 0, 2);
+ private final Field f79_ACCOUNT_RECORD = Field.group(s_ACCOUNT_RECORD, 0, 300);
+ private final Field f80_ACCT_ID = Field.zoned(s_ACCOUNT_RECORD, 0, 11, 0, false, false, false);
+ private final Field f93_ACCTFILE_STATUS = Field.group(s_ACCTFILE_STATUS, 0, 2);
+ private final Field f111_TRANFILE_STATUS = Field.group(s_TRANFILE_STATUS, 0, 2);
+ private final Field f114_IO_STATUS = Field.group(s_IO_STATUS, 0, 2);
+ private final Field f115_IO_STAT1 = Field.alphanumeric(s_IO_STATUS, 0, 1, false);
+ private final Field f116_IO_STAT2 = Field.alphanumeric(s_IO_STATUS, 1, 1, false);
+ private final Field f117_TWO_BYTES_BINARY = Field.binary(s_TWO_BYTES_BINARY, 0, 4, 0, false, false);
+ private final Field f120_TWO_BYTES_RIGHT = Field.alphanumeric(s_TWO_BYTES_BINARY, 1, 1, false);
+ private final Field f121_IO_STATUS_04 = Field.group(s_IO_STATUS_04, 0, 4);
+ private final Field f123_IO_STATUS_0403 = Field.zoned(s_IO_STATUS_04, 1, 3, 0, false, false, false);
+ private final Field f131_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
+ private BigDecimal f38_CUST_ID; // CUST-ID PIC 9(09) DISPLAY
+ private String f39_CUST_FIRST_NAME; // CUST-FIRST-NAME PIC X(25)
+ private String f40_CUST_MIDDLE_NAME; // CUST-MIDDLE-NAME PIC X(25)
+ private String f41_CUST_LAST_NAME; // CUST-LAST-NAME PIC X(25)
+ private String f42_CUST_ADDR_LINE_1; // CUST-ADDR-LINE-1 PIC X(50)
+ private String f43_CUST_ADDR_LINE_2; // CUST-ADDR-LINE-2 PIC X(50)
+ private String f44_CUST_ADDR_LINE_3; // CUST-ADDR-LINE-3 PIC X(50)
+ private String f45_CUST_ADDR_STATE_CD; // CUST-ADDR-STATE-CD PIC X(02)
+ private String f46_CUST_ADDR_COUNTRY_CD; // CUST-ADDR-COUNTRY-CD PIC X(03)
+ private String f47_CUST_ADDR_ZIP; // CUST-ADDR-ZIP PIC X(10)
+ private String f48_CUST_PHONE_NUM_1; // CUST-PHONE-NUM-1 PIC X(15)
+ private String f49_CUST_PHONE_NUM_2; // CUST-PHONE-NUM-2 PIC X(15)
+ private BigDecimal f50_CUST_SSN; // CUST-SSN PIC 9(09) DISPLAY
+ private String f51_CUST_GOVT_ISSUED_ID; // CUST-GOVT-ISSUED-ID PIC X(20)
+ private String f52_CUST_DOB_YYYY_MM_DD; // CUST-DOB-YYYY-MM-DD PIC X(10)
+ private String f53_CUST_EFT_ACCOUNT_ID; // CUST-EFT-ACCOUNT-ID PIC X(10)
+ private String f54_CUST_PRI_CARD_HOLDER_IND; // CUST-PRI-CARD-HOLDER-IND PIC X(01)
+ private BigDecimal f55_CUST_FICO_CREDIT_SCORE; // CUST-FICO-CREDIT-SCORE PIC 9(03) DISPLAY
+ private String f69_CARD_NUM; // CARD-NUM PIC X(16)
+ private BigDecimal f70_CARD_ACCT_ID; // CARD-ACCT-ID PIC 9(11) DISPLAY
+ private BigDecimal f71_CARD_CVV_CD; // CARD-CVV-CD PIC 9(03) DISPLAY
+ private String f72_CARD_EMBOSSED_NAME; // CARD-EMBOSSED-NAME PIC X(50)
+ private String f73_CARD_EXPIRAION_DATE; // CARD-EXPIRAION-DATE PIC X(10)
+ private String f74_CARD_ACTIVE_STATUS; // CARD-ACTIVE-STATUS PIC X(01)
+ private String f97_TRAN_ID; // TRAN-ID PIC X(16)
+ private String f98_TRAN_TYPE_CD; // TRAN-TYPE-CD PIC X(02)
+ private BigDecimal f99_TRAN_CAT_CD; // TRAN-CAT-CD PIC 9(04) DISPLAY
+ private String f100_TRAN_SOURCE; // TRAN-SOURCE PIC X(10)
+ private String f101_TRAN_DESC; // TRAN-DESC PIC X(100)
+ private BigDecimal f102_TRAN_AMT; // TRAN-AMT PIC S9(09)V99 DISPLAY
+ private BigDecimal f103_TRAN_MERCHANT_ID; // TRAN-MERCHANT-ID PIC 9(09) DISPLAY
+ private String f104_TRAN_MERCHANT_NAME; // TRAN-MERCHANT-NAME PIC X(50)
+ private String f105_TRAN_MERCHANT_CITY; // TRAN-MERCHANT-CITY PIC X(50)
+ private String f106_TRAN_MERCHANT_ZIP; // TRAN-MERCHANT-ZIP PIC X(10)
+ private String f107_TRAN_CARD_NUM; // TRAN-CARD-NUM PIC X(16)
+ private String f108_TRAN_ORIG_TS; // TRAN-ORIG-TS PIC X(26)
+ private String f109_TRAN_PROC_TS; // TRAN-PROC-TS PIC X(26)
+ private long f124_APPL_RESULT; // APPL-RESULT PIC S9(9) BINARY
+ private String f125_END_OF_DAILY_TRANS_FILE; // END-OF-DAILY-TRANS-FILE PIC X(01)
+ private long f126_ABCODE; // ABCODE PIC S9(9) BINARY
+ private long f127_TIMING; // TIMING PIC S9(9) BINARY
+ private BigDecimal f129_WS_XREF_READ_STATUS; // WS-XREF-READ-STATUS PIC 9(04) DISPLAY
+ private BigDecimal f130_WS_ACCT_READ_STATUS; // WS-ACCT-READ-STATUS PIC 9(04) DISPLAY
private static Integer id_CustomerRecord(byte[] rec) {
Storage s = Storage.of(rec);
@@ -315,146 +240,10 @@ public Cbtrn01cService(CustomerRecordRepository customerRecordRepository, CardXr
this.datasets = datasets;
this.files = files;
this.clock = clock;
- fields0();
}
- private void fields0() {
- f1_FD_TRAN_RECORD = Field.group(s_FD_TRAN_RECORD, 0, 350);
- f2_FD_TRAN_ID = Field.alphanumeric(s_FD_TRAN_RECORD, 0, 16, false);
- f3_FD_CUST_DATA = Field.alphanumeric(s_FD_TRAN_RECORD, 16, 334, false);
- f4_FD_CUSTFILE_REC = Field.group(s_FD_CUSTFILE_REC, 0, 500);
- f5_FD_CUST_ID = Field.zoned(s_FD_CUSTFILE_REC, 0, 9, 0, false, false, false);
- f6_FD_CUST_DATA = Field.alphanumeric(s_FD_CUSTFILE_REC, 9, 491, false);
- f7_FD_XREFFILE_REC = Field.group(s_FD_XREFFILE_REC, 0, 50);
- f8_FD_XREF_CARD_NUM = Field.alphanumeric(s_FD_XREFFILE_REC, 0, 16, false);
- f9_FD_XREF_DATA = Field.alphanumeric(s_FD_XREFFILE_REC, 16, 34, false);
- f10_FD_CARDFILE_REC = Field.group(s_FD_CARDFILE_REC, 0, 150);
- f11_FD_CARD_NUM = Field.alphanumeric(s_FD_CARDFILE_REC, 0, 16, false);
- f12_FD_CARD_DATA = Field.alphanumeric(s_FD_CARDFILE_REC, 16, 134, false);
- f13_FD_ACCTFILE_REC = Field.group(s_FD_ACCTFILE_REC, 0, 300);
- f14_FD_ACCT_ID = Field.zoned(s_FD_ACCTFILE_REC, 0, 11, 0, false, false, false);
- f15_FD_ACCT_DATA = Field.alphanumeric(s_FD_ACCTFILE_REC, 11, 289, false);
- f16_FD_TRANFILE_REC = Field.group(s_FD_TRANFILE_REC, 0, 350);
- f17_FD_TRANS_ID = Field.alphanumeric(s_FD_TRANFILE_REC, 0, 16, false);
- f18_FD_ACCT_DATA = Field.alphanumeric(s_FD_TRANFILE_REC, 16, 334, false);
- f19_DALYTRAN_RECORD = Field.group(s_DALYTRAN_RECORD, 0, 350);
- f20_DALYTRAN_ID = Field.alphanumeric(s_DALYTRAN_RECORD, 0, 16, false);
- f21_DALYTRAN_TYPE_CD = Field.alphanumeric(s_DALYTRAN_RECORD, 16, 2, false);
- f22_DALYTRAN_CAT_CD = Field.zoned(s_DALYTRAN_RECORD, 18, 4, 0, false, false, false);
- f23_DALYTRAN_SOURCE = Field.alphanumeric(s_DALYTRAN_RECORD, 22, 10, false);
- f24_DALYTRAN_DESC = Field.alphanumeric(s_DALYTRAN_RECORD, 32, 100, false);
- f25_DALYTRAN_AMT = Field.zoned(s_DALYTRAN_RECORD, 132, 11, 2, true, false, false);
- f26_DALYTRAN_MERCHANT_ID = Field.zoned(s_DALYTRAN_RECORD, 143, 9, 0, false, false, false);
- f27_DALYTRAN_MERCHANT_NAME = Field.alphanumeric(s_DALYTRAN_RECORD, 152, 50, false);
- f28_DALYTRAN_MERCHANT_CITY = Field.alphanumeric(s_DALYTRAN_RECORD, 202, 50, false);
- f29_DALYTRAN_MERCHANT_ZIP = Field.alphanumeric(s_DALYTRAN_RECORD, 252, 10, false);
- f30_DALYTRAN_CARD_NUM = Field.alphanumeric(s_DALYTRAN_RECORD, 262, 16, false);
- f31_DALYTRAN_ORIG_TS = Field.alphanumeric(s_DALYTRAN_RECORD, 278, 26, false);
- f32_DALYTRAN_PROC_TS = Field.alphanumeric(s_DALYTRAN_RECORD, 304, 26, false);
- f33_FILLER = Field.alphanumeric(s_DALYTRAN_RECORD, 330, 20, false);
- f34_DALYTRAN_STATUS = Field.group(s_DALYTRAN_STATUS, 0, 2);
- f35_DALYTRAN_STAT1 = Field.alphanumeric(s_DALYTRAN_STATUS, 0, 1, false);
- f36_DALYTRAN_STAT2 = Field.alphanumeric(s_DALYTRAN_STATUS, 1, 1, false);
- f37_CUSTOMER_RECORD = Field.group(s_CUSTOMER_RECORD, 0, 500);
- f38_CUST_ID = Field.zoned(s_CUSTOMER_RECORD, 0, 9, 0, false, false, false);
- f39_CUST_FIRST_NAME = Field.alphanumeric(s_CUSTOMER_RECORD, 9, 25, false);
- f40_CUST_MIDDLE_NAME = Field.alphanumeric(s_CUSTOMER_RECORD, 34, 25, false);
- f41_CUST_LAST_NAME = Field.alphanumeric(s_CUSTOMER_RECORD, 59, 25, false);
- f42_CUST_ADDR_LINE_1 = Field.alphanumeric(s_CUSTOMER_RECORD, 84, 50, false);
- f43_CUST_ADDR_LINE_2 = Field.alphanumeric(s_CUSTOMER_RECORD, 134, 50, false);
- f44_CUST_ADDR_LINE_3 = Field.alphanumeric(s_CUSTOMER_RECORD, 184, 50, false);
- f45_CUST_ADDR_STATE_CD = Field.alphanumeric(s_CUSTOMER_RECORD, 234, 2, false);
- f46_CUST_ADDR_COUNTRY_CD = Field.alphanumeric(s_CUSTOMER_RECORD, 236, 3, false);
- f47_CUST_ADDR_ZIP = Field.alphanumeric(s_CUSTOMER_RECORD, 239, 10, false);
- f48_CUST_PHONE_NUM_1 = Field.alphanumeric(s_CUSTOMER_RECORD, 249, 15, false);
- f49_CUST_PHONE_NUM_2 = Field.alphanumeric(s_CUSTOMER_RECORD, 264, 15, false);
- f50_CUST_SSN = Field.zoned(s_CUSTOMER_RECORD, 279, 9, 0, false, false, false);
- f51_CUST_GOVT_ISSUED_ID = Field.alphanumeric(s_CUSTOMER_RECORD, 288, 20, false);
- f52_CUST_DOB_YYYY_MM_DD = Field.alphanumeric(s_CUSTOMER_RECORD, 308, 10, false);
- f53_CUST_EFT_ACCOUNT_ID = Field.alphanumeric(s_CUSTOMER_RECORD, 318, 10, false);
- f54_CUST_PRI_CARD_HOLDER_IND = Field.alphanumeric(s_CUSTOMER_RECORD, 328, 1, false);
- f55_CUST_FICO_CREDIT_SCORE = Field.zoned(s_CUSTOMER_RECORD, 329, 3, 0, false, false, false);
- f56_FILLER = Field.alphanumeric(s_CUSTOMER_RECORD, 332, 168, false);
- f57_CUSTFILE_STATUS = Field.group(s_CUSTFILE_STATUS, 0, 2);
- f58_CUSTFILE_STAT1 = Field.alphanumeric(s_CUSTFILE_STATUS, 0, 1, false);
- f59_CUSTFILE_STAT2 = Field.alphanumeric(s_CUSTFILE_STATUS, 1, 1, false);
- f60_CARD_XREF_RECORD = Field.group(s_CARD_XREF_RECORD, 0, 50);
- f61_XREF_CARD_NUM = Field.alphanumeric(s_CARD_XREF_RECORD, 0, 16, false);
- f62_XREF_CUST_ID = Field.zoned(s_CARD_XREF_RECORD, 16, 9, 0, false, false, false);
- f63_XREF_ACCT_ID = Field.zoned(s_CARD_XREF_RECORD, 25, 11, 0, false, false, false);
- f64_FILLER = Field.alphanumeric(s_CARD_XREF_RECORD, 36, 14, false);
- f65_XREFFILE_STATUS = Field.group(s_XREFFILE_STATUS, 0, 2);
- f66_XREFFILE_STAT1 = Field.alphanumeric(s_XREFFILE_STATUS, 0, 1, false);
- f67_XREFFILE_STAT2 = Field.alphanumeric(s_XREFFILE_STATUS, 1, 1, false);
- f68_CARD_RECORD = Field.group(s_CARD_RECORD, 0, 150);
- f69_CARD_NUM = Field.alphanumeric(s_CARD_RECORD, 0, 16, false);
- f70_CARD_ACCT_ID = Field.zoned(s_CARD_RECORD, 16, 11, 0, false, false, false);
- f71_CARD_CVV_CD = Field.zoned(s_CARD_RECORD, 27, 3, 0, false, false, false);
- f72_CARD_EMBOSSED_NAME = Field.alphanumeric(s_CARD_RECORD, 30, 50, false);
- f73_CARD_EXPIRAION_DATE = Field.alphanumeric(s_CARD_RECORD, 80, 10, false);
- f74_CARD_ACTIVE_STATUS = Field.alphanumeric(s_CARD_RECORD, 90, 1, false);
- f75_FILLER = Field.alphanumeric(s_CARD_RECORD, 91, 59, false);
- f76_CARDFILE_STATUS = Field.group(s_CARDFILE_STATUS, 0, 2);
- f77_CARDFILE_STAT1 = Field.alphanumeric(s_CARDFILE_STATUS, 0, 1, false);
- f78_CARDFILE_STAT2 = Field.alphanumeric(s_CARDFILE_STATUS, 1, 1, false);
- f79_ACCOUNT_RECORD = Field.group(s_ACCOUNT_RECORD, 0, 300);
- f80_ACCT_ID = Field.zoned(s_ACCOUNT_RECORD, 0, 11, 0, false, false, false);
- f81_ACCT_ACTIVE_STATUS = Field.alphanumeric(s_ACCOUNT_RECORD, 11, 1, false);
- f82_ACCT_CURR_BAL = Field.zoned(s_ACCOUNT_RECORD, 12, 12, 2, true, false, false);
- f83_ACCT_CREDIT_LIMIT = Field.zoned(s_ACCOUNT_RECORD, 24, 12, 2, true, false, false);
- f84_ACCT_CASH_CREDIT_LIMIT = Field.zoned(s_ACCOUNT_RECORD, 36, 12, 2, true, false, false);
- f85_ACCT_OPEN_DATE = Field.alphanumeric(s_ACCOUNT_RECORD, 48, 10, false);
- f86_ACCT_EXPIRAION_DATE = Field.alphanumeric(s_ACCOUNT_RECORD, 58, 10, false);
- f87_ACCT_REISSUE_DATE = Field.alphanumeric(s_ACCOUNT_RECORD, 68, 10, false);
- f88_ACCT_CURR_CYC_CREDIT = Field.zoned(s_ACCOUNT_RECORD, 78, 12, 2, true, false, false);
- f89_ACCT_CURR_CYC_DEBIT = Field.zoned(s_ACCOUNT_RECORD, 90, 12, 2, true, false, false);
- f90_ACCT_ADDR_ZIP = Field.alphanumeric(s_ACCOUNT_RECORD, 102, 10, false);
- f91_ACCT_GROUP_ID = Field.alphanumeric(s_ACCOUNT_RECORD, 112, 10, false);
- f92_FILLER = Field.alphanumeric(s_ACCOUNT_RECORD, 122, 178, false);
- f93_ACCTFILE_STATUS = Field.group(s_ACCTFILE_STATUS, 0, 2);
- f94_ACCTFILE_STAT1 = Field.alphanumeric(s_ACCTFILE_STATUS, 0, 1, false);
- f95_ACCTFILE_STAT2 = Field.alphanumeric(s_ACCTFILE_STATUS, 1, 1, false);
- f96_TRAN_RECORD = Field.group(s_TRAN_RECORD, 0, 350);
- f97_TRAN_ID = Field.alphanumeric(s_TRAN_RECORD, 0, 16, false);
- f98_TRAN_TYPE_CD = Field.alphanumeric(s_TRAN_RECORD, 16, 2, false);
- f99_TRAN_CAT_CD = Field.zoned(s_TRAN_RECORD, 18, 4, 0, false, false, false);
- f100_TRAN_SOURCE = Field.alphanumeric(s_TRAN_RECORD, 22, 10, false);
- f101_TRAN_DESC = Field.alphanumeric(s_TRAN_RECORD, 32, 100, false);
- f102_TRAN_AMT = Field.zoned(s_TRAN_RECORD, 132, 11, 2, true, false, false);
- f103_TRAN_MERCHANT_ID = Field.zoned(s_TRAN_RECORD, 143, 9, 0, false, false, false);
- f104_TRAN_MERCHANT_NAME = Field.alphanumeric(s_TRAN_RECORD, 152, 50, false);
- f105_TRAN_MERCHANT_CITY = Field.alphanumeric(s_TRAN_RECORD, 202, 50, false);
- f106_TRAN_MERCHANT_ZIP = Field.alphanumeric(s_TRAN_RECORD, 252, 10, false);
- f107_TRAN_CARD_NUM = Field.alphanumeric(s_TRAN_RECORD, 262, 16, false);
- f108_TRAN_ORIG_TS = Field.alphanumeric(s_TRAN_RECORD, 278, 26, false);
- f109_TRAN_PROC_TS = Field.alphanumeric(s_TRAN_RECORD, 304, 26, false);
- f110_FILLER = Field.alphanumeric(s_TRAN_RECORD, 330, 20, false);
- f111_TRANFILE_STATUS = Field.group(s_TRANFILE_STATUS, 0, 2);
- f112_TRANFILE_STAT1 = Field.alphanumeric(s_TRANFILE_STATUS, 0, 1, false);
- f113_TRANFILE_STAT2 = Field.alphanumeric(s_TRANFILE_STATUS, 1, 1, false);
- f114_IO_STATUS = Field.group(s_IO_STATUS, 0, 2);
- f115_IO_STAT1 = Field.alphanumeric(s_IO_STATUS, 0, 1, false);
- f116_IO_STAT2 = Field.alphanumeric(s_IO_STATUS, 1, 1, false);
- f117_TWO_BYTES_BINARY = Field.binary(s_TWO_BYTES_BINARY, 0, 4, 0, false, false);
- f118_TWO_BYTES_ALPHA = Field.group(s_TWO_BYTES_BINARY, 0, 2);
- f119_TWO_BYTES_LEFT = Field.alphanumeric(s_TWO_BYTES_BINARY, 0, 1, false);
- f120_TWO_BYTES_RIGHT = Field.alphanumeric(s_TWO_BYTES_BINARY, 1, 1, false);
- f121_IO_STATUS_04 = Field.group(s_IO_STATUS_04, 0, 4);
- f122_IO_STATUS_0401 = Field.zoned(s_IO_STATUS_04, 0, 1, 0, false, false, false);
- f123_IO_STATUS_0403 = Field.zoned(s_IO_STATUS_04, 1, 3, 0, false, false, false);
- f124_APPL_RESULT = Field.binary(s_APPL_RESULT, 0, 9, 0, true, false);
- f125_END_OF_DAILY_TRANS_FILE = Field.alphanumeric(s_END_OF_DAILY_TRANS_FILE, 0, 1, false);
- f126_ABCODE = Field.binary(s_ABCODE, 0, 9, 0, true, false);
- f127_TIMING = Field.binary(s_TIMING, 0, 9, 0, true, false);
- f128_WS_MISC_VARIABLES = Field.group(s_WS_MISC_VARIABLES, 0, 8);
- f129_WS_XREF_READ_STATUS = Field.zoned(s_WS_MISC_VARIABLES, 0, 4, 0, false, false, false);
- f130_WS_ACCT_READ_STATUS = Field.zoned(s_WS_MISC_VARIABLES, 4, 4, 0, false, false, false);
- f131_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
- }
-
- /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
- * initial storage; RETURN-CODE. */
- public int runProgram() {
+ /** WORKING-STORAGE (and every storage) as its VALUE clauses set it: each entry point starts from here. */
+ private void initialState() {
System.arraycopy(IMAGE_s_FD_TRAN_RECORD, 0, s_FD_TRAN_RECORD.bytes, 0, IMAGE_s_FD_TRAN_RECORD.length);
System.arraycopy(IMAGE_s_FD_CUSTFILE_REC, 0, s_FD_CUSTFILE_REC.bytes, 0, IMAGE_s_FD_CUSTFILE_REC.length);
System.arraycopy(IMAGE_s_FD_XREFFILE_REC, 0, s_FD_XREFFILE_REC.bytes, 0, IMAGE_s_FD_XREFFILE_REC.length);
@@ -476,12 +265,57 @@ public int runProgram() {
System.arraycopy(IMAGE_s_IO_STATUS, 0, s_IO_STATUS.bytes, 0, IMAGE_s_IO_STATUS.length);
System.arraycopy(IMAGE_s_TWO_BYTES_BINARY, 0, s_TWO_BYTES_BINARY.bytes, 0, IMAGE_s_TWO_BYTES_BINARY.length);
System.arraycopy(IMAGE_s_IO_STATUS_04, 0, s_IO_STATUS_04.bytes, 0, IMAGE_s_IO_STATUS_04.length);
- System.arraycopy(IMAGE_s_APPL_RESULT, 0, s_APPL_RESULT.bytes, 0, IMAGE_s_APPL_RESULT.length);
- System.arraycopy(IMAGE_s_END_OF_DAILY_TRANS_FILE, 0, s_END_OF_DAILY_TRANS_FILE.bytes, 0, IMAGE_s_END_OF_DAILY_TRANS_FILE.length);
- System.arraycopy(IMAGE_s_ABCODE, 0, s_ABCODE.bytes, 0, IMAGE_s_ABCODE.length);
- System.arraycopy(IMAGE_s_TIMING, 0, s_TIMING.bytes, 0, IMAGE_s_TIMING.length);
System.arraycopy(IMAGE_s_WS_MISC_VARIABLES, 0, s_WS_MISC_VARIABLES.bytes, 0, IMAGE_s_WS_MISC_VARIABLES.length);
System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ f38_CUST_ID = new BigDecimal("0");
+ f39_CUST_FIRST_NAME = " ";
+ f40_CUST_MIDDLE_NAME = " ";
+ f41_CUST_LAST_NAME = " ";
+ f42_CUST_ADDR_LINE_1 = " ";
+ f43_CUST_ADDR_LINE_2 = " ";
+ f44_CUST_ADDR_LINE_3 = " ";
+ f45_CUST_ADDR_STATE_CD = " ";
+ f46_CUST_ADDR_COUNTRY_CD = " ";
+ f47_CUST_ADDR_ZIP = " ";
+ f48_CUST_PHONE_NUM_1 = " ";
+ f49_CUST_PHONE_NUM_2 = " ";
+ f50_CUST_SSN = new BigDecimal("0");
+ f51_CUST_GOVT_ISSUED_ID = " ";
+ f52_CUST_DOB_YYYY_MM_DD = " ";
+ f53_CUST_EFT_ACCOUNT_ID = " ";
+ f54_CUST_PRI_CARD_HOLDER_IND = " ";
+ f55_CUST_FICO_CREDIT_SCORE = new BigDecimal("0");
+ f69_CARD_NUM = " ";
+ f70_CARD_ACCT_ID = new BigDecimal("0");
+ f71_CARD_CVV_CD = new BigDecimal("0");
+ f72_CARD_EMBOSSED_NAME = " ";
+ f73_CARD_EXPIRAION_DATE = " ";
+ f74_CARD_ACTIVE_STATUS = " ";
+ f97_TRAN_ID = " ";
+ f98_TRAN_TYPE_CD = " ";
+ f99_TRAN_CAT_CD = new BigDecimal("0");
+ f100_TRAN_SOURCE = " ";
+ f101_TRAN_DESC = " ";
+ f102_TRAN_AMT = new BigDecimal("0");
+ f103_TRAN_MERCHANT_ID = new BigDecimal("0");
+ f104_TRAN_MERCHANT_NAME = " ";
+ f105_TRAN_MERCHANT_CITY = " ";
+ f106_TRAN_MERCHANT_ZIP = " ";
+ f107_TRAN_CARD_NUM = " ";
+ f108_TRAN_ORIG_TS = " ";
+ f109_TRAN_PROC_TS = " ";
+ f124_APPL_RESULT = 0L;
+ f125_END_OF_DAILY_TRANS_FILE = "N";
+ f126_ABCODE = 0L;
+ f127_TIMING = 0L;
+ f129_WS_XREF_READ_STATUS = new BigDecimal("0");
+ f130_WS_ACCT_READ_STATUS = new BigDecimal("0");
+ }
+
+ /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
+ * initial storage; RETURN-CODE. */
+ public int runProgram() {
+ initialState();
performDepth = 0;
try {
perform(0, 17);
@@ -491,10 +325,6 @@ public int runProgram() {
return Cobol.num(f131_GG_RETURN_CODE, CS).intValue();
}
- public void executeCbtrn01c() {
- runBatch(List.of(), null);
- }
-
/** GOBACK / STOP RUN. */
private static final class Goback extends RuntimeException {
@@ -512,34 +342,9 @@ private static Dd dd(List dds, String name) {
/** The batch entry. */
public int runBatch(List dds, String parm) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
- System.arraycopy(IMAGE_s_FD_TRAN_RECORD, 0, s_FD_TRAN_RECORD.bytes, 0, IMAGE_s_FD_TRAN_RECORD.length);
- System.arraycopy(IMAGE_s_FD_CUSTFILE_REC, 0, s_FD_CUSTFILE_REC.bytes, 0, IMAGE_s_FD_CUSTFILE_REC.length);
- System.arraycopy(IMAGE_s_FD_XREFFILE_REC, 0, s_FD_XREFFILE_REC.bytes, 0, IMAGE_s_FD_XREFFILE_REC.length);
- System.arraycopy(IMAGE_s_FD_CARDFILE_REC, 0, s_FD_CARDFILE_REC.bytes, 0, IMAGE_s_FD_CARDFILE_REC.length);
- System.arraycopy(IMAGE_s_FD_ACCTFILE_REC, 0, s_FD_ACCTFILE_REC.bytes, 0, IMAGE_s_FD_ACCTFILE_REC.length);
- System.arraycopy(IMAGE_s_FD_TRANFILE_REC, 0, s_FD_TRANFILE_REC.bytes, 0, IMAGE_s_FD_TRANFILE_REC.length);
- System.arraycopy(IMAGE_s_DALYTRAN_RECORD, 0, s_DALYTRAN_RECORD.bytes, 0, IMAGE_s_DALYTRAN_RECORD.length);
- System.arraycopy(IMAGE_s_DALYTRAN_STATUS, 0, s_DALYTRAN_STATUS.bytes, 0, IMAGE_s_DALYTRAN_STATUS.length);
- System.arraycopy(IMAGE_s_CUSTOMER_RECORD, 0, s_CUSTOMER_RECORD.bytes, 0, IMAGE_s_CUSTOMER_RECORD.length);
- System.arraycopy(IMAGE_s_CUSTFILE_STATUS, 0, s_CUSTFILE_STATUS.bytes, 0, IMAGE_s_CUSTFILE_STATUS.length);
- System.arraycopy(IMAGE_s_CARD_XREF_RECORD, 0, s_CARD_XREF_RECORD.bytes, 0, IMAGE_s_CARD_XREF_RECORD.length);
- System.arraycopy(IMAGE_s_XREFFILE_STATUS, 0, s_XREFFILE_STATUS.bytes, 0, IMAGE_s_XREFFILE_STATUS.length);
- System.arraycopy(IMAGE_s_CARD_RECORD, 0, s_CARD_RECORD.bytes, 0, IMAGE_s_CARD_RECORD.length);
- System.arraycopy(IMAGE_s_CARDFILE_STATUS, 0, s_CARDFILE_STATUS.bytes, 0, IMAGE_s_CARDFILE_STATUS.length);
- System.arraycopy(IMAGE_s_ACCOUNT_RECORD, 0, s_ACCOUNT_RECORD.bytes, 0, IMAGE_s_ACCOUNT_RECORD.length);
- System.arraycopy(IMAGE_s_ACCTFILE_STATUS, 0, s_ACCTFILE_STATUS.bytes, 0, IMAGE_s_ACCTFILE_STATUS.length);
- System.arraycopy(IMAGE_s_TRAN_RECORD, 0, s_TRAN_RECORD.bytes, 0, IMAGE_s_TRAN_RECORD.length);
- System.arraycopy(IMAGE_s_TRANFILE_STATUS, 0, s_TRANFILE_STATUS.bytes, 0, IMAGE_s_TRANFILE_STATUS.length);
- System.arraycopy(IMAGE_s_IO_STATUS, 0, s_IO_STATUS.bytes, 0, IMAGE_s_IO_STATUS.length);
- System.arraycopy(IMAGE_s_TWO_BYTES_BINARY, 0, s_TWO_BYTES_BINARY.bytes, 0, IMAGE_s_TWO_BYTES_BINARY.length);
- System.arraycopy(IMAGE_s_IO_STATUS_04, 0, s_IO_STATUS_04.bytes, 0, IMAGE_s_IO_STATUS_04.length);
- System.arraycopy(IMAGE_s_APPL_RESULT, 0, s_APPL_RESULT.bytes, 0, IMAGE_s_APPL_RESULT.length);
- System.arraycopy(IMAGE_s_END_OF_DAILY_TRANS_FILE, 0, s_END_OF_DAILY_TRANS_FILE.bytes, 0, IMAGE_s_END_OF_DAILY_TRANS_FILE.length);
- System.arraycopy(IMAGE_s_ABCODE, 0, s_ABCODE.bytes, 0, IMAGE_s_ABCODE.length);
- System.arraycopy(IMAGE_s_TIMING, 0, s_TIMING.bytes, 0, IMAGE_s_TIMING.length);
- System.arraycopy(IMAGE_s_WS_MISC_VARIABLES, 0, s_WS_MISC_VARIABLES.bytes, 0, IMAGE_s_WS_MISC_VARIABLES.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
DALYTRAN_FILE = new DetFiles.Sequential(files, "DALYTRAN", () -> datasets.path(dd(dds, "DALYTRAN")), s_FD_TRAN_RECORD, 0, 350);
CUSTOMER_FILE = new DetFiles.Indexed(files, "CUSTFILE", s_FD_CUSTFILE_REC, 0, 500, 0, 9, customerRecordRepository::findAll, e -> e.toRecord(CS), b -> CustomerRecord.fromRecord(b, CS), customerRecordRepository::save, CS).withFindById(rec -> customerRecordRepository.findById(id_CustomerRecord(rec)));
XREF_FILE = new DetFiles.Indexed(files, "XREFFILE", s_FD_XREFFILE_REC, 0, 50, 0, 16, cardXrefRecordRepository::findAll, e -> e.toRecord(CS), b -> CardXrefRecord.fromRecord(b, CS), cardXrefRecordRepository::save, CS).withFindById(rec -> cardXrefRecordRepository.findById(id_CardXrefRecord(rec)));
@@ -554,6 +359,7 @@ public int runBatch(List dds, String parm) {
return Cobol.num(f131_GG_RETURN_CODE, CS).intValue();
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
@@ -652,32 +458,32 @@ private int p0() {
// PERFORM 0500-TRANFILE-OPEN
perform(9, 9);
// PERFORM UNTIL END-OF-DAILY-TRANS-FILE = 'Y'
- while (!(Cobol.compare(f125_END_OF_DAILY_TRANS_FILE, "Y", CS) == 0)) {
+ while (!(f125_END_OF_DAILY_TRANS_FILE.equals("Y"))) {
// IF END-OF-DAILY-TRANS-FILE = 'N'
- if (Cobol.compare(f125_END_OF_DAILY_TRANS_FILE, "N", CS) == 0) {
+ if (f125_END_OF_DAILY_TRANS_FILE.equals("N")) {
// PERFORM 1000-DALYTRAN-GET-NEXT
perform(1, 1);
// IF END-OF-DAILY-TRANS-FILE = 'N'
- if (Cobol.compare(f125_END_OF_DAILY_TRANS_FILE, "N", CS) == 0) {
+ if (f125_END_OF_DAILY_TRANS_FILE.equals("N")) {
// DISPLAY DALYTRAN-RECORD
Sysout.display(Cobol.displayText(f19_DALYTRAN_RECORD, CS));
}
// MOVE 0 TO WS-XREF-READ-STATUS
- Cobol.move(D0, f129_WS_XREF_READ_STATUS, CS);
+ f129_WS_XREF_READ_STATUS = Cobol.zoned(D0, 4, 0, false, false, CS);
// MOVE DALYTRAN-CARD-NUM TO XREF-CARD-NUM
Cobol.move(f30_DALYTRAN_CARD_NUM, f61_XREF_CARD_NUM, CS);
// PERFORM 2000-LOOKUP-XREF
perform(2, 2);
// IF WS-XREF-READ-STATUS = 0
- if (Cobol.num(f129_WS_XREF_READ_STATUS, CS).compareTo(D0) == 0) {
+ if (f129_WS_XREF_READ_STATUS.compareTo(D0) == 0) {
// MOVE 0 TO WS-ACCT-READ-STATUS
- Cobol.move(D0, f130_WS_ACCT_READ_STATUS, CS);
+ f130_WS_ACCT_READ_STATUS = Cobol.zoned(D0, 4, 0, false, false, CS);
// MOVE XREF-ACCT-ID TO ACCT-ID
Cobol.move(f63_XREF_ACCT_ID, f80_ACCT_ID, CS);
// PERFORM 3000-READ-ACCOUNT
perform(3, 3);
// IF WS-ACCT-READ-STATUS NOT = 0
- if (!(Cobol.num(f130_WS_ACCT_READ_STATUS, CS).compareTo(D0) == 0)) {
+ if (!(f130_WS_ACCT_READ_STATUS.compareTo(D0) == 0)) {
// DISPLAY 'ACCOUNT ' ACCT-ID ' NOT FOUND'
Sysout.display("ACCOUNT ", Cobol.displayText(f80_ACCT_ID, CS), " NOT FOUND");
}
@@ -717,25 +523,25 @@ private int p1() {
// IF DALYTRAN-STATUS = '00'
if (Cobol.compare(f34_DALYTRAN_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// ELSE IF DALYTRAN-STATUS = '10'
if (Cobol.compare(f34_DALYTRAN_STATUS, "10", CS) == 0) {
// MOVE 16 TO APPL-RESULT
- Cobol.move(D16, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 16L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// ELSE IF APPL-EOF
- if (Cobol.compare(f124_APPL_RESULT, D16, CS) == 0) {
+ if (isApplEof()) {
// MOVE 'Y' TO END-OF-DAILY-TRANS-FILE
- Cobol.move("Y", f125_END_OF_DAILY_TRANS_FILE, CS);
+ f125_END_OF_DAILY_TRANS_FILE = "Y";
} else {
// DISPLAY 'ERROR READING DAILY TRANSACTION FILE'
Sysout.display("ERROR READING DAILY TRANSACTION FILE");
@@ -765,7 +571,7 @@ private int p2() {
// DISPLAY 'INVALID CARD NUMBER FOR XREF'
Sysout.display("INVALID CARD NUMBER FOR XREF");
// MOVE 4 TO WS-XREF-READ-STATUS
- Cobol.move(D4, f129_WS_XREF_READ_STATUS, CS);
+ f129_WS_XREF_READ_STATUS = Cobol.zoned(D4, 4, 0, false, false, CS);
}
if (st2.startsWith("0")) {
// DISPLAY 'SUCCESSFUL READ OF XREF'
@@ -794,7 +600,7 @@ private int p3() {
// DISPLAY 'INVALID ACCOUNT NUMBER FOUND'
Sysout.display("INVALID ACCOUNT NUMBER FOUND");
// MOVE 4 TO WS-ACCT-READ-STATUS
- Cobol.move(D4, f130_WS_ACCT_READ_STATUS, CS);
+ f130_WS_ACCT_READ_STATUS = Cobol.zoned(D4, 4, 0, false, false, CS);
}
if (st3.startsWith("0")) {
// DISPLAY 'SUCCESSFUL READ OF ACCOUNT FILE'
@@ -806,20 +612,20 @@ private int p3() {
/** 0000-DALYTRAN-OPEN. */
private int p4() {
// MOVE 8 TO APPL-RESULT
- Cobol.move(D8, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 8L;
// OPEN INPUT DALYTRAN-FILE
String st4 = DALYTRAN_FILE.open("INPUT");
Cobol.move(st4, f34_DALYTRAN_STATUS, CS);
// IF DALYTRAN-STATUS = '00'
if (Cobol.compare(f34_DALYTRAN_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR OPENING DAILY TRANSACTION FILE'
@@ -838,20 +644,20 @@ private int p4() {
/** 0100-CUSTFILE-OPEN. */
private int p5() {
// MOVE 8 TO APPL-RESULT
- Cobol.move(D8, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 8L;
// OPEN INPUT CUSTOMER-FILE
String st5 = CUSTOMER_FILE.open("INPUT");
Cobol.move(st5, f57_CUSTFILE_STATUS, CS);
// IF CUSTFILE-STATUS = '00'
if (Cobol.compare(f57_CUSTFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR OPENING CUSTOMER FILE'
@@ -870,20 +676,20 @@ private int p5() {
/** 0200-XREFFILE-OPEN. */
private int p6() {
// MOVE 8 TO APPL-RESULT
- Cobol.move(D8, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 8L;
// OPEN INPUT XREF-FILE
String st6 = XREF_FILE.open("INPUT");
Cobol.move(st6, f65_XREFFILE_STATUS, CS);
// IF XREFFILE-STATUS = '00'
if (Cobol.compare(f65_XREFFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR OPENING CROSS REF FILE'
@@ -902,20 +708,20 @@ private int p6() {
/** 0300-CARDFILE-OPEN. */
private int p7() {
// MOVE 8 TO APPL-RESULT
- Cobol.move(D8, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 8L;
// OPEN INPUT CARD-FILE
String st7 = CARD_FILE.open("INPUT");
Cobol.move(st7, f76_CARDFILE_STATUS, CS);
// IF CARDFILE-STATUS = '00'
if (Cobol.compare(f76_CARDFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR OPENING CARD FILE'
@@ -934,20 +740,20 @@ private int p7() {
/** 0400-ACCTFILE-OPEN. */
private int p8() {
// MOVE 8 TO APPL-RESULT
- Cobol.move(D8, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 8L;
// OPEN INPUT ACCOUNT-FILE
String st8 = ACCOUNT_FILE.open("INPUT");
Cobol.move(st8, f93_ACCTFILE_STATUS, CS);
// IF ACCTFILE-STATUS = '00'
if (Cobol.compare(f93_ACCTFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR OPENING ACCOUNT FILE'
@@ -966,20 +772,20 @@ private int p8() {
/** 0500-TRANFILE-OPEN. */
private int p9() {
// MOVE 8 TO APPL-RESULT
- Cobol.move(D8, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 8L;
// OPEN INPUT TRANSACT-FILE
String st9 = TRANSACT_FILE.open("INPUT");
Cobol.move(st9, f111_TRANFILE_STATUS, CS);
// IF TRANFILE-STATUS = '00'
if (Cobol.compare(f111_TRANFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR OPENING TRANSACTION FILE'
@@ -999,20 +805,20 @@ private int p9() {
private int p10() {
// ADD 8 TO ZERO GIVING APPL-RESULT
BigDecimal v10 = D8.add(BigDecimal.ZERO);
- Cobol.store(f124_APPL_RESULT, v10, false, CS);
+ f124_APPL_RESULT = Cobol.binary(v10, 9, true, false, CS);
// CLOSE DALYTRAN-FILE
String st11 = DALYTRAN_FILE.close();
Cobol.move(st11, f34_DALYTRAN_STATUS, CS);
// IF DALYTRAN-STATUS = '00'
if (Cobol.compare(f34_DALYTRAN_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR CLOSING CUSTOMER FILE'
@@ -1032,20 +838,20 @@ private int p10() {
private int p11() {
// ADD 8 TO ZERO GIVING APPL-RESULT
BigDecimal v12 = D8.add(BigDecimal.ZERO);
- Cobol.store(f124_APPL_RESULT, v12, false, CS);
+ f124_APPL_RESULT = Cobol.binary(v12, 9, true, false, CS);
// CLOSE CUSTOMER-FILE
String st13 = CUSTOMER_FILE.close();
Cobol.move(st13, f57_CUSTFILE_STATUS, CS);
// IF CUSTFILE-STATUS = '00'
if (Cobol.compare(f57_CUSTFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR CLOSING CUSTOMER FILE'
@@ -1065,20 +871,20 @@ private int p11() {
private int p12() {
// ADD 8 TO ZERO GIVING APPL-RESULT
BigDecimal v14 = D8.add(BigDecimal.ZERO);
- Cobol.store(f124_APPL_RESULT, v14, false, CS);
+ f124_APPL_RESULT = Cobol.binary(v14, 9, true, false, CS);
// CLOSE XREF-FILE
String st15 = XREF_FILE.close();
Cobol.move(st15, f65_XREFFILE_STATUS, CS);
// IF XREFFILE-STATUS = '00'
if (Cobol.compare(f65_XREFFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR CLOSING CROSS REF FILE'
@@ -1098,20 +904,20 @@ private int p12() {
private int p13() {
// ADD 8 TO ZERO GIVING APPL-RESULT
BigDecimal v16 = D8.add(BigDecimal.ZERO);
- Cobol.store(f124_APPL_RESULT, v16, false, CS);
+ f124_APPL_RESULT = Cobol.binary(v16, 9, true, false, CS);
// CLOSE CARD-FILE
String st17 = CARD_FILE.close();
Cobol.move(st17, f76_CARDFILE_STATUS, CS);
// IF CARDFILE-STATUS = '00'
if (Cobol.compare(f76_CARDFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR CLOSING CARD FILE'
@@ -1131,20 +937,20 @@ private int p13() {
private int p14() {
// ADD 8 TO ZERO GIVING APPL-RESULT
BigDecimal v18 = D8.add(BigDecimal.ZERO);
- Cobol.store(f124_APPL_RESULT, v18, false, CS);
+ f124_APPL_RESULT = Cobol.binary(v18, 9, true, false, CS);
// CLOSE ACCOUNT-FILE
String st19 = ACCOUNT_FILE.close();
Cobol.move(st19, f93_ACCTFILE_STATUS, CS);
// IF ACCTFILE-STATUS = '00'
if (Cobol.compare(f93_ACCTFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR CLOSING ACCOUNT FILE'
@@ -1164,20 +970,20 @@ private int p14() {
private int p15() {
// ADD 8 TO ZERO GIVING APPL-RESULT
BigDecimal v20 = D8.add(BigDecimal.ZERO);
- Cobol.store(f124_APPL_RESULT, v20, false, CS);
+ f124_APPL_RESULT = Cobol.binary(v20, 9, true, false, CS);
// CLOSE TRANSACT-FILE
String st21 = TRANSACT_FILE.close();
Cobol.move(st21, f111_TRANFILE_STATUS, CS);
// IF TRANFILE-STATUS = '00'
if (Cobol.compare(f111_TRANFILE_STATUS, "00", CS) == 0) {
// MOVE 0 TO APPL-RESULT
- Cobol.move(D0, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 0L;
} else {
// MOVE 12 TO APPL-RESULT
- Cobol.move(D12, f124_APPL_RESULT, CS);
+ f124_APPL_RESULT = 12L;
}
// IF APPL-AOK
- if (Cobol.compare(f124_APPL_RESULT, D0, CS) == 0) {
+ if (isApplAok()) {
// CONTINUE
} else {
// DISPLAY 'ERROR CLOSING TRANSACTION FILE'
@@ -1198,11 +1004,11 @@ private int p16() {
// DISPLAY 'ABENDING PROGRAM'
Sysout.display("ABENDING PROGRAM");
// MOVE 0 TO TIMING
- Cobol.move(D0, f127_TIMING, CS);
+ f127_TIMING = 0L;
// MOVE 999 TO ABCODE
- Cobol.move(D999, f126_ABCODE, CS);
+ f126_ABCODE = 999L;
// CALL 'CEE3ABD' USING ABCODE, TIMING
- if (true) throw CobolAbend.user(Cobol.num(f126_ABCODE, CS).intValue(), "CEE3ABD");
+ if (true) throw CobolAbend.user(BigDecimal.valueOf(f126_ABCODE).intValue(), "CEE3ABD");
return 17;
}
@@ -1232,4 +1038,10 @@ private int p17() {
return 18;
}
+ /** 88 APPL-AOK of APPL-RESULT. */
+ private boolean isApplAok() { return f124_APPL_RESULT == 0L; }
+
+ /** 88 APPL-EOF of APPL-RESULT. */
+ private boolean isApplEof() { return f124_APPL_RESULT == 16L; }
+
}
diff --git a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/CobtupdtService.java b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/CobtupdtService.java
index 37f5d9c79..d301b72d7 100644
--- a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/CobtupdtService.java
+++ b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/CobtupdtService.java
@@ -65,51 +65,21 @@ public class CobtupdtService {
private final Storage s_WS_INPUT_REC = new Storage(IMAGE_s_WS_INPUT_REC.length);
private final Storage s_GG_RETURN_CODE = new Storage(IMAGE_s_GG_RETURN_CODE.length);
- private Field f10_SQLERRML;
- private Field f11_SQLERRMC;
- private Field f12_SQLERRP;
- private Field f13_SQLERRD;
- private Field f14_SQLWARN;
- private Field f15_SQLWARN0;
- private Field f16_SQLWARN1;
- private Field f17_SQLWARN2;
- private Field f18_SQLWARN3;
- private Field f19_SQLWARN4;
- private Field f1_WS_INPUT_VARS;
- private Field f20_SQLWARN5;
- private Field f21_SQLWARN6;
- private Field f22_SQLWARN7;
- private Field f23_SQLWARN8;
- private Field f24_SQLWARN9;
- private Field f25_SQLWARNA;
- private Field f26_SQLSTATE;
- private Field f27_DCLTRANSACTION_TYPE;
- private Field f28_DCL_TR_TYPE;
- private Field f29_DCL_TR_DESCRIPTION;
- private Field f2_INPUT_TYPE;
- private Field f30_DCL_TR_DESCRIPTION_LEN;
- private Field f31_DCL_TR_DESCRIPTION_TEXT;
- private Field f32_FLAGS;
- private Field f33_LASTREC;
- private Field f34_WORKING_VARIABLES;
- private Field f35_WS_RETURN_MSG;
- private Field f36_WS_MISC_VARS;
- private Field f37_WS_VAR_SQLCODE;
- private Field f38_WS_INF_STATUS;
- private Field f39_WS_INF_STAT1;
- private Field f3_INPUT_TR_NUMBER;
- private Field f40_WS_INF_STAT2;
- private Field f41_WS_INPUT_REC;
- private Field f42_INPUT_REC_TYPE;
- private Field f43_INPUT_REC_NUMBER;
- private Field f44_INPUT_REC_DESC;
- private Field f45_GG_RETURN_CODE;
- private Field f4_INPUT_TR_DESC;
- private Field f5_SQLCA;
- private Field f6_SQLCAID;
- private Field f7_SQLCABC;
- private Field f8_SQLCODE;
- private Field f9_SQLERRM;
+ private final Field f1_WS_INPUT_VARS = Field.group(s_WS_INPUT_VARS, 0, 53);
+ private final Field f5_SQLCA = Field.group(s_SQLCA, 0, 136);
+ private final Field f8_SQLCODE = Field.binary(s_SQLCA, 12, 9, 0, true, true);
+ private final Field f35_WS_RETURN_MSG = Field.alphanumeric(s_WORKING_VARIABLES, 0, 80, false);
+ private final Field f37_WS_VAR_SQLCODE = Field.numericEdited(s_WS_MISC_VARS, 0, 5, "----9", false);
+ private final Field f38_WS_INF_STATUS = Field.group(s_WS_INF_STATUS, 0, 2);
+ private final Field f41_WS_INPUT_REC = Field.group(s_WS_INPUT_REC, 0, 53);
+ private final Field f42_INPUT_REC_TYPE = Field.alphanumeric(s_WS_INPUT_REC, 0, 1, false);
+ private final Field f43_INPUT_REC_NUMBER = Field.alphanumeric(s_WS_INPUT_REC, 1, 2, false);
+ private final Field f44_INPUT_REC_DESC = Field.alphanumeric(s_WS_INPUT_REC, 3, 50, false);
+ private final Field f45_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
+ private String f28_DCL_TR_TYPE; // DCL-TR-TYPE PIC X(2)
+ private long f30_DCL_TR_DESCRIPTION_LEN; // DCL-TR-DESCRIPTION-LEN PIC S9(4) BINARY
+ private String f31_DCL_TR_DESCRIPTION_TEXT; // DCL-TR-DESCRIPTION-TEXT PIC X(50)
+ private String f33_LASTREC; // LASTREC PIC X(1)
private DetFiles.DetFile TR_RECORD;
@@ -123,60 +93,10 @@ public CobtupdtService(TransactionTypeRepository transactionTypeRepository, Data
this.datasets = datasets;
this.files = files;
this.clock = clock;
- fields0();
}
- private void fields0() {
- f1_WS_INPUT_VARS = Field.group(s_WS_INPUT_VARS, 0, 53);
- f2_INPUT_TYPE = Field.alphanumeric(s_WS_INPUT_VARS, 0, 1, false);
- f3_INPUT_TR_NUMBER = Field.alphanumeric(s_WS_INPUT_VARS, 1, 2, false);
- f4_INPUT_TR_DESC = Field.alphanumeric(s_WS_INPUT_VARS, 3, 50, false);
- f5_SQLCA = Field.group(s_SQLCA, 0, 136);
- f6_SQLCAID = Field.alphanumeric(s_SQLCA, 0, 8, false);
- f7_SQLCABC = Field.binary(s_SQLCA, 8, 9, 0, true, true);
- f8_SQLCODE = Field.binary(s_SQLCA, 12, 9, 0, true, true);
- f9_SQLERRM = Field.group(s_SQLCA, 16, 72);
- f10_SQLERRML = Field.binary(s_SQLCA, 16, 4, 0, true, true);
- f11_SQLERRMC = Field.alphanumeric(s_SQLCA, 18, 70, false);
- f12_SQLERRP = Field.alphanumeric(s_SQLCA, 88, 8, false);
- f13_SQLERRD = Field.binary(s_SQLCA, 96, 9, 0, true, true);
- f14_SQLWARN = Field.group(s_SQLCA, 120, 11);
- f15_SQLWARN0 = Field.alphanumeric(s_SQLCA, 120, 1, false);
- f16_SQLWARN1 = Field.alphanumeric(s_SQLCA, 121, 1, false);
- f17_SQLWARN2 = Field.alphanumeric(s_SQLCA, 122, 1, false);
- f18_SQLWARN3 = Field.alphanumeric(s_SQLCA, 123, 1, false);
- f19_SQLWARN4 = Field.alphanumeric(s_SQLCA, 124, 1, false);
- f20_SQLWARN5 = Field.alphanumeric(s_SQLCA, 125, 1, false);
- f21_SQLWARN6 = Field.alphanumeric(s_SQLCA, 126, 1, false);
- f22_SQLWARN7 = Field.alphanumeric(s_SQLCA, 127, 1, false);
- f23_SQLWARN8 = Field.alphanumeric(s_SQLCA, 128, 1, false);
- f24_SQLWARN9 = Field.alphanumeric(s_SQLCA, 129, 1, false);
- f25_SQLWARNA = Field.alphanumeric(s_SQLCA, 130, 1, false);
- f26_SQLSTATE = Field.alphanumeric(s_SQLCA, 131, 5, false);
- f27_DCLTRANSACTION_TYPE = Field.group(s_DCLTRANSACTION_TYPE, 0, 54);
- f28_DCL_TR_TYPE = Field.alphanumeric(s_DCLTRANSACTION_TYPE, 0, 2, false);
- f29_DCL_TR_DESCRIPTION = Field.group(s_DCLTRANSACTION_TYPE, 2, 52);
- f30_DCL_TR_DESCRIPTION_LEN = Field.binary(s_DCLTRANSACTION_TYPE, 2, 4, 0, true, false);
- f31_DCL_TR_DESCRIPTION_TEXT = Field.alphanumeric(s_DCLTRANSACTION_TYPE, 4, 50, false);
- f32_FLAGS = Field.group(s_FLAGS, 0, 1);
- f33_LASTREC = Field.alphanumeric(s_FLAGS, 0, 1, false);
- f34_WORKING_VARIABLES = Field.group(s_WORKING_VARIABLES, 0, 80);
- f35_WS_RETURN_MSG = Field.alphanumeric(s_WORKING_VARIABLES, 0, 80, false);
- f36_WS_MISC_VARS = Field.group(s_WS_MISC_VARS, 0, 5);
- f37_WS_VAR_SQLCODE = Field.numericEdited(s_WS_MISC_VARS, 0, 5, "----9", false);
- f38_WS_INF_STATUS = Field.group(s_WS_INF_STATUS, 0, 2);
- f39_WS_INF_STAT1 = Field.alphanumeric(s_WS_INF_STATUS, 0, 1, false);
- f40_WS_INF_STAT2 = Field.alphanumeric(s_WS_INF_STATUS, 1, 1, false);
- f41_WS_INPUT_REC = Field.group(s_WS_INPUT_REC, 0, 53);
- f42_INPUT_REC_TYPE = Field.alphanumeric(s_WS_INPUT_REC, 0, 1, false);
- f43_INPUT_REC_NUMBER = Field.alphanumeric(s_WS_INPUT_REC, 1, 2, false);
- f44_INPUT_REC_DESC = Field.alphanumeric(s_WS_INPUT_REC, 3, 50, false);
- f45_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
- }
-
- /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
- * initial storage; RETURN-CODE. */
- public int runProgram() {
+ /** WORKING-STORAGE (and every storage) as its VALUE clauses set it: each entry point starts from here. */
+ private void initialState() {
System.arraycopy(IMAGE_s_WS_INPUT_VARS, 0, s_WS_INPUT_VARS.bytes, 0, IMAGE_s_WS_INPUT_VARS.length);
System.arraycopy(IMAGE_s_SQLCA, 0, s_SQLCA.bytes, 0, IMAGE_s_SQLCA.length);
System.arraycopy(IMAGE_s_DCLTRANSACTION_TYPE, 0, s_DCLTRANSACTION_TYPE.bytes, 0, IMAGE_s_DCLTRANSACTION_TYPE.length);
@@ -186,7 +106,17 @@ public int runProgram() {
System.arraycopy(IMAGE_s_WS_INF_STATUS, 0, s_WS_INF_STATUS.bytes, 0, IMAGE_s_WS_INF_STATUS.length);
System.arraycopy(IMAGE_s_WS_INPUT_REC, 0, s_WS_INPUT_REC.bytes, 0, IMAGE_s_WS_INPUT_REC.length);
System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ f28_DCL_TR_TYPE = " ";
+ f30_DCL_TR_DESCRIPTION_LEN = 0L;
+ f31_DCL_TR_DESCRIPTION_TEXT = " ";
+ f33_LASTREC = " ";
Cobol.moveFigurative(Figurative.ZEROS, f37_WS_VAR_SQLCODE, CS);
+ }
+
+ /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
+ * initial storage; RETURN-CODE. */
+ public int runProgram() {
+ initialState();
performDepth = 0;
try {
perform(0, 8);
@@ -196,10 +126,6 @@ public int runProgram() {
return Cobol.num(f45_GG_RETURN_CODE, CS).intValue();
}
- public void executeCobtupdt() {
- runBatch(List.of(), null);
- }
-
/** GOBACK / STOP RUN. */
private static final class Goback extends RuntimeException {
@@ -217,18 +143,10 @@ private static Dd dd(List dds, String name) {
/** The batch entry. */
public int runBatch(List dds, String parm) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
DetSql.closeAll(); // a step's cursors are its own
- System.arraycopy(IMAGE_s_WS_INPUT_VARS, 0, s_WS_INPUT_VARS.bytes, 0, IMAGE_s_WS_INPUT_VARS.length);
- System.arraycopy(IMAGE_s_SQLCA, 0, s_SQLCA.bytes, 0, IMAGE_s_SQLCA.length);
- System.arraycopy(IMAGE_s_DCLTRANSACTION_TYPE, 0, s_DCLTRANSACTION_TYPE.bytes, 0, IMAGE_s_DCLTRANSACTION_TYPE.length);
- System.arraycopy(IMAGE_s_FLAGS, 0, s_FLAGS.bytes, 0, IMAGE_s_FLAGS.length);
- System.arraycopy(IMAGE_s_WORKING_VARIABLES, 0, s_WORKING_VARIABLES.bytes, 0, IMAGE_s_WORKING_VARIABLES.length);
- System.arraycopy(IMAGE_s_WS_MISC_VARS, 0, s_WS_MISC_VARS.bytes, 0, IMAGE_s_WS_MISC_VARS.length);
- System.arraycopy(IMAGE_s_WS_INF_STATUS, 0, s_WS_INF_STATUS.bytes, 0, IMAGE_s_WS_INF_STATUS.length);
- System.arraycopy(IMAGE_s_WS_INPUT_REC, 0, s_WS_INPUT_REC.bytes, 0, IMAGE_s_WS_INPUT_REC.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
- Cobol.moveFigurative(Figurative.ZEROS, f37_WS_VAR_SQLCODE, CS);
+ initialState();
TR_RECORD = new DetFiles.Sequential(files, "INPFILE", () -> datasets.path(dd(dds, "INPFILE")), s_WS_INPUT_VARS, 0, 53);
try {
perform(0, 8);
@@ -238,6 +156,7 @@ public int runBatch(List dds, String parm) {
return Cobol.num(f45_GG_RETURN_CODE, CS).intValue();
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
@@ -332,7 +251,7 @@ private int p1() {
// PERFORM 1002-READ-RECORDS
perform(2, 2);
// PERFORM UNTIL LASTREC = 'Y'
- while (!(Cobol.compare(f33_LASTREC, "Y", CS) == 0)) {
+ while (!(f33_LASTREC.equals("Y"))) {
// PERFORM 1003-TREAT-RECORD
perform(3, 3);
// PERFORM 1002-READ-RECORDS
@@ -356,10 +275,10 @@ private int p2() {
}
if (st2.equals("10")) {
// MOVE 'Y' TO LASTREC
- Cobol.move("Y", f33_LASTREC, CS);
+ f33_LASTREC = "Y";
}
// IF LASTREC NOT EQUAL TO 'Y' THEN
- if (!(Cobol.compare(f33_LASTREC, "Y", CS) == 0)) {
+ if (!(f33_LASTREC.equals("Y"))) {
// DISPLAY 'PROCESSING ' WS-INPUT-REC
Sysout.display("PROCESSING ", Cobol.displayText(f41_WS_INPUT_REC, CS));
}
@@ -404,7 +323,7 @@ private int p4() {
java.util.Map sqlParams3 = new java.util.HashMap<>();
sqlParams3.put("inputRecNumber", DetSql.charIn(f43_INPUT_REC_NUMBER, CS));
sqlParams3.put("inputRecDesc", DetSql.charIn(f44_INPUT_REC_DESC, CS));
- DetSql.update(f5_SQLCA, () -> transactionTypeRepository.insertL137Cobtupdt(sqlParams3), false, CS);
+ DetSql.update(f5_SQLCA, "COBTUPDT:137", () -> transactionTypeRepository.insertL137Cobtupdt(sqlParams3), false, CS);
// MOVE SQLCODE TO WS-VAR-SQLCODE
Cobol.move(f8_SQLCODE, f37_WS_VAR_SQLCODE, CS);
// EVALUATE TRUE
@@ -427,7 +346,7 @@ private int p5() {
java.util.Map sqlParams4 = new java.util.HashMap<>();
sqlParams4.put("inputRecDesc", DetSql.charIn(f44_INPUT_REC_DESC, CS));
sqlParams4.put("inputRecNumber", DetSql.charIn(f43_INPUT_REC_NUMBER, CS));
- DetSql.update(f5_SQLCA, () -> transactionTypeRepository.updateL171Cobtupdt(sqlParams4), true, CS);
+ DetSql.update(f5_SQLCA, "COBTUPDT:171", () -> transactionTypeRepository.updateL171Cobtupdt(sqlParams4), true, CS);
// MOVE SQLCODE TO WS-VAR-SQLCODE
Cobol.move(f8_SQLCODE, f37_WS_VAR_SQLCODE, CS);
// EVALUATE TRUE
@@ -454,7 +373,7 @@ private int p6() {
// EXEC SQL DELETE FROM CARDDEMO.TRANSACTION_TYPE WHERE TR_TYPE = :INPUT-REC-NUMBER END-EXEC
java.util.Map sqlParams5 = new java.util.HashMap<>();
sqlParams5.put("inputRecNumber", DetSql.charIn(f43_INPUT_REC_NUMBER, CS));
- DetSql.update(f5_SQLCA, () -> transactionTypeRepository.deleteL201Cobtupdt(sqlParams5), true, CS);
+ DetSql.update(f5_SQLCA, "COBTUPDT:201", () -> transactionTypeRepository.deleteL201Cobtupdt(sqlParams5), true, CS);
// MOVE SQLCODE TO WS-VAR-SQLCODE
Cobol.move(f8_SQLCODE, f37_WS_VAR_SQLCODE, CS);
// EVALUATE TRUE
diff --git a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cousr01cService.java b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cousr01cService.java
index 1e1eaeefa..b8e547716 100644
--- a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cousr01cService.java
+++ b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cousr01cService.java
@@ -41,8 +41,6 @@ public class Cousr01cService {
private static final BigDecimal D0 = new BigDecimal("0");
private static final BigDecimal D1 = new BigDecimal("1");
private static final BigDecimal DM1 = new BigDecimal("-1");
- private static final BigDecimal D15 = new BigDecimal("15");
- private static final BigDecimal D14 = new BigDecimal("14");
private static final byte[] IMAGE_s_WS_VARIABLES = Base64.getDecoder().decode(String.join("",
"Q09VU1IwMUNDVTAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU1JTRUMgIE4AAAAAAAAAAA=="));
@@ -191,377 +189,173 @@ public class Cousr01cService {
private final Storage s_DFHEIBLK = new Storage(IMAGE_s_DFHEIBLK.length);
private final Storage s_GG_RETURN_CODE = new Storage(IMAGE_s_GG_RETURN_CODE.length);
- private Field f100_ERRMSGF;
- private Field f101_FILLER;
- private Field f102_ERRMSGA;
- private Field f103_FILLER;
- private Field f104_ERRMSGI;
- private Field f105_COUSR1AO;
- private Field f106_FILLER;
- private Field f107_FILLER;
- private Field f108_TRNNAMEC;
- private Field f109_TRNNAMEP;
- private Field f10_CDEMO_GENERAL_INFO;
- private Field f110_TRNNAMEH;
- private Field f111_TRNNAMEV;
- private Field f112_TRNNAMEO;
- private Field f113_FILLER;
- private Field f114_TITLE01C;
- private Field f115_TITLE01P;
- private Field f116_TITLE01H;
- private Field f117_TITLE01V;
- private Field f118_TITLE01O;
- private Field f119_FILLER;
- private Field f11_CDEMO_FROM_TRANID;
- private Field f120_CURDATEC;
- private Field f121_CURDATEP;
- private Field f122_CURDATEH;
- private Field f123_CURDATEV;
- private Field f124_CURDATEO;
- private Field f125_FILLER;
- private Field f126_PGMNAMEC;
- private Field f127_PGMNAMEP;
- private Field f128_PGMNAMEH;
- private Field f129_PGMNAMEV;
- private Field f12_CDEMO_FROM_PROGRAM;
- private Field f130_PGMNAMEO;
- private Field f131_FILLER;
- private Field f132_TITLE02C;
- private Field f133_TITLE02P;
- private Field f134_TITLE02H;
- private Field f135_TITLE02V;
- private Field f136_TITLE02O;
- private Field f137_FILLER;
- private Field f138_CURTIMEC;
- private Field f139_CURTIMEP;
- private Field f13_CDEMO_TO_TRANID;
- private Field f140_CURTIMEH;
- private Field f141_CURTIMEV;
- private Field f142_CURTIMEO;
- private Field f143_FILLER;
- private Field f144_FNAMEC;
- private Field f145_FNAMEP;
- private Field f146_FNAMEH;
- private Field f147_FNAMEV;
- private Field f148_FNAMEO;
- private Field f149_FILLER;
- private Field f14_CDEMO_TO_PROGRAM;
- private Field f150_LNAMEC;
- private Field f151_LNAMEP;
- private Field f152_LNAMEH;
- private Field f153_LNAMEV;
- private Field f154_LNAMEO;
- private Field f155_FILLER;
- private Field f156_USERIDC;
- private Field f157_USERIDP;
- private Field f158_USERIDH;
- private Field f159_USERIDV;
- private Field f15_CDEMO_USER_ID;
- private Field f160_USERIDO;
- private Field f161_FILLER;
- private Field f162_PASSWDC;
- private Field f163_PASSWDP;
- private Field f164_PASSWDH;
- private Field f165_PASSWDV;
- private Field f166_PASSWDO;
- private Field f167_FILLER;
- private Field f168_USRTYPEC;
- private Field f169_USRTYPEP;
- private Field f16_CDEMO_USER_TYPE;
- private Field f170_USRTYPEH;
- private Field f171_USRTYPEV;
- private Field f172_USRTYPEO;
- private Field f173_FILLER;
- private Field f174_ERRMSGC;
- private Field f175_ERRMSGP;
- private Field f176_ERRMSGH;
- private Field f177_ERRMSGV;
- private Field f178_ERRMSGO;
- private Field f179_CCDA_SCREEN_TITLE;
- private Field f17_CDEMO_PGM_CONTEXT;
- private Field f180_CCDA_TITLE01;
- private Field f181_CCDA_TITLE02;
- private Field f182_CCDA_THANK_YOU;
- private Field f183_WS_DATE_TIME;
- private Field f184_WS_CURDATE_DATA;
- private Field f185_WS_CURDATE;
- private Field f186_WS_CURDATE_YEAR;
- private Field f187_WS_CURDATE_MONTH;
- private Field f188_WS_CURDATE_DAY;
- private Field f189_WS_CURDATE_N;
- private Field f18_CDEMO_CUSTOMER_INFO;
- private Field f190_WS_CURTIME;
- private Field f191_WS_CURTIME_HOURS;
- private Field f192_WS_CURTIME_MINUTE;
- private Field f193_WS_CURTIME_SECOND;
- private Field f194_WS_CURTIME_MILSEC;
- private Field f195_WS_CURTIME_N;
- private Field f196_WS_CURDATE_MM_DD_YY;
- private Field f197_WS_CURDATE_MM;
- private Field f198_FILLER;
- private Field f199_WS_CURDATE_DD;
- private Field f19_CDEMO_CUST_ID;
- private Field f1_WS_VARIABLES;
- private Field f200_FILLER;
- private Field f201_WS_CURDATE_YY;
- private Field f202_WS_CURTIME_HH_MM_SS;
- private Field f203_WS_CURTIME_HH;
- private Field f204_FILLER;
- private Field f205_WS_CURTIME_MM;
- private Field f206_FILLER;
- private Field f207_WS_CURTIME_SS;
- private Field f208_WS_TIMESTAMP;
- private Field f209_WS_TIMESTAMP_DT_YYYY;
- private Field f20_CDEMO_CUST_FNAME;
- private Field f210_FILLER;
- private Field f211_WS_TIMESTAMP_DT_MM;
- private Field f212_FILLER;
- private Field f213_WS_TIMESTAMP_DT_DD;
- private Field f214_FILLER;
- private Field f215_WS_TIMESTAMP_TM_HH;
- private Field f216_FILLER;
- private Field f217_WS_TIMESTAMP_TM_MM;
- private Field f218_FILLER;
- private Field f219_WS_TIMESTAMP_TM_SS;
- private Field f21_CDEMO_CUST_MNAME;
- private Field f220_FILLER;
- private Field f221_WS_TIMESTAMP_TM_MS6;
- private Field f222_CCDA_COMMON_MESSAGES;
- private Field f223_CCDA_MSG_THANK_YOU;
- private Field f224_CCDA_MSG_INVALID_KEY;
- private Field f225_SEC_USER_DATA;
- private Field f226_SEC_USR_ID;
- private Field f227_SEC_USR_FNAME;
- private Field f228_SEC_USR_LNAME;
- private Field f229_SEC_USR_PWD;
- private Field f22_CDEMO_CUST_LNAME;
- private Field f230_SEC_USR_TYPE;
- private Field f231_SEC_USR_FILLER;
- private Field f232_DFHAID;
- private Field f233_DFHNULL;
- private Field f234_DFHENTER;
- private Field f235_DFHCLEAR;
- private Field f236_DFHCLRP;
- private Field f237_DFHPEN;
- private Field f238_DFHOPID;
- private Field f239_DFHMSRE;
- private Field f23_CDEMO_ACCOUNT_INFO;
- private Field f240_DFHSTRF;
- private Field f241_DFHTRIG;
- private Field f242_DFHPA1;
- private Field f243_DFHPA2;
- private Field f244_DFHPA3;
- private Field f245_DFHPF1;
- private Field f246_DFHPF2;
- private Field f247_DFHPF3;
- private Field f248_DFHPF4;
- private Field f249_DFHPF5;
- private Field f24_CDEMO_ACCT_ID;
- private Field f250_DFHPF6;
- private Field f251_DFHPF7;
- private Field f252_DFHPF8;
- private Field f253_DFHPF9;
- private Field f254_DFHPF10;
- private Field f255_DFHPF11;
- private Field f256_DFHPF12;
- private Field f257_DFHPF13;
- private Field f258_DFHPF14;
- private Field f259_DFHPF15;
- private Field f25_CDEMO_ACCT_STATUS;
- private Field f260_DFHPF16;
- private Field f261_DFHPF17;
- private Field f262_DFHPF18;
- private Field f263_DFHPF19;
- private Field f264_DFHPF20;
- private Field f265_DFHPF21;
- private Field f266_DFHPF22;
- private Field f267_DFHPF23;
- private Field f268_DFHPF24;
- private Field f269_DFHBMSCA;
- private Field f26_CDEMO_CARD_INFO;
- private Field f270_DFHBMPEM;
- private Field f271_DFHBMPNL;
- private Field f272_DFHBMPFF;
- private Field f273_DFHBMPCR;
- private Field f274_DFHBMASK;
- private Field f275_DFHBMUNP;
- private Field f276_DFHBMUNN;
- private Field f277_DFHBMPRO;
- private Field f278_DFHBMBRY;
- private Field f279_DFHBMDAR;
- private Field f27_CDEMO_CARD_NUM;
- private Field f280_DFHBMFSE;
- private Field f281_DFHBMPRF;
- private Field f282_DFHBMASF;
- private Field f283_DFHBMASB;
- private Field f284_DFHBMEOF;
- private Field f285_DFHBMCUR;
- private Field f286_DFHBMEC;
- private Field f287_DFHBMFLG;
- private Field f288_DFHBMDET;
- private Field f289_DFHSA;
- private Field f28_CDEMO_MORE_INFO;
- private Field f290_DFHCOLOR;
- private Field f291_DFHPS;
- private Field f292_DFHHLT;
- private Field f293_DFH3270;
- private Field f294_DFHVAL;
- private Field f295_DFHOUTLN;
- private Field f296_DFHBKTRN;
- private Field f297_DFHALL;
- private Field f298_DFHERROR;
- private Field f299_DFHDFT;
- private Field f29_CDEMO_LAST_MAP;
- private Field f2_WS_PGMNAME;
- private Field f300_DFHDFCOL;
- private Field f301_DFHBLUE;
- private Field f302_DFHRED;
- private Field f303_DFHPINK;
- private Field f304_DFHGREEN;
- private Field f305_DFHTURQ;
- private Field f306_DFHYELLO;
- private Field f307_DFHNEUTR;
- private Field f308_DFHBASE;
- private Field f309_DFHDFHI;
- private Field f30_CDEMO_LAST_MAPSET;
- private Field f310_DFHBLINK;
- private Field f311_DFHREVRS;
- private Field f312_DFHUNDLN;
- private Field f313_DFHMFIL;
- private Field f314_DFHMENT;
- private Field f315_DFHMFE;
- private Field f316_DFHUNNOD;
- private Field f317_DFHUNIMD;
- private Field f318_DFHUNNUM;
- private Field f319_DFHUNNUB;
- private Field f31_COUSR1AI;
- private Field f320_DFHUNINT;
- private Field f321_DFHUNNON;
- private Field f322_DFHPROTI;
- private Field f323_DFHPROTN;
- private Field f324_DFHMT;
- private Field f325_DFHMFT;
- private Field f326_DFHMET;
- private Field f327_DFHMFET;
- private Field f328_DFHDFFR;
- private Field f329_DFHUNDER;
- private Field f32_FILLER;
- private Field f330_DFHRIGHT;
- private Field f331_DFHOVER;
- private Field f332_DFHLEFT;
- private Field f333_DFHBOX;
- private Field f334_DFHSOSI;
- private Field f335_DFHTRANS;
- private Field f336_DFHOPAQ;
- private Field f337_DFHCOMMAREA;
- private Field f338_LK_COMMAREA;
- private Field f339_DFHEIBLK;
- private Field f33_TRNNAMEL;
- private Field f340_EIBTIME;
- private Field f341_EIBDATE;
- private Field f342_EIBTRNID;
- private Field f343_EIBTASKN;
- private Field f344_EIBTRMID;
- private Field f345_DFHEIGDI;
- private Field f346_EIBCPOSN;
- private Field f347_EIBCALEN;
- private Field f348_EIBAID;
- private Field f349_EIBFN;
- private Field f34_TRNNAMEF;
- private Field f350_EIBRCODE;
- private Field f351_EIBDS;
- private Field f352_EIBREQID;
- private Field f353_EIBRSRCE;
- private Field f354_EIBSYNC;
- private Field f355_EIBFREE;
- private Field f356_EIBRECV;
- private Field f357_EIBSEND;
- private Field f358_EIBATT;
- private Field f359_EIBEOC;
- private Field f35_FILLER;
- private Field f360_EIBFMH;
- private Field f361_EIBCOMPL;
- private Field f362_EIBSIG;
- private Field f363_EIBCONF;
- private Field f364_EIBERR;
- private Field f365_EIBERRCD;
- private Field f366_EIBSYNRB;
- private Field f367_EIBNODAT;
- private Field f368_EIBRESP;
- private Field f369_EIBRESP2;
- private Field f36_TRNNAMEA;
- private Field f370_EIBRLDBK;
- private Field f371_GG_RETURN_CODE;
- private Field f37_FILLER;
- private Field f38_TRNNAMEI;
- private Field f39_TITLE01L;
- private Field f3_WS_TRANID;
- private Field f40_TITLE01F;
- private Field f41_FILLER;
- private Field f42_TITLE01A;
- private Field f43_FILLER;
- private Field f44_TITLE01I;
- private Field f45_CURDATEL;
- private Field f46_CURDATEF;
- private Field f47_FILLER;
- private Field f48_CURDATEA;
- private Field f49_FILLER;
- private Field f4_WS_MESSAGE;
- private Field f50_CURDATEI;
- private Field f51_PGMNAMEL;
- private Field f52_PGMNAMEF;
- private Field f53_FILLER;
- private Field f54_PGMNAMEA;
- private Field f55_FILLER;
- private Field f56_PGMNAMEI;
- private Field f57_TITLE02L;
- private Field f58_TITLE02F;
- private Field f59_FILLER;
- private Field f5_WS_USRSEC_FILE;
- private Field f60_TITLE02A;
- private Field f61_FILLER;
- private Field f62_TITLE02I;
- private Field f63_CURTIMEL;
- private Field f64_CURTIMEF;
- private Field f65_FILLER;
- private Field f66_CURTIMEA;
- private Field f67_FILLER;
- private Field f68_CURTIMEI;
- private Field f69_FNAMEL;
- private Field f6_WS_ERR_FLG;
- private Field f70_FNAMEF;
- private Field f71_FILLER;
- private Field f72_FNAMEA;
- private Field f73_FILLER;
- private Field f74_FNAMEI;
- private Field f75_LNAMEL;
- private Field f76_LNAMEF;
- private Field f77_FILLER;
- private Field f78_LNAMEA;
- private Field f79_FILLER;
- private Field f7_WS_RESP_CD;
- private Field f80_LNAMEI;
- private Field f81_USERIDL;
- private Field f82_USERIDF;
- private Field f83_FILLER;
- private Field f84_USERIDA;
- private Field f85_FILLER;
- private Field f86_USERIDI;
- private Field f87_PASSWDL;
- private Field f88_PASSWDF;
- private Field f89_FILLER;
- private Field f8_WS_REAS_CD;
- private Field f90_PASSWDA;
- private Field f91_FILLER;
- private Field f92_PASSWDI;
- private Field f93_USRTYPEL;
- private Field f94_USRTYPEF;
- private Field f95_FILLER;
- private Field f96_USRTYPEA;
- private Field f97_FILLER;
- private Field f98_USRTYPEI;
- private Field f99_ERRMSGL;
- private Field f9_CARDDEMO_COMMAREA;
+ private final Field f4_WS_MESSAGE = Field.alphanumeric(s_WS_VARIABLES, 12, 80, false);
+ private final Field f9_CARDDEMO_COMMAREA = Field.group(s_CARDDEMO_COMMAREA, 0, 160);
+ private final Field f11_CDEMO_FROM_TRANID = Field.alphanumeric(s_CARDDEMO_COMMAREA, 0, 4, false);
+ private final Field f12_CDEMO_FROM_PROGRAM = Field.alphanumeric(s_CARDDEMO_COMMAREA, 4, 8, false);
+ private final Field f14_CDEMO_TO_PROGRAM = Field.alphanumeric(s_CARDDEMO_COMMAREA, 16, 8, false);
+ private final Field f17_CDEMO_PGM_CONTEXT = Field.zoned(s_CARDDEMO_COMMAREA, 33, 1, 0, false, false, false);
+ private final Field f31_COUSR1AI = Field.group(s_COUSR1AI, 0, 339);
+ private final Field f33_TRNNAMEL = Field.binary(s_COUSR1AI, 12, 4, 0, true, false);
+ private final Field f36_TRNNAMEA = Field.alphanumeric(s_COUSR1AI, 14, 1, false);
+ private final Field f38_TRNNAMEI = Field.alphanumeric(s_COUSR1AI, 19, 4, false);
+ private final Field f39_TITLE01L = Field.binary(s_COUSR1AI, 23, 4, 0, true, false);
+ private final Field f42_TITLE01A = Field.alphanumeric(s_COUSR1AI, 25, 1, false);
+ private final Field f44_TITLE01I = Field.alphanumeric(s_COUSR1AI, 30, 40, false);
+ private final Field f45_CURDATEL = Field.binary(s_COUSR1AI, 70, 4, 0, true, false);
+ private final Field f48_CURDATEA = Field.alphanumeric(s_COUSR1AI, 72, 1, false);
+ private final Field f50_CURDATEI = Field.alphanumeric(s_COUSR1AI, 77, 8, false);
+ private final Field f51_PGMNAMEL = Field.binary(s_COUSR1AI, 85, 4, 0, true, false);
+ private final Field f54_PGMNAMEA = Field.alphanumeric(s_COUSR1AI, 87, 1, false);
+ private final Field f56_PGMNAMEI = Field.alphanumeric(s_COUSR1AI, 92, 8, false);
+ private final Field f57_TITLE02L = Field.binary(s_COUSR1AI, 100, 4, 0, true, false);
+ private final Field f60_TITLE02A = Field.alphanumeric(s_COUSR1AI, 102, 1, false);
+ private final Field f62_TITLE02I = Field.alphanumeric(s_COUSR1AI, 107, 40, false);
+ private final Field f63_CURTIMEL = Field.binary(s_COUSR1AI, 147, 4, 0, true, false);
+ private final Field f66_CURTIMEA = Field.alphanumeric(s_COUSR1AI, 149, 1, false);
+ private final Field f68_CURTIMEI = Field.alphanumeric(s_COUSR1AI, 154, 8, false);
+ private final Field f69_FNAMEL = Field.binary(s_COUSR1AI, 162, 4, 0, true, false);
+ private final Field f72_FNAMEA = Field.alphanumeric(s_COUSR1AI, 164, 1, false);
+ private final Field f74_FNAMEI = Field.alphanumeric(s_COUSR1AI, 169, 20, false);
+ private final Field f75_LNAMEL = Field.binary(s_COUSR1AI, 189, 4, 0, true, false);
+ private final Field f78_LNAMEA = Field.alphanumeric(s_COUSR1AI, 191, 1, false);
+ private final Field f80_LNAMEI = Field.alphanumeric(s_COUSR1AI, 196, 20, false);
+ private final Field f81_USERIDL = Field.binary(s_COUSR1AI, 216, 4, 0, true, false);
+ private final Field f84_USERIDA = Field.alphanumeric(s_COUSR1AI, 218, 1, false);
+ private final Field f86_USERIDI = Field.alphanumeric(s_COUSR1AI, 223, 8, false);
+ private final Field f87_PASSWDL = Field.binary(s_COUSR1AI, 231, 4, 0, true, false);
+ private final Field f90_PASSWDA = Field.alphanumeric(s_COUSR1AI, 233, 1, false);
+ private final Field f92_PASSWDI = Field.alphanumeric(s_COUSR1AI, 238, 8, false);
+ private final Field f93_USRTYPEL = Field.binary(s_COUSR1AI, 246, 4, 0, true, false);
+ private final Field f96_USRTYPEA = Field.alphanumeric(s_COUSR1AI, 248, 1, false);
+ private final Field f98_USRTYPEI = Field.alphanumeric(s_COUSR1AI, 253, 1, false);
+ private final Field f99_ERRMSGL = Field.binary(s_COUSR1AI, 254, 4, 0, true, false);
+ private final Field f102_ERRMSGA = Field.alphanumeric(s_COUSR1AI, 256, 1, false);
+ private final Field f104_ERRMSGI = Field.alphanumeric(s_COUSR1AI, 261, 78, false);
+ private final Field f105_COUSR1AO = Field.group(s_COUSR1AI, 0, 339);
+ private final Field f108_TRNNAMEC = Field.alphanumeric(s_COUSR1AI, 15, 1, false);
+ private final Field f110_TRNNAMEH = Field.alphanumeric(s_COUSR1AI, 17, 1, false);
+ private final Field f112_TRNNAMEO = Field.alphanumeric(s_COUSR1AI, 19, 4, false);
+ private final Field f114_TITLE01C = Field.alphanumeric(s_COUSR1AI, 26, 1, false);
+ private final Field f116_TITLE01H = Field.alphanumeric(s_COUSR1AI, 28, 1, false);
+ private final Field f118_TITLE01O = Field.alphanumeric(s_COUSR1AI, 30, 40, false);
+ private final Field f120_CURDATEC = Field.alphanumeric(s_COUSR1AI, 73, 1, false);
+ private final Field f122_CURDATEH = Field.alphanumeric(s_COUSR1AI, 75, 1, false);
+ private final Field f124_CURDATEO = Field.alphanumeric(s_COUSR1AI, 77, 8, false);
+ private final Field f126_PGMNAMEC = Field.alphanumeric(s_COUSR1AI, 88, 1, false);
+ private final Field f128_PGMNAMEH = Field.alphanumeric(s_COUSR1AI, 90, 1, false);
+ private final Field f130_PGMNAMEO = Field.alphanumeric(s_COUSR1AI, 92, 8, false);
+ private final Field f132_TITLE02C = Field.alphanumeric(s_COUSR1AI, 103, 1, false);
+ private final Field f134_TITLE02H = Field.alphanumeric(s_COUSR1AI, 105, 1, false);
+ private final Field f136_TITLE02O = Field.alphanumeric(s_COUSR1AI, 107, 40, false);
+ private final Field f138_CURTIMEC = Field.alphanumeric(s_COUSR1AI, 150, 1, false);
+ private final Field f140_CURTIMEH = Field.alphanumeric(s_COUSR1AI, 152, 1, false);
+ private final Field f142_CURTIMEO = Field.alphanumeric(s_COUSR1AI, 154, 8, false);
+ private final Field f144_FNAMEC = Field.alphanumeric(s_COUSR1AI, 165, 1, false);
+ private final Field f146_FNAMEH = Field.alphanumeric(s_COUSR1AI, 167, 1, false);
+ private final Field f148_FNAMEO = Field.alphanumeric(s_COUSR1AI, 169, 20, false);
+ private final Field f150_LNAMEC = Field.alphanumeric(s_COUSR1AI, 192, 1, false);
+ private final Field f152_LNAMEH = Field.alphanumeric(s_COUSR1AI, 194, 1, false);
+ private final Field f154_LNAMEO = Field.alphanumeric(s_COUSR1AI, 196, 20, false);
+ private final Field f156_USERIDC = Field.alphanumeric(s_COUSR1AI, 219, 1, false);
+ private final Field f158_USERIDH = Field.alphanumeric(s_COUSR1AI, 221, 1, false);
+ private final Field f160_USERIDO = Field.alphanumeric(s_COUSR1AI, 223, 8, false);
+ private final Field f162_PASSWDC = Field.alphanumeric(s_COUSR1AI, 234, 1, false);
+ private final Field f164_PASSWDH = Field.alphanumeric(s_COUSR1AI, 236, 1, false);
+ private final Field f166_PASSWDO = Field.alphanumeric(s_COUSR1AI, 238, 8, false);
+ private final Field f168_USRTYPEC = Field.alphanumeric(s_COUSR1AI, 249, 1, false);
+ private final Field f170_USRTYPEH = Field.alphanumeric(s_COUSR1AI, 251, 1, false);
+ private final Field f172_USRTYPEO = Field.alphanumeric(s_COUSR1AI, 253, 1, false);
+ private final Field f174_ERRMSGC = Field.alphanumeric(s_COUSR1AI, 257, 1, false);
+ private final Field f176_ERRMSGH = Field.alphanumeric(s_COUSR1AI, 259, 1, false);
+ private final Field f178_ERRMSGO = Field.alphanumeric(s_COUSR1AI, 261, 78, false);
+ private final Field f184_WS_CURDATE_DATA = Field.group(s_WS_DATE_TIME, 0, 16);
+ private final Field f186_WS_CURDATE_YEAR = Field.zoned(s_WS_DATE_TIME, 0, 4, 0, false, false, false);
+ private final Field f187_WS_CURDATE_MONTH = Field.zoned(s_WS_DATE_TIME, 4, 2, 0, false, false, false);
+ private final Field f188_WS_CURDATE_DAY = Field.zoned(s_WS_DATE_TIME, 6, 2, 0, false, false, false);
+ private final Field f191_WS_CURTIME_HOURS = Field.zoned(s_WS_DATE_TIME, 8, 2, 0, false, false, false);
+ private final Field f192_WS_CURTIME_MINUTE = Field.zoned(s_WS_DATE_TIME, 10, 2, 0, false, false, false);
+ private final Field f193_WS_CURTIME_SECOND = Field.zoned(s_WS_DATE_TIME, 12, 2, 0, false, false, false);
+ private final Field f196_WS_CURDATE_MM_DD_YY = Field.group(s_WS_DATE_TIME, 16, 8);
+ private final Field f197_WS_CURDATE_MM = Field.zoned(s_WS_DATE_TIME, 16, 2, 0, false, false, false);
+ private final Field f199_WS_CURDATE_DD = Field.zoned(s_WS_DATE_TIME, 19, 2, 0, false, false, false);
+ private final Field f201_WS_CURDATE_YY = Field.zoned(s_WS_DATE_TIME, 22, 2, 0, false, false, false);
+ private final Field f202_WS_CURTIME_HH_MM_SS = Field.group(s_WS_DATE_TIME, 24, 8);
+ private final Field f203_WS_CURTIME_HH = Field.zoned(s_WS_DATE_TIME, 24, 2, 0, false, false, false);
+ private final Field f205_WS_CURTIME_MM = Field.zoned(s_WS_DATE_TIME, 27, 2, 0, false, false, false);
+ private final Field f207_WS_CURTIME_SS = Field.zoned(s_WS_DATE_TIME, 30, 2, 0, false, false, false);
+ private final Field f225_SEC_USER_DATA = Field.group(s_SEC_USER_DATA, 0, 80);
+ private final Field f226_SEC_USR_ID = Field.alphanumeric(s_SEC_USER_DATA, 0, 8, false);
+ private final Field f227_SEC_USR_FNAME = Field.alphanumeric(s_SEC_USER_DATA, 8, 20, false);
+ private final Field f228_SEC_USR_LNAME = Field.alphanumeric(s_SEC_USER_DATA, 28, 20, false);
+ private final Field f229_SEC_USR_PWD = Field.alphanumeric(s_SEC_USER_DATA, 48, 8, false);
+ private final Field f230_SEC_USR_TYPE = Field.alphanumeric(s_SEC_USER_DATA, 56, 1, false);
+ private final Field f233_DFHNULL = Field.alphanumeric(s_DFHAID, 0, 1, false);
+ private final Field f234_DFHENTER = Field.alphanumeric(s_DFHAID, 1, 1, false);
+ private final Field f235_DFHCLEAR = Field.alphanumeric(s_DFHAID, 2, 1, false);
+ private final Field f236_DFHCLRP = Field.alphanumeric(s_DFHAID, 3, 1, false);
+ private final Field f237_DFHPEN = Field.alphanumeric(s_DFHAID, 4, 1, false);
+ private final Field f238_DFHOPID = Field.alphanumeric(s_DFHAID, 5, 1, false);
+ private final Field f239_DFHMSRE = Field.alphanumeric(s_DFHAID, 6, 1, false);
+ private final Field f240_DFHSTRF = Field.alphanumeric(s_DFHAID, 7, 1, false);
+ private final Field f241_DFHTRIG = Field.alphanumeric(s_DFHAID, 8, 1, false);
+ private final Field f242_DFHPA1 = Field.alphanumeric(s_DFHAID, 9, 1, false);
+ private final Field f243_DFHPA2 = Field.alphanumeric(s_DFHAID, 10, 1, false);
+ private final Field f244_DFHPA3 = Field.alphanumeric(s_DFHAID, 11, 1, false);
+ private final Field f245_DFHPF1 = Field.alphanumeric(s_DFHAID, 12, 1, false);
+ private final Field f246_DFHPF2 = Field.alphanumeric(s_DFHAID, 13, 1, false);
+ private final Field f247_DFHPF3 = Field.alphanumeric(s_DFHAID, 14, 1, false);
+ private final Field f248_DFHPF4 = Field.alphanumeric(s_DFHAID, 15, 1, false);
+ private final Field f249_DFHPF5 = Field.alphanumeric(s_DFHAID, 16, 1, false);
+ private final Field f250_DFHPF6 = Field.alphanumeric(s_DFHAID, 17, 1, false);
+ private final Field f251_DFHPF7 = Field.alphanumeric(s_DFHAID, 18, 1, false);
+ private final Field f252_DFHPF8 = Field.alphanumeric(s_DFHAID, 19, 1, false);
+ private final Field f253_DFHPF9 = Field.alphanumeric(s_DFHAID, 20, 1, false);
+ private final Field f254_DFHPF10 = Field.alphanumeric(s_DFHAID, 21, 1, false);
+ private final Field f255_DFHPF11 = Field.alphanumeric(s_DFHAID, 22, 1, false);
+ private final Field f256_DFHPF12 = Field.alphanumeric(s_DFHAID, 23, 1, false);
+ private final Field f257_DFHPF13 = Field.alphanumeric(s_DFHAID, 24, 1, false);
+ private final Field f258_DFHPF14 = Field.alphanumeric(s_DFHAID, 25, 1, false);
+ private final Field f259_DFHPF15 = Field.alphanumeric(s_DFHAID, 26, 1, false);
+ private final Field f260_DFHPF16 = Field.alphanumeric(s_DFHAID, 27, 1, false);
+ private final Field f261_DFHPF17 = Field.alphanumeric(s_DFHAID, 28, 1, false);
+ private final Field f262_DFHPF18 = Field.alphanumeric(s_DFHAID, 29, 1, false);
+ private final Field f263_DFHPF19 = Field.alphanumeric(s_DFHAID, 30, 1, false);
+ private final Field f264_DFHPF20 = Field.alphanumeric(s_DFHAID, 31, 1, false);
+ private final Field f265_DFHPF21 = Field.alphanumeric(s_DFHAID, 32, 1, false);
+ private final Field f266_DFHPF22 = Field.alphanumeric(s_DFHAID, 33, 1, false);
+ private final Field f267_DFHPF23 = Field.alphanumeric(s_DFHAID, 34, 1, false);
+ private final Field f268_DFHPF24 = Field.alphanumeric(s_DFHAID, 35, 1, false);
+ private final Field f304_DFHGREEN = Field.alphanumeric(s_DFHBMSCA, 34, 1, false);
+ private final Field f337_DFHCOMMAREA = Field.group(s_DFHCOMMAREA, 0, 32767);
+ private final Field f340_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
+ private final Field f341_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
+ private final Field f342_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
+ private final Field f343_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
+ private final Field f344_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
+ private final Field f347_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
+ private final Field f348_EIBAID = Field.alphanumeric(s_DFHEIBLK, 26, 1, false);
+ private final Field f368_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
+ private final Field f369_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
+ private final Field f371_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
+ private String f2_WS_PGMNAME; // WS-PGMNAME PIC X(08)
+ private String f3_WS_TRANID; // WS-TRANID PIC X(04)
+ private String f5_WS_USRSEC_FILE; // WS-USRSEC-FILE PIC X(08)
+ private String f6_WS_ERR_FLG; // WS-ERR-FLG PIC X(01)
+ private long f7_WS_RESP_CD; // WS-RESP-CD PIC S9(09) BINARY
+ private long f8_WS_REAS_CD; // WS-REAS-CD PIC S9(09) BINARY
+ private String f180_CCDA_TITLE01; // CCDA-TITLE01 PIC X(40)
+ private String f181_CCDA_TITLE02; // CCDA-TITLE02 PIC X(40)
+ private String f182_CCDA_THANK_YOU; // CCDA-THANK-YOU PIC X(40)
+ private BigDecimal f209_WS_TIMESTAMP_DT_YYYY; // WS-TIMESTAMP-DT-YYYY PIC 9(04) DISPLAY
+ private BigDecimal f211_WS_TIMESTAMP_DT_MM; // WS-TIMESTAMP-DT-MM PIC 9(02) DISPLAY
+ private BigDecimal f213_WS_TIMESTAMP_DT_DD; // WS-TIMESTAMP-DT-DD PIC 9(02) DISPLAY
+ private BigDecimal f215_WS_TIMESTAMP_TM_HH; // WS-TIMESTAMP-TM-HH PIC 9(02) DISPLAY
+ private BigDecimal f217_WS_TIMESTAMP_TM_MM; // WS-TIMESTAMP-TM-MM PIC 9(02) DISPLAY
+ private BigDecimal f219_WS_TIMESTAMP_TM_SS; // WS-TIMESTAMP-TM-SS PIC 9(02) DISPLAY
+ private BigDecimal f221_WS_TIMESTAMP_TM_MS6; // WS-TIMESTAMP-TM-MS6 PIC 9(06) DISPLAY
+ private String f223_CCDA_MSG_THANK_YOU; // CCDA-MSG-THANK-YOU PIC X(50)
+ private String f224_CCDA_MSG_INVALID_KEY; // CCDA-MSG-INVALID-KEY PIC X(50)
private static String id_SecUserData(byte[] rec) {
Storage s = Storage.of(rec);
@@ -575,6 +369,14 @@ private static String id_SecUserData(byte[] rec) {
/** Writes the COMMAREA's bytes back into the object the task carries (a LINKed program's is its caller's). */
private Runnable caBack = () -> { };
+ /** The program ends because of an abend: a LINKed program's COMMAREA writes stay its caller's. */
+ private Goback abended() {
+ if (task.level() > 1) {
+ caBack.run();
+ }
+ return new Goback();
+ }
+
@SuppressWarnings("unchecked")
private DetCics.Store store(String name) {
return (DetCics.Store) stores.computeIfAbsent(name, n -> switch (n) {
@@ -603,16 +405,26 @@ private static int paragraph(String name) {
return i;
}
- /** A condition the command neither returned in RESP nor ignored: its HANDLE CONDITION label, or CICS's
- * default action -- an abend, to this program's HANDLE ABEND exit or ending the task. */
+ /** A condition the command did not return in RESP: its HANDLE CONDITION label, or -1 (go on) when IGNOREd
+ * (#4414); else CICS's default action -- -1 for one whose default is to ignore it (#4413: EOC); else the
+ * ERROR label (#4502: IBM, HANDLE CONDITION: "if the default action for such a condition terminates the
+ * task abnormally, and the condition ERROR has been specified, the action for ERROR is taken"); else an
+ * abend, to this program's HANDLE ABEND exit or ending the task. */
private int condition(String cond) {
Integer h = handlers.get(cond);
if (h != null) {
return h;
}
+ if (DetCics.ignoredByDefault(cond)) {
+ return -1;
+ }
+ Integer error = handlers.get("ERROR");
+ if (error != null) {
+ return error;
+ }
String label = task.abendOnCondition(cond);
if (label == null) {
- throw new Goback();
+ throw abended();
}
return paragraph(label);
}
@@ -668,6 +480,14 @@ private CarddemoCommarea out_CarddemoCommarea(Storage s, int base) {
return d;
}
+ /** #4270 (X23): DFHCOMMAREA's whole record again, with what the task left in its EIBCALEN bytes. */
+ private void caWhole(byte[] whole) {
+ if (s_DFHCOMMAREA.bytes != whole) {
+ System.arraycopy(s_DFHCOMMAREA.bytes, 0, whole, 0, s_DFHCOMMAREA.bytes.length);
+ s_DFHCOMMAREA.bytes = whole;
+ }
+ }
+
private final SecUserDataRepository secUserDataRepository;
private final DatasetResolver datasets;
@@ -679,390 +499,10 @@ public Cousr01cService(SecUserDataRepository secUserDataRepository, DatasetResol
this.datasets = datasets;
this.files = files;
this.clock = clock;
- fields0();
- fields1();
}
- private void fields0() {
- f1_WS_VARIABLES = Field.group(s_WS_VARIABLES, 0, 109);
- f2_WS_PGMNAME = Field.alphanumeric(s_WS_VARIABLES, 0, 8, false);
- f3_WS_TRANID = Field.alphanumeric(s_WS_VARIABLES, 8, 4, false);
- f4_WS_MESSAGE = Field.alphanumeric(s_WS_VARIABLES, 12, 80, false);
- f5_WS_USRSEC_FILE = Field.alphanumeric(s_WS_VARIABLES, 92, 8, false);
- f6_WS_ERR_FLG = Field.alphanumeric(s_WS_VARIABLES, 100, 1, false);
- f7_WS_RESP_CD = Field.binary(s_WS_VARIABLES, 101, 9, 0, true, false);
- f8_WS_REAS_CD = Field.binary(s_WS_VARIABLES, 105, 9, 0, true, false);
- f9_CARDDEMO_COMMAREA = Field.group(s_CARDDEMO_COMMAREA, 0, 160);
- f10_CDEMO_GENERAL_INFO = Field.group(s_CARDDEMO_COMMAREA, 0, 34);
- f11_CDEMO_FROM_TRANID = Field.alphanumeric(s_CARDDEMO_COMMAREA, 0, 4, false);
- f12_CDEMO_FROM_PROGRAM = Field.alphanumeric(s_CARDDEMO_COMMAREA, 4, 8, false);
- f13_CDEMO_TO_TRANID = Field.alphanumeric(s_CARDDEMO_COMMAREA, 12, 4, false);
- f14_CDEMO_TO_PROGRAM = Field.alphanumeric(s_CARDDEMO_COMMAREA, 16, 8, false);
- f15_CDEMO_USER_ID = Field.alphanumeric(s_CARDDEMO_COMMAREA, 24, 8, false);
- f16_CDEMO_USER_TYPE = Field.alphanumeric(s_CARDDEMO_COMMAREA, 32, 1, false);
- f17_CDEMO_PGM_CONTEXT = Field.zoned(s_CARDDEMO_COMMAREA, 33, 1, 0, false, false, false);
- f18_CDEMO_CUSTOMER_INFO = Field.group(s_CARDDEMO_COMMAREA, 34, 84);
- f19_CDEMO_CUST_ID = Field.zoned(s_CARDDEMO_COMMAREA, 34, 9, 0, false, false, false);
- f20_CDEMO_CUST_FNAME = Field.alphanumeric(s_CARDDEMO_COMMAREA, 43, 25, false);
- f21_CDEMO_CUST_MNAME = Field.alphanumeric(s_CARDDEMO_COMMAREA, 68, 25, false);
- f22_CDEMO_CUST_LNAME = Field.alphanumeric(s_CARDDEMO_COMMAREA, 93, 25, false);
- f23_CDEMO_ACCOUNT_INFO = Field.group(s_CARDDEMO_COMMAREA, 118, 12);
- f24_CDEMO_ACCT_ID = Field.zoned(s_CARDDEMO_COMMAREA, 118, 11, 0, false, false, false);
- f25_CDEMO_ACCT_STATUS = Field.alphanumeric(s_CARDDEMO_COMMAREA, 129, 1, false);
- f26_CDEMO_CARD_INFO = Field.group(s_CARDDEMO_COMMAREA, 130, 16);
- f27_CDEMO_CARD_NUM = Field.zoned(s_CARDDEMO_COMMAREA, 130, 16, 0, false, false, false);
- f28_CDEMO_MORE_INFO = Field.group(s_CARDDEMO_COMMAREA, 146, 14);
- f29_CDEMO_LAST_MAP = Field.alphanumeric(s_CARDDEMO_COMMAREA, 146, 7, false);
- f30_CDEMO_LAST_MAPSET = Field.alphanumeric(s_CARDDEMO_COMMAREA, 153, 7, false);
- f31_COUSR1AI = Field.group(s_COUSR1AI, 0, 339);
- f32_FILLER = Field.alphanumeric(s_COUSR1AI, 0, 12, false);
- f33_TRNNAMEL = Field.binary(s_COUSR1AI, 12, 4, 0, true, false);
- f34_TRNNAMEF = Field.alphanumeric(s_COUSR1AI, 14, 1, false);
- f35_FILLER = Field.group(s_COUSR1AI, 14, 1);
- f36_TRNNAMEA = Field.alphanumeric(s_COUSR1AI, 14, 1, false);
- f37_FILLER = Field.alphanumeric(s_COUSR1AI, 15, 4, false);
- f38_TRNNAMEI = Field.alphanumeric(s_COUSR1AI, 19, 4, false);
- f39_TITLE01L = Field.binary(s_COUSR1AI, 23, 4, 0, true, false);
- f40_TITLE01F = Field.alphanumeric(s_COUSR1AI, 25, 1, false);
- f41_FILLER = Field.group(s_COUSR1AI, 25, 1);
- f42_TITLE01A = Field.alphanumeric(s_COUSR1AI, 25, 1, false);
- f43_FILLER = Field.alphanumeric(s_COUSR1AI, 26, 4, false);
- f44_TITLE01I = Field.alphanumeric(s_COUSR1AI, 30, 40, false);
- f45_CURDATEL = Field.binary(s_COUSR1AI, 70, 4, 0, true, false);
- f46_CURDATEF = Field.alphanumeric(s_COUSR1AI, 72, 1, false);
- f47_FILLER = Field.group(s_COUSR1AI, 72, 1);
- f48_CURDATEA = Field.alphanumeric(s_COUSR1AI, 72, 1, false);
- f49_FILLER = Field.alphanumeric(s_COUSR1AI, 73, 4, false);
- f50_CURDATEI = Field.alphanumeric(s_COUSR1AI, 77, 8, false);
- f51_PGMNAMEL = Field.binary(s_COUSR1AI, 85, 4, 0, true, false);
- f52_PGMNAMEF = Field.alphanumeric(s_COUSR1AI, 87, 1, false);
- f53_FILLER = Field.group(s_COUSR1AI, 87, 1);
- f54_PGMNAMEA = Field.alphanumeric(s_COUSR1AI, 87, 1, false);
- f55_FILLER = Field.alphanumeric(s_COUSR1AI, 88, 4, false);
- f56_PGMNAMEI = Field.alphanumeric(s_COUSR1AI, 92, 8, false);
- f57_TITLE02L = Field.binary(s_COUSR1AI, 100, 4, 0, true, false);
- f58_TITLE02F = Field.alphanumeric(s_COUSR1AI, 102, 1, false);
- f59_FILLER = Field.group(s_COUSR1AI, 102, 1);
- f60_TITLE02A = Field.alphanumeric(s_COUSR1AI, 102, 1, false);
- f61_FILLER = Field.alphanumeric(s_COUSR1AI, 103, 4, false);
- f62_TITLE02I = Field.alphanumeric(s_COUSR1AI, 107, 40, false);
- f63_CURTIMEL = Field.binary(s_COUSR1AI, 147, 4, 0, true, false);
- f64_CURTIMEF = Field.alphanumeric(s_COUSR1AI, 149, 1, false);
- f65_FILLER = Field.group(s_COUSR1AI, 149, 1);
- f66_CURTIMEA = Field.alphanumeric(s_COUSR1AI, 149, 1, false);
- f67_FILLER = Field.alphanumeric(s_COUSR1AI, 150, 4, false);
- f68_CURTIMEI = Field.alphanumeric(s_COUSR1AI, 154, 8, false);
- f69_FNAMEL = Field.binary(s_COUSR1AI, 162, 4, 0, true, false);
- f70_FNAMEF = Field.alphanumeric(s_COUSR1AI, 164, 1, false);
- f71_FILLER = Field.group(s_COUSR1AI, 164, 1);
- f72_FNAMEA = Field.alphanumeric(s_COUSR1AI, 164, 1, false);
- f73_FILLER = Field.alphanumeric(s_COUSR1AI, 165, 4, false);
- f74_FNAMEI = Field.alphanumeric(s_COUSR1AI, 169, 20, false);
- f75_LNAMEL = Field.binary(s_COUSR1AI, 189, 4, 0, true, false);
- f76_LNAMEF = Field.alphanumeric(s_COUSR1AI, 191, 1, false);
- f77_FILLER = Field.group(s_COUSR1AI, 191, 1);
- f78_LNAMEA = Field.alphanumeric(s_COUSR1AI, 191, 1, false);
- f79_FILLER = Field.alphanumeric(s_COUSR1AI, 192, 4, false);
- f80_LNAMEI = Field.alphanumeric(s_COUSR1AI, 196, 20, false);
- f81_USERIDL = Field.binary(s_COUSR1AI, 216, 4, 0, true, false);
- f82_USERIDF = Field.alphanumeric(s_COUSR1AI, 218, 1, false);
- f83_FILLER = Field.group(s_COUSR1AI, 218, 1);
- f84_USERIDA = Field.alphanumeric(s_COUSR1AI, 218, 1, false);
- f85_FILLER = Field.alphanumeric(s_COUSR1AI, 219, 4, false);
- f86_USERIDI = Field.alphanumeric(s_COUSR1AI, 223, 8, false);
- f87_PASSWDL = Field.binary(s_COUSR1AI, 231, 4, 0, true, false);
- f88_PASSWDF = Field.alphanumeric(s_COUSR1AI, 233, 1, false);
- f89_FILLER = Field.group(s_COUSR1AI, 233, 1);
- f90_PASSWDA = Field.alphanumeric(s_COUSR1AI, 233, 1, false);
- f91_FILLER = Field.alphanumeric(s_COUSR1AI, 234, 4, false);
- f92_PASSWDI = Field.alphanumeric(s_COUSR1AI, 238, 8, false);
- f93_USRTYPEL = Field.binary(s_COUSR1AI, 246, 4, 0, true, false);
- f94_USRTYPEF = Field.alphanumeric(s_COUSR1AI, 248, 1, false);
- f95_FILLER = Field.group(s_COUSR1AI, 248, 1);
- f96_USRTYPEA = Field.alphanumeric(s_COUSR1AI, 248, 1, false);
- f97_FILLER = Field.alphanumeric(s_COUSR1AI, 249, 4, false);
- f98_USRTYPEI = Field.alphanumeric(s_COUSR1AI, 253, 1, false);
- f99_ERRMSGL = Field.binary(s_COUSR1AI, 254, 4, 0, true, false);
- f100_ERRMSGF = Field.alphanumeric(s_COUSR1AI, 256, 1, false);
- f101_FILLER = Field.group(s_COUSR1AI, 256, 1);
- f102_ERRMSGA = Field.alphanumeric(s_COUSR1AI, 256, 1, false);
- f103_FILLER = Field.alphanumeric(s_COUSR1AI, 257, 4, false);
- f104_ERRMSGI = Field.alphanumeric(s_COUSR1AI, 261, 78, false);
- f105_COUSR1AO = Field.group(s_COUSR1AI, 0, 339);
- f106_FILLER = Field.alphanumeric(s_COUSR1AI, 0, 12, false);
- f107_FILLER = Field.alphanumeric(s_COUSR1AI, 12, 3, false);
- f108_TRNNAMEC = Field.alphanumeric(s_COUSR1AI, 15, 1, false);
- f109_TRNNAMEP = Field.alphanumeric(s_COUSR1AI, 16, 1, false);
- f110_TRNNAMEH = Field.alphanumeric(s_COUSR1AI, 17, 1, false);
- f111_TRNNAMEV = Field.alphanumeric(s_COUSR1AI, 18, 1, false);
- f112_TRNNAMEO = Field.alphanumeric(s_COUSR1AI, 19, 4, false);
- f113_FILLER = Field.alphanumeric(s_COUSR1AI, 23, 3, false);
- f114_TITLE01C = Field.alphanumeric(s_COUSR1AI, 26, 1, false);
- f115_TITLE01P = Field.alphanumeric(s_COUSR1AI, 27, 1, false);
- f116_TITLE01H = Field.alphanumeric(s_COUSR1AI, 28, 1, false);
- f117_TITLE01V = Field.alphanumeric(s_COUSR1AI, 29, 1, false);
- f118_TITLE01O = Field.alphanumeric(s_COUSR1AI, 30, 40, false);
- f119_FILLER = Field.alphanumeric(s_COUSR1AI, 70, 3, false);
- f120_CURDATEC = Field.alphanumeric(s_COUSR1AI, 73, 1, false);
- f121_CURDATEP = Field.alphanumeric(s_COUSR1AI, 74, 1, false);
- f122_CURDATEH = Field.alphanumeric(s_COUSR1AI, 75, 1, false);
- f123_CURDATEV = Field.alphanumeric(s_COUSR1AI, 76, 1, false);
- f124_CURDATEO = Field.alphanumeric(s_COUSR1AI, 77, 8, false);
- f125_FILLER = Field.alphanumeric(s_COUSR1AI, 85, 3, false);
- f126_PGMNAMEC = Field.alphanumeric(s_COUSR1AI, 88, 1, false);
- f127_PGMNAMEP = Field.alphanumeric(s_COUSR1AI, 89, 1, false);
- f128_PGMNAMEH = Field.alphanumeric(s_COUSR1AI, 90, 1, false);
- f129_PGMNAMEV = Field.alphanumeric(s_COUSR1AI, 91, 1, false);
- f130_PGMNAMEO = Field.alphanumeric(s_COUSR1AI, 92, 8, false);
- f131_FILLER = Field.alphanumeric(s_COUSR1AI, 100, 3, false);
- f132_TITLE02C = Field.alphanumeric(s_COUSR1AI, 103, 1, false);
- f133_TITLE02P = Field.alphanumeric(s_COUSR1AI, 104, 1, false);
- f134_TITLE02H = Field.alphanumeric(s_COUSR1AI, 105, 1, false);
- f135_TITLE02V = Field.alphanumeric(s_COUSR1AI, 106, 1, false);
- f136_TITLE02O = Field.alphanumeric(s_COUSR1AI, 107, 40, false);
- f137_FILLER = Field.alphanumeric(s_COUSR1AI, 147, 3, false);
- f138_CURTIMEC = Field.alphanumeric(s_COUSR1AI, 150, 1, false);
- f139_CURTIMEP = Field.alphanumeric(s_COUSR1AI, 151, 1, false);
- f140_CURTIMEH = Field.alphanumeric(s_COUSR1AI, 152, 1, false);
- f141_CURTIMEV = Field.alphanumeric(s_COUSR1AI, 153, 1, false);
- f142_CURTIMEO = Field.alphanumeric(s_COUSR1AI, 154, 8, false);
- f143_FILLER = Field.alphanumeric(s_COUSR1AI, 162, 3, false);
- f144_FNAMEC = Field.alphanumeric(s_COUSR1AI, 165, 1, false);
- f145_FNAMEP = Field.alphanumeric(s_COUSR1AI, 166, 1, false);
- f146_FNAMEH = Field.alphanumeric(s_COUSR1AI, 167, 1, false);
- f147_FNAMEV = Field.alphanumeric(s_COUSR1AI, 168, 1, false);
- f148_FNAMEO = Field.alphanumeric(s_COUSR1AI, 169, 20, false);
- f149_FILLER = Field.alphanumeric(s_COUSR1AI, 189, 3, false);
- f150_LNAMEC = Field.alphanumeric(s_COUSR1AI, 192, 1, false);
- f151_LNAMEP = Field.alphanumeric(s_COUSR1AI, 193, 1, false);
- f152_LNAMEH = Field.alphanumeric(s_COUSR1AI, 194, 1, false);
- f153_LNAMEV = Field.alphanumeric(s_COUSR1AI, 195, 1, false);
- f154_LNAMEO = Field.alphanumeric(s_COUSR1AI, 196, 20, false);
- f155_FILLER = Field.alphanumeric(s_COUSR1AI, 216, 3, false);
- f156_USERIDC = Field.alphanumeric(s_COUSR1AI, 219, 1, false);
- f157_USERIDP = Field.alphanumeric(s_COUSR1AI, 220, 1, false);
- f158_USERIDH = Field.alphanumeric(s_COUSR1AI, 221, 1, false);
- f159_USERIDV = Field.alphanumeric(s_COUSR1AI, 222, 1, false);
- f160_USERIDO = Field.alphanumeric(s_COUSR1AI, 223, 8, false);
- f161_FILLER = Field.alphanumeric(s_COUSR1AI, 231, 3, false);
- f162_PASSWDC = Field.alphanumeric(s_COUSR1AI, 234, 1, false);
- f163_PASSWDP = Field.alphanumeric(s_COUSR1AI, 235, 1, false);
- f164_PASSWDH = Field.alphanumeric(s_COUSR1AI, 236, 1, false);
- f165_PASSWDV = Field.alphanumeric(s_COUSR1AI, 237, 1, false);
- f166_PASSWDO = Field.alphanumeric(s_COUSR1AI, 238, 8, false);
- f167_FILLER = Field.alphanumeric(s_COUSR1AI, 246, 3, false);
- f168_USRTYPEC = Field.alphanumeric(s_COUSR1AI, 249, 1, false);
- f169_USRTYPEP = Field.alphanumeric(s_COUSR1AI, 250, 1, false);
- f170_USRTYPEH = Field.alphanumeric(s_COUSR1AI, 251, 1, false);
- f171_USRTYPEV = Field.alphanumeric(s_COUSR1AI, 252, 1, false);
- f172_USRTYPEO = Field.alphanumeric(s_COUSR1AI, 253, 1, false);
- f173_FILLER = Field.alphanumeric(s_COUSR1AI, 254, 3, false);
- f174_ERRMSGC = Field.alphanumeric(s_COUSR1AI, 257, 1, false);
- f175_ERRMSGP = Field.alphanumeric(s_COUSR1AI, 258, 1, false);
- f176_ERRMSGH = Field.alphanumeric(s_COUSR1AI, 259, 1, false);
- f177_ERRMSGV = Field.alphanumeric(s_COUSR1AI, 260, 1, false);
- f178_ERRMSGO = Field.alphanumeric(s_COUSR1AI, 261, 78, false);
- f179_CCDA_SCREEN_TITLE = Field.group(s_CCDA_SCREEN_TITLE, 0, 120);
- f180_CCDA_TITLE01 = Field.alphanumeric(s_CCDA_SCREEN_TITLE, 0, 40, false);
- f181_CCDA_TITLE02 = Field.alphanumeric(s_CCDA_SCREEN_TITLE, 40, 40, false);
- f182_CCDA_THANK_YOU = Field.alphanumeric(s_CCDA_SCREEN_TITLE, 80, 40, false);
- f183_WS_DATE_TIME = Field.group(s_WS_DATE_TIME, 0, 58);
- f184_WS_CURDATE_DATA = Field.group(s_WS_DATE_TIME, 0, 16);
- f185_WS_CURDATE = Field.group(s_WS_DATE_TIME, 0, 8);
- f186_WS_CURDATE_YEAR = Field.zoned(s_WS_DATE_TIME, 0, 4, 0, false, false, false);
- f187_WS_CURDATE_MONTH = Field.zoned(s_WS_DATE_TIME, 4, 2, 0, false, false, false);
- f188_WS_CURDATE_DAY = Field.zoned(s_WS_DATE_TIME, 6, 2, 0, false, false, false);
- f189_WS_CURDATE_N = Field.zoned(s_WS_DATE_TIME, 0, 8, 0, false, false, false);
- f190_WS_CURTIME = Field.group(s_WS_DATE_TIME, 8, 8);
- f191_WS_CURTIME_HOURS = Field.zoned(s_WS_DATE_TIME, 8, 2, 0, false, false, false);
- f192_WS_CURTIME_MINUTE = Field.zoned(s_WS_DATE_TIME, 10, 2, 0, false, false, false);
- f193_WS_CURTIME_SECOND = Field.zoned(s_WS_DATE_TIME, 12, 2, 0, false, false, false);
- f194_WS_CURTIME_MILSEC = Field.zoned(s_WS_DATE_TIME, 14, 2, 0, false, false, false);
- f195_WS_CURTIME_N = Field.zoned(s_WS_DATE_TIME, 8, 8, 0, false, false, false);
- f196_WS_CURDATE_MM_DD_YY = Field.group(s_WS_DATE_TIME, 16, 8);
- f197_WS_CURDATE_MM = Field.zoned(s_WS_DATE_TIME, 16, 2, 0, false, false, false);
- f198_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 18, 1, false);
- f199_WS_CURDATE_DD = Field.zoned(s_WS_DATE_TIME, 19, 2, 0, false, false, false);
- f200_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 21, 1, false);
- f201_WS_CURDATE_YY = Field.zoned(s_WS_DATE_TIME, 22, 2, 0, false, false, false);
- f202_WS_CURTIME_HH_MM_SS = Field.group(s_WS_DATE_TIME, 24, 8);
- f203_WS_CURTIME_HH = Field.zoned(s_WS_DATE_TIME, 24, 2, 0, false, false, false);
- f204_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 26, 1, false);
- f205_WS_CURTIME_MM = Field.zoned(s_WS_DATE_TIME, 27, 2, 0, false, false, false);
- f206_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 29, 1, false);
- f207_WS_CURTIME_SS = Field.zoned(s_WS_DATE_TIME, 30, 2, 0, false, false, false);
- f208_WS_TIMESTAMP = Field.group(s_WS_DATE_TIME, 32, 26);
- f209_WS_TIMESTAMP_DT_YYYY = Field.zoned(s_WS_DATE_TIME, 32, 4, 0, false, false, false);
- f210_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 36, 1, false);
- f211_WS_TIMESTAMP_DT_MM = Field.zoned(s_WS_DATE_TIME, 37, 2, 0, false, false, false);
- f212_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 39, 1, false);
- f213_WS_TIMESTAMP_DT_DD = Field.zoned(s_WS_DATE_TIME, 40, 2, 0, false, false, false);
- f214_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 42, 1, false);
- f215_WS_TIMESTAMP_TM_HH = Field.zoned(s_WS_DATE_TIME, 43, 2, 0, false, false, false);
- f216_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 45, 1, false);
- f217_WS_TIMESTAMP_TM_MM = Field.zoned(s_WS_DATE_TIME, 46, 2, 0, false, false, false);
- f218_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 48, 1, false);
- f219_WS_TIMESTAMP_TM_SS = Field.zoned(s_WS_DATE_TIME, 49, 2, 0, false, false, false);
- f220_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 51, 1, false);
- f221_WS_TIMESTAMP_TM_MS6 = Field.zoned(s_WS_DATE_TIME, 52, 6, 0, false, false, false);
- f222_CCDA_COMMON_MESSAGES = Field.group(s_CCDA_COMMON_MESSAGES, 0, 100);
- f223_CCDA_MSG_THANK_YOU = Field.alphanumeric(s_CCDA_COMMON_MESSAGES, 0, 50, false);
- f224_CCDA_MSG_INVALID_KEY = Field.alphanumeric(s_CCDA_COMMON_MESSAGES, 50, 50, false);
- f225_SEC_USER_DATA = Field.group(s_SEC_USER_DATA, 0, 80);
- f226_SEC_USR_ID = Field.alphanumeric(s_SEC_USER_DATA, 0, 8, false);
- f227_SEC_USR_FNAME = Field.alphanumeric(s_SEC_USER_DATA, 8, 20, false);
- f228_SEC_USR_LNAME = Field.alphanumeric(s_SEC_USER_DATA, 28, 20, false);
- f229_SEC_USR_PWD = Field.alphanumeric(s_SEC_USER_DATA, 48, 8, false);
- f230_SEC_USR_TYPE = Field.alphanumeric(s_SEC_USER_DATA, 56, 1, false);
- f231_SEC_USR_FILLER = Field.alphanumeric(s_SEC_USER_DATA, 57, 23, false);
- f232_DFHAID = Field.group(s_DFHAID, 0, 36);
- f233_DFHNULL = Field.alphanumeric(s_DFHAID, 0, 1, false);
- f234_DFHENTER = Field.alphanumeric(s_DFHAID, 1, 1, false);
- f235_DFHCLEAR = Field.alphanumeric(s_DFHAID, 2, 1, false);
- f236_DFHCLRP = Field.alphanumeric(s_DFHAID, 3, 1, false);
- f237_DFHPEN = Field.alphanumeric(s_DFHAID, 4, 1, false);
- f238_DFHOPID = Field.alphanumeric(s_DFHAID, 5, 1, false);
- f239_DFHMSRE = Field.alphanumeric(s_DFHAID, 6, 1, false);
- f240_DFHSTRF = Field.alphanumeric(s_DFHAID, 7, 1, false);
- f241_DFHTRIG = Field.alphanumeric(s_DFHAID, 8, 1, false);
- f242_DFHPA1 = Field.alphanumeric(s_DFHAID, 9, 1, false);
- f243_DFHPA2 = Field.alphanumeric(s_DFHAID, 10, 1, false);
- f244_DFHPA3 = Field.alphanumeric(s_DFHAID, 11, 1, false);
- f245_DFHPF1 = Field.alphanumeric(s_DFHAID, 12, 1, false);
- f246_DFHPF2 = Field.alphanumeric(s_DFHAID, 13, 1, false);
- f247_DFHPF3 = Field.alphanumeric(s_DFHAID, 14, 1, false);
- f248_DFHPF4 = Field.alphanumeric(s_DFHAID, 15, 1, false);
- f249_DFHPF5 = Field.alphanumeric(s_DFHAID, 16, 1, false);
- f250_DFHPF6 = Field.alphanumeric(s_DFHAID, 17, 1, false);
- f251_DFHPF7 = Field.alphanumeric(s_DFHAID, 18, 1, false);
- f252_DFHPF8 = Field.alphanumeric(s_DFHAID, 19, 1, false);
- f253_DFHPF9 = Field.alphanumeric(s_DFHAID, 20, 1, false);
- f254_DFHPF10 = Field.alphanumeric(s_DFHAID, 21, 1, false);
- f255_DFHPF11 = Field.alphanumeric(s_DFHAID, 22, 1, false);
- f256_DFHPF12 = Field.alphanumeric(s_DFHAID, 23, 1, false);
- f257_DFHPF13 = Field.alphanumeric(s_DFHAID, 24, 1, false);
- f258_DFHPF14 = Field.alphanumeric(s_DFHAID, 25, 1, false);
- f259_DFHPF15 = Field.alphanumeric(s_DFHAID, 26, 1, false);
- f260_DFHPF16 = Field.alphanumeric(s_DFHAID, 27, 1, false);
- f261_DFHPF17 = Field.alphanumeric(s_DFHAID, 28, 1, false);
- f262_DFHPF18 = Field.alphanumeric(s_DFHAID, 29, 1, false);
- f263_DFHPF19 = Field.alphanumeric(s_DFHAID, 30, 1, false);
- f264_DFHPF20 = Field.alphanumeric(s_DFHAID, 31, 1, false);
- f265_DFHPF21 = Field.alphanumeric(s_DFHAID, 32, 1, false);
- f266_DFHPF22 = Field.alphanumeric(s_DFHAID, 33, 1, false);
- f267_DFHPF23 = Field.alphanumeric(s_DFHAID, 34, 1, false);
- f268_DFHPF24 = Field.alphanumeric(s_DFHAID, 35, 1, false);
- f269_DFHBMSCA = Field.group(s_DFHBMSCA, 0, 67);
- f270_DFHBMPEM = Field.alphanumeric(s_DFHBMSCA, 0, 1, false);
- f271_DFHBMPNL = Field.alphanumeric(s_DFHBMSCA, 1, 1, false);
- f272_DFHBMPFF = Field.alphanumeric(s_DFHBMSCA, 2, 1, false);
- f273_DFHBMPCR = Field.alphanumeric(s_DFHBMSCA, 3, 1, false);
- f274_DFHBMASK = Field.alphanumeric(s_DFHBMSCA, 4, 1, false);
- f275_DFHBMUNP = Field.alphanumeric(s_DFHBMSCA, 5, 1, false);
- f276_DFHBMUNN = Field.alphanumeric(s_DFHBMSCA, 6, 1, false);
- f277_DFHBMPRO = Field.alphanumeric(s_DFHBMSCA, 7, 1, false);
- f278_DFHBMBRY = Field.alphanumeric(s_DFHBMSCA, 8, 1, false);
- f279_DFHBMDAR = Field.alphanumeric(s_DFHBMSCA, 9, 1, false);
- f280_DFHBMFSE = Field.alphanumeric(s_DFHBMSCA, 10, 1, false);
- f281_DFHBMPRF = Field.alphanumeric(s_DFHBMSCA, 11, 1, false);
- f282_DFHBMASF = Field.alphanumeric(s_DFHBMSCA, 12, 1, false);
- f283_DFHBMASB = Field.alphanumeric(s_DFHBMSCA, 13, 1, false);
- f284_DFHBMEOF = Field.alphanumeric(s_DFHBMSCA, 14, 1, false);
- f285_DFHBMCUR = Field.alphanumeric(s_DFHBMSCA, 15, 1, false);
- f286_DFHBMEC = Field.alphanumeric(s_DFHBMSCA, 16, 1, false);
- f287_DFHBMFLG = Field.alphanumeric(s_DFHBMSCA, 17, 1, false);
- f288_DFHBMDET = Field.alphanumeric(s_DFHBMSCA, 18, 1, false);
- f289_DFHSA = Field.alphanumeric(s_DFHBMSCA, 19, 1, false);
- f290_DFHCOLOR = Field.alphanumeric(s_DFHBMSCA, 20, 1, false);
- f291_DFHPS = Field.alphanumeric(s_DFHBMSCA, 21, 1, false);
- f292_DFHHLT = Field.alphanumeric(s_DFHBMSCA, 22, 1, false);
- f293_DFH3270 = Field.alphanumeric(s_DFHBMSCA, 23, 1, false);
- f294_DFHVAL = Field.alphanumeric(s_DFHBMSCA, 24, 1, false);
- f295_DFHOUTLN = Field.alphanumeric(s_DFHBMSCA, 25, 1, false);
- f296_DFHBKTRN = Field.alphanumeric(s_DFHBMSCA, 26, 1, false);
- f297_DFHALL = Field.alphanumeric(s_DFHBMSCA, 27, 1, false);
- f298_DFHERROR = Field.alphanumeric(s_DFHBMSCA, 28, 1, false);
- f299_DFHDFT = Field.alphanumeric(s_DFHBMSCA, 29, 1, false);
- f300_DFHDFCOL = Field.alphanumeric(s_DFHBMSCA, 30, 1, false);
- }
-
- private void fields1() {
- f301_DFHBLUE = Field.alphanumeric(s_DFHBMSCA, 31, 1, false);
- f302_DFHRED = Field.alphanumeric(s_DFHBMSCA, 32, 1, false);
- f303_DFHPINK = Field.alphanumeric(s_DFHBMSCA, 33, 1, false);
- f304_DFHGREEN = Field.alphanumeric(s_DFHBMSCA, 34, 1, false);
- f305_DFHTURQ = Field.alphanumeric(s_DFHBMSCA, 35, 1, false);
- f306_DFHYELLO = Field.alphanumeric(s_DFHBMSCA, 36, 1, false);
- f307_DFHNEUTR = Field.alphanumeric(s_DFHBMSCA, 37, 1, false);
- f308_DFHBASE = Field.alphanumeric(s_DFHBMSCA, 38, 1, false);
- f309_DFHDFHI = Field.alphanumeric(s_DFHBMSCA, 39, 1, false);
- f310_DFHBLINK = Field.alphanumeric(s_DFHBMSCA, 40, 1, false);
- f311_DFHREVRS = Field.alphanumeric(s_DFHBMSCA, 41, 1, false);
- f312_DFHUNDLN = Field.alphanumeric(s_DFHBMSCA, 42, 1, false);
- f313_DFHMFIL = Field.alphanumeric(s_DFHBMSCA, 43, 1, false);
- f314_DFHMENT = Field.alphanumeric(s_DFHBMSCA, 44, 1, false);
- f315_DFHMFE = Field.alphanumeric(s_DFHBMSCA, 45, 1, false);
- f316_DFHUNNOD = Field.alphanumeric(s_DFHBMSCA, 46, 1, false);
- f317_DFHUNIMD = Field.alphanumeric(s_DFHBMSCA, 47, 1, false);
- f318_DFHUNNUM = Field.alphanumeric(s_DFHBMSCA, 48, 1, false);
- f319_DFHUNNUB = Field.alphanumeric(s_DFHBMSCA, 49, 1, false);
- f320_DFHUNINT = Field.alphanumeric(s_DFHBMSCA, 50, 1, false);
- f321_DFHUNNON = Field.alphanumeric(s_DFHBMSCA, 51, 1, false);
- f322_DFHPROTI = Field.alphanumeric(s_DFHBMSCA, 52, 1, false);
- f323_DFHPROTN = Field.alphanumeric(s_DFHBMSCA, 53, 1, false);
- f324_DFHMT = Field.alphanumeric(s_DFHBMSCA, 54, 1, false);
- f325_DFHMFT = Field.alphanumeric(s_DFHBMSCA, 55, 1, false);
- f326_DFHMET = Field.alphanumeric(s_DFHBMSCA, 56, 1, false);
- f327_DFHMFET = Field.alphanumeric(s_DFHBMSCA, 57, 1, false);
- f328_DFHDFFR = Field.alphanumeric(s_DFHBMSCA, 58, 1, false);
- f329_DFHUNDER = Field.alphanumeric(s_DFHBMSCA, 59, 1, false);
- f330_DFHRIGHT = Field.alphanumeric(s_DFHBMSCA, 60, 1, false);
- f331_DFHOVER = Field.alphanumeric(s_DFHBMSCA, 61, 1, false);
- f332_DFHLEFT = Field.alphanumeric(s_DFHBMSCA, 62, 1, false);
- f333_DFHBOX = Field.alphanumeric(s_DFHBMSCA, 63, 1, false);
- f334_DFHSOSI = Field.alphanumeric(s_DFHBMSCA, 64, 1, false);
- f335_DFHTRANS = Field.alphanumeric(s_DFHBMSCA, 65, 1, false);
- f336_DFHOPAQ = Field.alphanumeric(s_DFHBMSCA, 66, 1, false);
- f337_DFHCOMMAREA = Field.group(s_DFHCOMMAREA, 0, 32767);
- f338_LK_COMMAREA = Field.alphanumeric(s_DFHCOMMAREA, 0, 1, false);
- f339_DFHEIBLK = Field.group(s_DFHEIBLK, 0, 85);
- f340_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
- f341_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
- f342_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
- f343_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
- f344_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
- f345_DFHEIGDI = Field.binary(s_DFHEIBLK, 20, 4, 0, true, false);
- f346_EIBCPOSN = Field.binary(s_DFHEIBLK, 22, 4, 0, true, false);
- f347_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
- f348_EIBAID = Field.alphanumeric(s_DFHEIBLK, 26, 1, false);
- f349_EIBFN = Field.alphanumeric(s_DFHEIBLK, 27, 2, false);
- f350_EIBRCODE = Field.alphanumeric(s_DFHEIBLK, 29, 6, false);
- f351_EIBDS = Field.alphanumeric(s_DFHEIBLK, 35, 8, false);
- f352_EIBREQID = Field.alphanumeric(s_DFHEIBLK, 43, 8, false);
- f353_EIBRSRCE = Field.alphanumeric(s_DFHEIBLK, 51, 8, false);
- f354_EIBSYNC = Field.alphanumeric(s_DFHEIBLK, 59, 1, false);
- f355_EIBFREE = Field.alphanumeric(s_DFHEIBLK, 60, 1, false);
- f356_EIBRECV = Field.alphanumeric(s_DFHEIBLK, 61, 1, false);
- f357_EIBSEND = Field.alphanumeric(s_DFHEIBLK, 62, 1, false);
- f358_EIBATT = Field.alphanumeric(s_DFHEIBLK, 63, 1, false);
- f359_EIBEOC = Field.alphanumeric(s_DFHEIBLK, 64, 1, false);
- f360_EIBFMH = Field.alphanumeric(s_DFHEIBLK, 65, 1, false);
- f361_EIBCOMPL = Field.alphanumeric(s_DFHEIBLK, 66, 1, false);
- f362_EIBSIG = Field.alphanumeric(s_DFHEIBLK, 67, 1, false);
- f363_EIBCONF = Field.alphanumeric(s_DFHEIBLK, 68, 1, false);
- f364_EIBERR = Field.alphanumeric(s_DFHEIBLK, 69, 1, false);
- f365_EIBERRCD = Field.alphanumeric(s_DFHEIBLK, 70, 4, false);
- f366_EIBSYNRB = Field.alphanumeric(s_DFHEIBLK, 74, 1, false);
- f367_EIBNODAT = Field.alphanumeric(s_DFHEIBLK, 75, 1, false);
- f368_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
- f369_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
- f370_EIBRLDBK = Field.alphanumeric(s_DFHEIBLK, 84, 1, false);
- f371_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
- }
-
- /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
- * initial storage; RETURN-CODE. */
- public int runProgram() {
+ /** WORKING-STORAGE (and every storage) as its VALUE clauses set it: each entry point starts from here. */
+ private void initialState() {
System.arraycopy(IMAGE_s_WS_VARIABLES, 0, s_WS_VARIABLES.bytes, 0, IMAGE_s_WS_VARIABLES.length);
System.arraycopy(IMAGE_s_CARDDEMO_COMMAREA, 0, s_CARDDEMO_COMMAREA.bytes, 0, IMAGE_s_CARDDEMO_COMMAREA.length);
System.arraycopy(IMAGE_s_COUSR1AI, 0, s_COUSR1AI.bytes, 0, IMAGE_s_COUSR1AI.length);
@@ -1075,6 +515,30 @@ public int runProgram() {
System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ f2_WS_PGMNAME = "COUSR01C";
+ f3_WS_TRANID = "CU01";
+ f5_WS_USRSEC_FILE = "USRSEC ";
+ f6_WS_ERR_FLG = "N";
+ f7_WS_RESP_CD = 0L;
+ f8_WS_REAS_CD = 0L;
+ f180_CCDA_TITLE01 = " AWS Mainframe Modernization ";
+ f181_CCDA_TITLE02 = " CardDemo ";
+ f182_CCDA_THANK_YOU = "Thank you for using CCDA application... ";
+ f209_WS_TIMESTAMP_DT_YYYY = new BigDecimal("0");
+ f211_WS_TIMESTAMP_DT_MM = new BigDecimal("0");
+ f213_WS_TIMESTAMP_DT_DD = new BigDecimal("0");
+ f215_WS_TIMESTAMP_TM_HH = new BigDecimal("0");
+ f217_WS_TIMESTAMP_TM_MM = new BigDecimal("0");
+ f219_WS_TIMESTAMP_TM_SS = new BigDecimal("0");
+ f221_WS_TIMESTAMP_TM_MS6 = new BigDecimal("0");
+ f223_CCDA_MSG_THANK_YOU = "Thank you for using CardDemo application... ";
+ f224_CCDA_MSG_INVALID_KEY = "Invalid key pressed. Please see below... ";
+ }
+
+ /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
+ * initial storage; RETURN-CODE. */
+ public int runProgram() {
+ initialState();
performDepth = 0;
try {
perform(0, 8);
@@ -1084,31 +548,19 @@ public int runProgram() {
return Cobol.num(f371_GG_RETURN_CODE, CS).intValue();
}
- public void executeCousr01c() {
- runBatch(List.of(), null);
- }
-
/** One task of the program: the EIB and COMMAREA from the task, then the PROCEDURE DIVISION. */
public void runTask(CicsTask task) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
this.task = task;
caBack = () -> { };
handlers.clear();
heldKey.clear();
- System.arraycopy(IMAGE_s_WS_VARIABLES, 0, s_WS_VARIABLES.bytes, 0, IMAGE_s_WS_VARIABLES.length);
- System.arraycopy(IMAGE_s_CARDDEMO_COMMAREA, 0, s_CARDDEMO_COMMAREA.bytes, 0, IMAGE_s_CARDDEMO_COMMAREA.length);
- System.arraycopy(IMAGE_s_COUSR1AI, 0, s_COUSR1AI.bytes, 0, IMAGE_s_COUSR1AI.length);
- System.arraycopy(IMAGE_s_CCDA_SCREEN_TITLE, 0, s_CCDA_SCREEN_TITLE.bytes, 0, IMAGE_s_CCDA_SCREEN_TITLE.length);
- System.arraycopy(IMAGE_s_WS_DATE_TIME, 0, s_WS_DATE_TIME.bytes, 0, IMAGE_s_WS_DATE_TIME.length);
- System.arraycopy(IMAGE_s_CCDA_COMMON_MESSAGES, 0, s_CCDA_COMMON_MESSAGES.bytes, 0, IMAGE_s_CCDA_COMMON_MESSAGES.length);
- System.arraycopy(IMAGE_s_SEC_USER_DATA, 0, s_SEC_USER_DATA.bytes, 0, IMAGE_s_SEC_USER_DATA.length);
- System.arraycopy(IMAGE_s_DFHAID, 0, s_DFHAID.bytes, 0, IMAGE_s_DFHAID.length);
- System.arraycopy(IMAGE_s_DFHBMSCA, 0, s_DFHBMSCA.bytes, 0, IMAGE_s_DFHBMSCA.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
Cobol.move(task.transid(), f342_EIBTRNID, CS);
+ Cobol.move(task.termid() == null ? "" : task.termid(), f344_EIBTRMID, CS);
+ Cobol.store(f343_EIBTASKN, BigDecimal.valueOf(task.taskNumber()), false, CS);
java.time.LocalDateTime now = task.now();
Cobol.store(f341_EIBDATE, BigDecimal.valueOf((now.getYear() - 1900) * 1000L + now.getDayOfYear()), false, CS);
Cobol.store(f340_EIBTIME, BigDecimal.valueOf(now.getHour() * 10000L + now.getMinute() * 100L + now.getSecond()), false, CS);
@@ -1158,11 +610,47 @@ public void runTask(CicsTask task) {
caBack = () -> fill_CarddemoCommarea(x, s_DFHCOMMAREA, 0);
calen = cx(task, 160);
}
+ s_DFHCOMMAREA.beyond = null;
+ if (ca instanceof byte[] cb0) {
+ byte[] cb = DetCics.commareaIn(cb0, CS);
+ System.arraycopy(cb, 0, s_DFHCOMMAREA.bytes, 0, Math.min(cb.length, s_DFHCOMMAREA.bytes.length));
+ if (cb.length > s_DFHCOMMAREA.bytes.length) {
+ s_DFHCOMMAREA.beyond = java.util.Arrays.copyOfRange(cb, s_DFHCOMMAREA.bytes.length, cb.length);
+ }
+ calen = cx(task, cb.length);
+ }
+ byte[] raw = task.linkArea();
+ if (raw != null) {
+ System.arraycopy(raw, 0, s_DFHCOMMAREA.bytes, 0, Math.min(raw.length, s_DFHCOMMAREA.bytes.length));
+ int keep = s_DFHCOMMAREA.bytes.length;
+ s_DFHCOMMAREA.beyond = raw.length > keep ? java.util.Arrays.copyOfRange(raw, keep, raw.length) : null;
+ Runnable typed = caBack;
+ caBack = () -> { typed.run(); System.arraycopy(s_DFHCOMMAREA.bytes, 0, raw, 0, Math.min(raw.length, keep)); if (s_DFHCOMMAREA.beyond != null) { System.arraycopy(s_DFHCOMMAREA.beyond, 0, raw, keep, raw.length - keep); } };
+ }
+ byte[] caWhole = null;
+ if (task.exactCommarea() && calen < s_DFHCOMMAREA.bytes.length) {
+ caWhole = s_DFHCOMMAREA.bytes;
+ s_DFHCOMMAREA.bytes = java.util.Arrays.copyOf(caWhole, calen);
+ Runnable typed = caBack;
+ byte[] whole = caWhole;
+ caBack = () -> { caWhole(whole); typed.run(); };
+ }
Cobol.store(f347_EIBCALEN, BigDecimal.valueOf(calen), false, CS);
try {
- perform(0, 8);
- } catch (Goback g) {
- // RETURN / XCTL / an abend ended the program
+ try {
+ perform(0, 8);
+ } catch (Goback g) {
+ // RETURN / XCTL / an abend ended the program
+ }
+ } catch (IndexOutOfBoundsException e) {
+ if (caWhole == null) {
+ throw e;
+ }
+ throw new DetCics.PastFrom("COMMAREA past EIBCALEN (" + calen + " bytes): not modelled");
+ } finally {
+ if (caWhole != null) {
+ caWhole(caWhole);
+ }
}
if (!task.ended()) {
caBack.run();
@@ -1170,15 +658,22 @@ public void runTask(CicsTask task) {
}
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
- public CarddemoCommarea handleTransaction(String transid, CarddemoCommarea request) {
- throw new UnsupportedOperationException("handleTransaction: this port runs as runTask");
+ public Object handleTransaction(String transid, CarddemoCommarea request) {
+ CicsTask.Region region = CicsTask.region();
+ CicsTask task = region.transaction(transid, request);
+ region.run(task, "COUSR01C", this::runTask);
+ return task.returned(Object.class);
}
public CarddemoCommarea handleLink(CarddemoCommarea request) {
- throw new UnsupportedOperationException("handleLink: this port runs as runTask");
+ CicsTask.Region region = CicsTask.region();
+ CicsTask task = region.linked("COUSR01C", request);
+ region.run(task, "COUSR01C", this::runTask);
+ return request;
}
@@ -1198,19 +693,9 @@ private static Dd dd(List dds, String name) {
/** The batch entry. */
public int runBatch(List dds, String parm) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
- System.arraycopy(IMAGE_s_WS_VARIABLES, 0, s_WS_VARIABLES.bytes, 0, IMAGE_s_WS_VARIABLES.length);
- System.arraycopy(IMAGE_s_CARDDEMO_COMMAREA, 0, s_CARDDEMO_COMMAREA.bytes, 0, IMAGE_s_CARDDEMO_COMMAREA.length);
- System.arraycopy(IMAGE_s_COUSR1AI, 0, s_COUSR1AI.bytes, 0, IMAGE_s_COUSR1AI.length);
- System.arraycopy(IMAGE_s_CCDA_SCREEN_TITLE, 0, s_CCDA_SCREEN_TITLE.bytes, 0, IMAGE_s_CCDA_SCREEN_TITLE.length);
- System.arraycopy(IMAGE_s_WS_DATE_TIME, 0, s_WS_DATE_TIME.bytes, 0, IMAGE_s_WS_DATE_TIME.length);
- System.arraycopy(IMAGE_s_CCDA_COMMON_MESSAGES, 0, s_CCDA_COMMON_MESSAGES.bytes, 0, IMAGE_s_CCDA_COMMON_MESSAGES.length);
- System.arraycopy(IMAGE_s_SEC_USER_DATA, 0, s_SEC_USER_DATA.bytes, 0, IMAGE_s_SEC_USER_DATA.length);
- System.arraycopy(IMAGE_s_DFHAID, 0, s_DFHAID.bytes, 0, IMAGE_s_DFHAID.length);
- System.arraycopy(IMAGE_s_DFHBMSCA, 0, s_DFHBMSCA.bytes, 0, IMAGE_s_DFHBMSCA.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
try {
perform(0, 8);
} catch (Goback g) {
@@ -1219,6 +704,7 @@ public int runBatch(List dds, String parm) {
return Cobol.num(f371_GG_RETURN_CODE, CS).intValue();
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
@@ -1294,7 +780,7 @@ private int run(int i) {
/** MAIN-PARA. */
private int p0() {
// SET ERR-FLG-OFF TO TRUE
- Cobol.move("N", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "N";
// MOVE SPACES TO WS-MESSAGE ERRMSGO OF COUSR1AO
Cobol.moveFigurative(Figurative.SPACES, f4_WS_MESSAGE, CS);
Cobol.moveFigurative(Figurative.SPACES, f178_ERRMSGO, CS);
@@ -1308,7 +794,7 @@ private int p0() {
// MOVE DFHCOMMAREA(1:EIBCALEN) TO CARDDEMO-COMMAREA
Cobol.move(f337_DFHCOMMAREA.ref(1, Integer.valueOf(Cobol.num(f347_EIBCALEN, CS).intValue())), f9_CARDDEMO_COMMAREA, CS);
// IF NOT CDEMO-PGM-REENTER
- if (!(Cobol.compare(f17_CDEMO_PGM_CONTEXT, D1, CS) == 0)) {
+ if (!(isCdemoPgmReenter())) {
// SET CDEMO-PGM-REENTER TO TRUE
Cobol.move(D1, f17_CDEMO_PGM_CONTEXT, CS);
// MOVE LOW-VALUES TO COUSR1AO
@@ -1334,7 +820,7 @@ private int p0() {
perform(7, 7);
} else if (true) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE -1 TO FNAMEL OF COUSR1AI
Cobol.move(DM1, f69_FNAMEL, CS);
// MOVE CCDA-MSG-INVALID-KEY TO WS-MESSAGE
@@ -1346,7 +832,7 @@ private int p0() {
}
// EXEC CICS RETURN TRANSID (WS-TRANID) COMMAREA (CARDDEMO-COMMAREA) END-EXEC
caBack.run();
- task.returnTransid(Cobol.text(f3_WS_TRANID, CS).strip(), out_CarddemoCommarea(f9_CARDDEMO_COMMAREA.storage(), f9_CARDDEMO_COMMAREA.offset()), null);
+ task.returnTransid(f3_WS_TRANID.strip(), out_CarddemoCommarea(f9_CARDDEMO_COMMAREA.storage(), f9_CARDDEMO_COMMAREA.offset()), null);
if (true) throw new Goback();
return 1;
}
@@ -1356,7 +842,7 @@ private int p1() {
// EVALUATE TRUE
if (((Cobol.compareFigurative(f74_FNAMEI, Figurative.SPACES, CS) == 0 || Cobol.compareFigurative(f74_FNAMEI, Figurative.LOW_VALUES, CS) == 0))) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'First Name can NOT be empty...' TO WS-MESSAGE
Cobol.move("First Name can NOT be empty...", f4_WS_MESSAGE, CS);
// MOVE -1 TO FNAMEL OF COUSR1AI
@@ -1365,7 +851,7 @@ private int p1() {
perform(3, 3);
} else if (((Cobol.compareFigurative(f80_LNAMEI, Figurative.SPACES, CS) == 0 || Cobol.compareFigurative(f80_LNAMEI, Figurative.LOW_VALUES, CS) == 0))) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'Last Name can NOT be empty...' TO WS-MESSAGE
Cobol.move("Last Name can NOT be empty...", f4_WS_MESSAGE, CS);
// MOVE -1 TO LNAMEL OF COUSR1AI
@@ -1374,7 +860,7 @@ private int p1() {
perform(3, 3);
} else if (((Cobol.compareFigurative(f86_USERIDI, Figurative.SPACES, CS) == 0 || Cobol.compareFigurative(f86_USERIDI, Figurative.LOW_VALUES, CS) == 0))) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'User ID can NOT be empty...' TO WS-MESSAGE
Cobol.move("User ID can NOT be empty...", f4_WS_MESSAGE, CS);
// MOVE -1 TO USERIDL OF COUSR1AI
@@ -1383,7 +869,7 @@ private int p1() {
perform(3, 3);
} else if (((Cobol.compareFigurative(f92_PASSWDI, Figurative.SPACES, CS) == 0 || Cobol.compareFigurative(f92_PASSWDI, Figurative.LOW_VALUES, CS) == 0))) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'Password can NOT be empty...' TO WS-MESSAGE
Cobol.move("Password can NOT be empty...", f4_WS_MESSAGE, CS);
// MOVE -1 TO PASSWDL OF COUSR1AI
@@ -1392,7 +878,7 @@ private int p1() {
perform(3, 3);
} else if (((Cobol.compareFigurative(f98_USRTYPEI, Figurative.SPACES, CS) == 0 || Cobol.compareFigurative(f98_USRTYPEI, Figurative.LOW_VALUES, CS) == 0))) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'User Type can NOT be empty...' TO WS-MESSAGE
Cobol.move("User Type can NOT be empty...", f4_WS_MESSAGE, CS);
// MOVE -1 TO USRTYPEL OF COUSR1AI
@@ -1405,7 +891,7 @@ private int p1() {
// CONTINUE
}
// IF NOT ERR-FLG-ON
- if (!(Cobol.compare(f6_WS_ERR_FLG, "Y", CS) == 0)) {
+ if (!(isErrFlgOn())) {
// MOVE USERIDI OF COUSR1AI TO SEC-USR-ID
Cobol.move(f86_USERIDI, f226_SEC_USR_ID, CS);
// MOVE FNAMEI OF COUSR1AI TO SEC-USR-FNAME
@@ -1439,7 +925,7 @@ private int p2() {
String xr1 = task.xctl(Cobol.text(f14_CDEMO_TO_PROGRAM, CS).strip(), out_CarddemoCommarea(f9_CARDDEMO_COMMAREA.storage(), f9_CARDDEMO_COMMAREA.offset()));
if ("NORMAL".equals(xr1)) throw new Goback();
Cobol.store(f368_EIBRESP, BigDecimal.valueOf(DetCics.resp(xr1)), false, CS);
- Cobol.store(f369_EIBRESP2, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f369_EIBRESP2, BigDecimal.valueOf(DetCics.xctlResp2(xr1)), false, CS);
if (DetCics.resp(xr1) != 0) {
int to = condition(DetCics.condition(DetCics.resp(xr1)));
if (to >= 0) return GOTO | to;
@@ -1538,8 +1024,8 @@ private int p4() {
}
Cobol.store(f368_EIBRESP, BigDecimal.valueOf(resp7), false, CS);
Cobol.store(f369_EIBRESP2, BigDecimal.valueOf(0), false, CS);
- Cobol.store(f7_WS_RESP_CD, BigDecimal.valueOf(resp7), false, CS);
- Cobol.store(f8_WS_REAS_CD, BigDecimal.valueOf(0), false, CS);
+ f7_WS_RESP_CD = Cobol.binary(BigDecimal.valueOf(resp7), 9, true, false, CS);
+ f8_WS_REAS_CD = Cobol.binary(BigDecimal.valueOf(0), 9, true, false, CS);
return 5;
}
@@ -1577,13 +1063,13 @@ private int p5() {
/** WRITE-USER-SEC-FILE. */
private int p6() {
// EXEC CICS WRITE DATASET (WS-USRSEC-FILE) FROM (SEC-USER-DATA) LENGTH (LENGTH OF SEC-USER-DATA) RIDFLD (SEC-USR-ID) KEYLENGTH (LENGTH OF SEC-USR-ID) RE
- int resp8 = task.write(Cobol.text(f5_WS_USRSEC_FILE, CS).strip(), store(Cobol.text(f5_WS_USRSEC_FILE, CS).strip()).exists(DetCics.bytes(f226_SEC_USR_ID)), () -> store(Cobol.text(f5_WS_USRSEC_FILE, CS).strip()).store(DetCics.bytes(f225_SEC_USER_DATA, BigDecimal.valueOf(80).intValue())));
+ int resp8 = task.write(f5_WS_USRSEC_FILE.strip(), store(f5_WS_USRSEC_FILE.strip()).exists(DetCics.bytes(f226_SEC_USR_ID)), () -> store(f5_WS_USRSEC_FILE.strip()).store(DetCics.bytes(f225_SEC_USER_DATA, BigDecimal.valueOf(80).intValue())));
Cobol.store(f368_EIBRESP, BigDecimal.valueOf(resp8), false, CS);
Cobol.store(f369_EIBRESP2, BigDecimal.valueOf(0), false, CS);
- Cobol.store(f7_WS_RESP_CD, BigDecimal.valueOf(resp8), false, CS);
- Cobol.store(f8_WS_REAS_CD, BigDecimal.valueOf(0), false, CS);
+ f7_WS_RESP_CD = Cobol.binary(BigDecimal.valueOf(resp8), 9, true, false, CS);
+ f8_WS_REAS_CD = Cobol.binary(BigDecimal.valueOf(0), 9, true, false, CS);
// EVALUATE WS-RESP-CD
- if ((Cobol.num(f7_WS_RESP_CD, CS).compareTo(D0) == 0)) {
+ if ((f7_WS_RESP_CD == 0L)) {
// PERFORM INITIALIZE-ALL-FIELDS
perform(8, 8);
// MOVE SPACES TO WS-MESSAGE
@@ -1594,9 +1080,9 @@ private int p6() {
Cobol.string(f4_WS_MESSAGE, null, CS, Cobol.StringPart.size("User ", CS), Cobol.StringPart.delimited(f226_SEC_USR_ID, " ", CS), Cobol.StringPart.size(" has been added ...", CS));
// PERFORM SEND-USRADD-SCREEN
perform(3, 3);
- } else if ((Cobol.num(f7_WS_RESP_CD, CS).compareTo(D15) == 0) || (Cobol.num(f7_WS_RESP_CD, CS).compareTo(D14) == 0)) {
+ } else if ((f7_WS_RESP_CD == 15L) || (f7_WS_RESP_CD == 14L)) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'User ID already exist...' TO WS-MESSAGE
Cobol.move("User ID already exist...", f4_WS_MESSAGE, CS);
// MOVE -1 TO USERIDL OF COUSR1AI
@@ -1605,7 +1091,7 @@ private int p6() {
perform(3, 3);
} else if (true) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'Unable to Add User...' TO WS-MESSAGE
Cobol.move("Unable to Add User...", f4_WS_MESSAGE, CS);
// MOVE -1 TO FNAMEL OF COUSR1AI
@@ -1639,4 +1125,10 @@ private int p8() {
return 9;
}
+ /** 88 CDEMO-PGM-REENTER of CDEMO-PGM-CONTEXT. */
+ private boolean isCdemoPgmReenter() { return Cobol.compare(f17_CDEMO_PGM_CONTEXT, D1, CS) == 0; }
+
+ /** 88 ERR-FLG-ON of WS-ERR-FLG. */
+ private boolean isErrFlgOn() { return f6_WS_ERR_FLG.equals("Y"); }
+
}
diff --git a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cousr03cService.java b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cousr03cService.java
index 5c84e73e1..fa413f25d 100644
--- a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cousr03cService.java
+++ b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/Cousr03cService.java
@@ -190,373 +190,169 @@ public class Cousr03cService {
private final Storage s_DFHEIBLK = new Storage(IMAGE_s_DFHEIBLK.length);
private final Storage s_GG_RETURN_CODE = new Storage(IMAGE_s_GG_RETURN_CODE.length);
- private Field f100_USRTYPEI;
- private Field f101_ERRMSGL;
- private Field f102_ERRMSGF;
- private Field f103_FILLER;
- private Field f104_ERRMSGA;
- private Field f105_FILLER;
- private Field f106_ERRMSGI;
- private Field f107_COUSR3AO;
- private Field f108_FILLER;
- private Field f109_FILLER;
- private Field f10_CARDDEMO_COMMAREA;
- private Field f110_TRNNAMEC;
- private Field f111_TRNNAMEP;
- private Field f112_TRNNAMEH;
- private Field f113_TRNNAMEV;
- private Field f114_TRNNAMEO;
- private Field f115_FILLER;
- private Field f116_TITLE01C;
- private Field f117_TITLE01P;
- private Field f118_TITLE01H;
- private Field f119_TITLE01V;
- private Field f11_CDEMO_GENERAL_INFO;
- private Field f120_TITLE01O;
- private Field f121_FILLER;
- private Field f122_CURDATEC;
- private Field f123_CURDATEP;
- private Field f124_CURDATEH;
- private Field f125_CURDATEV;
- private Field f126_CURDATEO;
- private Field f127_FILLER;
- private Field f128_PGMNAMEC;
- private Field f129_PGMNAMEP;
- private Field f12_CDEMO_FROM_TRANID;
- private Field f130_PGMNAMEH;
- private Field f131_PGMNAMEV;
- private Field f132_PGMNAMEO;
- private Field f133_FILLER;
- private Field f134_TITLE02C;
- private Field f135_TITLE02P;
- private Field f136_TITLE02H;
- private Field f137_TITLE02V;
- private Field f138_TITLE02O;
- private Field f139_FILLER;
- private Field f13_CDEMO_FROM_PROGRAM;
- private Field f140_CURTIMEC;
- private Field f141_CURTIMEP;
- private Field f142_CURTIMEH;
- private Field f143_CURTIMEV;
- private Field f144_CURTIMEO;
- private Field f145_FILLER;
- private Field f146_USRIDINC;
- private Field f147_USRIDINP;
- private Field f148_USRIDINH;
- private Field f149_USRIDINV;
- private Field f14_CDEMO_TO_TRANID;
- private Field f150_USRIDINO;
- private Field f151_FILLER;
- private Field f152_FNAMEC;
- private Field f153_FNAMEP;
- private Field f154_FNAMEH;
- private Field f155_FNAMEV;
- private Field f156_FNAMEO;
- private Field f157_FILLER;
- private Field f158_LNAMEC;
- private Field f159_LNAMEP;
- private Field f15_CDEMO_TO_PROGRAM;
- private Field f160_LNAMEH;
- private Field f161_LNAMEV;
- private Field f162_LNAMEO;
- private Field f163_FILLER;
- private Field f164_USRTYPEC;
- private Field f165_USRTYPEP;
- private Field f166_USRTYPEH;
- private Field f167_USRTYPEV;
- private Field f168_USRTYPEO;
- private Field f169_FILLER;
- private Field f16_CDEMO_USER_ID;
- private Field f170_ERRMSGC;
- private Field f171_ERRMSGP;
- private Field f172_ERRMSGH;
- private Field f173_ERRMSGV;
- private Field f174_ERRMSGO;
- private Field f175_CCDA_SCREEN_TITLE;
- private Field f176_CCDA_TITLE01;
- private Field f177_CCDA_TITLE02;
- private Field f178_CCDA_THANK_YOU;
- private Field f179_WS_DATE_TIME;
- private Field f17_CDEMO_USER_TYPE;
- private Field f180_WS_CURDATE_DATA;
- private Field f181_WS_CURDATE;
- private Field f182_WS_CURDATE_YEAR;
- private Field f183_WS_CURDATE_MONTH;
- private Field f184_WS_CURDATE_DAY;
- private Field f185_WS_CURDATE_N;
- private Field f186_WS_CURTIME;
- private Field f187_WS_CURTIME_HOURS;
- private Field f188_WS_CURTIME_MINUTE;
- private Field f189_WS_CURTIME_SECOND;
- private Field f18_CDEMO_PGM_CONTEXT;
- private Field f190_WS_CURTIME_MILSEC;
- private Field f191_WS_CURTIME_N;
- private Field f192_WS_CURDATE_MM_DD_YY;
- private Field f193_WS_CURDATE_MM;
- private Field f194_FILLER;
- private Field f195_WS_CURDATE_DD;
- private Field f196_FILLER;
- private Field f197_WS_CURDATE_YY;
- private Field f198_WS_CURTIME_HH_MM_SS;
- private Field f199_WS_CURTIME_HH;
- private Field f19_CDEMO_CUSTOMER_INFO;
- private Field f1_WS_VARIABLES;
- private Field f200_FILLER;
- private Field f201_WS_CURTIME_MM;
- private Field f202_FILLER;
- private Field f203_WS_CURTIME_SS;
- private Field f204_WS_TIMESTAMP;
- private Field f205_WS_TIMESTAMP_DT_YYYY;
- private Field f206_FILLER;
- private Field f207_WS_TIMESTAMP_DT_MM;
- private Field f208_FILLER;
- private Field f209_WS_TIMESTAMP_DT_DD;
- private Field f20_CDEMO_CUST_ID;
- private Field f210_FILLER;
- private Field f211_WS_TIMESTAMP_TM_HH;
- private Field f212_FILLER;
- private Field f213_WS_TIMESTAMP_TM_MM;
- private Field f214_FILLER;
- private Field f215_WS_TIMESTAMP_TM_SS;
- private Field f216_FILLER;
- private Field f217_WS_TIMESTAMP_TM_MS6;
- private Field f218_CCDA_COMMON_MESSAGES;
- private Field f219_CCDA_MSG_THANK_YOU;
- private Field f21_CDEMO_CUST_FNAME;
- private Field f220_CCDA_MSG_INVALID_KEY;
- private Field f221_SEC_USER_DATA;
- private Field f222_SEC_USR_ID;
- private Field f223_SEC_USR_FNAME;
- private Field f224_SEC_USR_LNAME;
- private Field f225_SEC_USR_PWD;
- private Field f226_SEC_USR_TYPE;
- private Field f227_SEC_USR_FILLER;
- private Field f228_DFHAID;
- private Field f229_DFHNULL;
- private Field f22_CDEMO_CUST_MNAME;
- private Field f230_DFHENTER;
- private Field f231_DFHCLEAR;
- private Field f232_DFHCLRP;
- private Field f233_DFHPEN;
- private Field f234_DFHOPID;
- private Field f235_DFHMSRE;
- private Field f236_DFHSTRF;
- private Field f237_DFHTRIG;
- private Field f238_DFHPA1;
- private Field f239_DFHPA2;
- private Field f23_CDEMO_CUST_LNAME;
- private Field f240_DFHPA3;
- private Field f241_DFHPF1;
- private Field f242_DFHPF2;
- private Field f243_DFHPF3;
- private Field f244_DFHPF4;
- private Field f245_DFHPF5;
- private Field f246_DFHPF6;
- private Field f247_DFHPF7;
- private Field f248_DFHPF8;
- private Field f249_DFHPF9;
- private Field f24_CDEMO_ACCOUNT_INFO;
- private Field f250_DFHPF10;
- private Field f251_DFHPF11;
- private Field f252_DFHPF12;
- private Field f253_DFHPF13;
- private Field f254_DFHPF14;
- private Field f255_DFHPF15;
- private Field f256_DFHPF16;
- private Field f257_DFHPF17;
- private Field f258_DFHPF18;
- private Field f259_DFHPF19;
- private Field f25_CDEMO_ACCT_ID;
- private Field f260_DFHPF20;
- private Field f261_DFHPF21;
- private Field f262_DFHPF22;
- private Field f263_DFHPF23;
- private Field f264_DFHPF24;
- private Field f265_DFHBMSCA;
- private Field f266_DFHBMPEM;
- private Field f267_DFHBMPNL;
- private Field f268_DFHBMPFF;
- private Field f269_DFHBMPCR;
- private Field f26_CDEMO_ACCT_STATUS;
- private Field f270_DFHBMASK;
- private Field f271_DFHBMUNP;
- private Field f272_DFHBMUNN;
- private Field f273_DFHBMPRO;
- private Field f274_DFHBMBRY;
- private Field f275_DFHBMDAR;
- private Field f276_DFHBMFSE;
- private Field f277_DFHBMPRF;
- private Field f278_DFHBMASF;
- private Field f279_DFHBMASB;
- private Field f27_CDEMO_CARD_INFO;
- private Field f280_DFHBMEOF;
- private Field f281_DFHBMCUR;
- private Field f282_DFHBMEC;
- private Field f283_DFHBMFLG;
- private Field f284_DFHBMDET;
- private Field f285_DFHSA;
- private Field f286_DFHCOLOR;
- private Field f287_DFHPS;
- private Field f288_DFHHLT;
- private Field f289_DFH3270;
- private Field f28_CDEMO_CARD_NUM;
- private Field f290_DFHVAL;
- private Field f291_DFHOUTLN;
- private Field f292_DFHBKTRN;
- private Field f293_DFHALL;
- private Field f294_DFHERROR;
- private Field f295_DFHDFT;
- private Field f296_DFHDFCOL;
- private Field f297_DFHBLUE;
- private Field f298_DFHRED;
- private Field f299_DFHPINK;
- private Field f29_CDEMO_MORE_INFO;
- private Field f2_WS_PGMNAME;
- private Field f300_DFHGREEN;
- private Field f301_DFHTURQ;
- private Field f302_DFHYELLO;
- private Field f303_DFHNEUTR;
- private Field f304_DFHBASE;
- private Field f305_DFHDFHI;
- private Field f306_DFHBLINK;
- private Field f307_DFHREVRS;
- private Field f308_DFHUNDLN;
- private Field f309_DFHMFIL;
- private Field f30_CDEMO_LAST_MAP;
- private Field f310_DFHMENT;
- private Field f311_DFHMFE;
- private Field f312_DFHUNNOD;
- private Field f313_DFHUNIMD;
- private Field f314_DFHUNNUM;
- private Field f315_DFHUNNUB;
- private Field f316_DFHUNINT;
- private Field f317_DFHUNNON;
- private Field f318_DFHPROTI;
- private Field f319_DFHPROTN;
- private Field f31_CDEMO_LAST_MAPSET;
- private Field f320_DFHMT;
- private Field f321_DFHMFT;
- private Field f322_DFHMET;
- private Field f323_DFHMFET;
- private Field f324_DFHDFFR;
- private Field f325_DFHUNDER;
- private Field f326_DFHRIGHT;
- private Field f327_DFHOVER;
- private Field f328_DFHLEFT;
- private Field f329_DFHBOX;
- private Field f32_CDEMO_CU03_INFO;
- private Field f330_DFHSOSI;
- private Field f331_DFHTRANS;
- private Field f332_DFHOPAQ;
- private Field f333_DFHCOMMAREA;
- private Field f334_LK_COMMAREA;
- private Field f335_DFHEIBLK;
- private Field f336_EIBTIME;
- private Field f337_EIBDATE;
- private Field f338_EIBTRNID;
- private Field f339_EIBTASKN;
- private Field f33_CDEMO_CU03_USRID_FIRST;
- private Field f340_EIBTRMID;
- private Field f341_DFHEIGDI;
- private Field f342_EIBCPOSN;
- private Field f343_EIBCALEN;
- private Field f344_EIBAID;
- private Field f345_EIBFN;
- private Field f346_EIBRCODE;
- private Field f347_EIBDS;
- private Field f348_EIBREQID;
- private Field f349_EIBRSRCE;
- private Field f34_CDEMO_CU03_USRID_LAST;
- private Field f350_EIBSYNC;
- private Field f351_EIBFREE;
- private Field f352_EIBRECV;
- private Field f353_EIBSEND;
- private Field f354_EIBATT;
- private Field f355_EIBEOC;
- private Field f356_EIBFMH;
- private Field f357_EIBCOMPL;
- private Field f358_EIBSIG;
- private Field f359_EIBCONF;
- private Field f35_CDEMO_CU03_PAGE_NUM;
- private Field f360_EIBERR;
- private Field f361_EIBERRCD;
- private Field f362_EIBSYNRB;
- private Field f363_EIBNODAT;
- private Field f364_EIBRESP;
- private Field f365_EIBRESP2;
- private Field f366_EIBRLDBK;
- private Field f367_GG_RETURN_CODE;
- private Field f36_CDEMO_CU03_NEXT_PAGE_FLG;
- private Field f37_CDEMO_CU03_USR_SEL_FLG;
- private Field f38_CDEMO_CU03_USR_SELECTED;
- private Field f39_COUSR3AI;
- private Field f3_WS_TRANID;
- private Field f40_FILLER;
- private Field f41_TRNNAMEL;
- private Field f42_TRNNAMEF;
- private Field f43_FILLER;
- private Field f44_TRNNAMEA;
- private Field f45_FILLER;
- private Field f46_TRNNAMEI;
- private Field f47_TITLE01L;
- private Field f48_TITLE01F;
- private Field f49_FILLER;
- private Field f4_WS_MESSAGE;
- private Field f50_TITLE01A;
- private Field f51_FILLER;
- private Field f52_TITLE01I;
- private Field f53_CURDATEL;
- private Field f54_CURDATEF;
- private Field f55_FILLER;
- private Field f56_CURDATEA;
- private Field f57_FILLER;
- private Field f58_CURDATEI;
- private Field f59_PGMNAMEL;
- private Field f5_WS_USRSEC_FILE;
- private Field f60_PGMNAMEF;
- private Field f61_FILLER;
- private Field f62_PGMNAMEA;
- private Field f63_FILLER;
- private Field f64_PGMNAMEI;
- private Field f65_TITLE02L;
- private Field f66_TITLE02F;
- private Field f67_FILLER;
- private Field f68_TITLE02A;
- private Field f69_FILLER;
- private Field f6_WS_ERR_FLG;
- private Field f70_TITLE02I;
- private Field f71_CURTIMEL;
- private Field f72_CURTIMEF;
- private Field f73_FILLER;
- private Field f74_CURTIMEA;
- private Field f75_FILLER;
- private Field f76_CURTIMEI;
- private Field f77_USRIDINL;
- private Field f78_USRIDINF;
- private Field f79_FILLER;
- private Field f7_WS_RESP_CD;
- private Field f80_USRIDINA;
- private Field f81_FILLER;
- private Field f82_USRIDINI;
- private Field f83_FNAMEL;
- private Field f84_FNAMEF;
- private Field f85_FILLER;
- private Field f86_FNAMEA;
- private Field f87_FILLER;
- private Field f88_FNAMEI;
- private Field f89_LNAMEL;
- private Field f8_WS_REAS_CD;
- private Field f90_LNAMEF;
- private Field f91_FILLER;
- private Field f92_LNAMEA;
- private Field f93_FILLER;
- private Field f94_LNAMEI;
- private Field f95_USRTYPEL;
- private Field f96_USRTYPEF;
- private Field f97_FILLER;
- private Field f98_USRTYPEA;
- private Field f99_FILLER;
- private Field f9_WS_USR_MODIFIED;
+ private final Field f4_WS_MESSAGE = Field.alphanumeric(s_WS_VARIABLES, 12, 80, false);
+ private final Field f7_WS_RESP_CD = Field.binary(s_WS_VARIABLES, 101, 9, 0, true, false);
+ private final Field f8_WS_REAS_CD = Field.binary(s_WS_VARIABLES, 105, 9, 0, true, false);
+ private final Field f10_CARDDEMO_COMMAREA = Field.group(s_CARDDEMO_COMMAREA, 0, 194);
+ private final Field f12_CDEMO_FROM_TRANID = Field.alphanumeric(s_CARDDEMO_COMMAREA, 0, 4, false);
+ private final Field f13_CDEMO_FROM_PROGRAM = Field.alphanumeric(s_CARDDEMO_COMMAREA, 4, 8, false);
+ private final Field f15_CDEMO_TO_PROGRAM = Field.alphanumeric(s_CARDDEMO_COMMAREA, 16, 8, false);
+ private final Field f18_CDEMO_PGM_CONTEXT = Field.zoned(s_CARDDEMO_COMMAREA, 33, 1, 0, false, false, false);
+ private final Field f38_CDEMO_CU03_USR_SELECTED = Field.alphanumeric(s_CARDDEMO_COMMAREA, 186, 8, false);
+ private final Field f39_COUSR3AI = Field.group(s_COUSR3AI, 0, 324);
+ private final Field f41_TRNNAMEL = Field.binary(s_COUSR3AI, 12, 4, 0, true, false);
+ private final Field f44_TRNNAMEA = Field.alphanumeric(s_COUSR3AI, 14, 1, false);
+ private final Field f46_TRNNAMEI = Field.alphanumeric(s_COUSR3AI, 19, 4, false);
+ private final Field f47_TITLE01L = Field.binary(s_COUSR3AI, 23, 4, 0, true, false);
+ private final Field f50_TITLE01A = Field.alphanumeric(s_COUSR3AI, 25, 1, false);
+ private final Field f52_TITLE01I = Field.alphanumeric(s_COUSR3AI, 30, 40, false);
+ private final Field f53_CURDATEL = Field.binary(s_COUSR3AI, 70, 4, 0, true, false);
+ private final Field f56_CURDATEA = Field.alphanumeric(s_COUSR3AI, 72, 1, false);
+ private final Field f58_CURDATEI = Field.alphanumeric(s_COUSR3AI, 77, 8, false);
+ private final Field f59_PGMNAMEL = Field.binary(s_COUSR3AI, 85, 4, 0, true, false);
+ private final Field f62_PGMNAMEA = Field.alphanumeric(s_COUSR3AI, 87, 1, false);
+ private final Field f64_PGMNAMEI = Field.alphanumeric(s_COUSR3AI, 92, 8, false);
+ private final Field f65_TITLE02L = Field.binary(s_COUSR3AI, 100, 4, 0, true, false);
+ private final Field f68_TITLE02A = Field.alphanumeric(s_COUSR3AI, 102, 1, false);
+ private final Field f70_TITLE02I = Field.alphanumeric(s_COUSR3AI, 107, 40, false);
+ private final Field f71_CURTIMEL = Field.binary(s_COUSR3AI, 147, 4, 0, true, false);
+ private final Field f74_CURTIMEA = Field.alphanumeric(s_COUSR3AI, 149, 1, false);
+ private final Field f76_CURTIMEI = Field.alphanumeric(s_COUSR3AI, 154, 8, false);
+ private final Field f77_USRIDINL = Field.binary(s_COUSR3AI, 162, 4, 0, true, false);
+ private final Field f80_USRIDINA = Field.alphanumeric(s_COUSR3AI, 164, 1, false);
+ private final Field f82_USRIDINI = Field.alphanumeric(s_COUSR3AI, 169, 8, false);
+ private final Field f83_FNAMEL = Field.binary(s_COUSR3AI, 177, 4, 0, true, false);
+ private final Field f86_FNAMEA = Field.alphanumeric(s_COUSR3AI, 179, 1, false);
+ private final Field f88_FNAMEI = Field.alphanumeric(s_COUSR3AI, 184, 20, false);
+ private final Field f89_LNAMEL = Field.binary(s_COUSR3AI, 204, 4, 0, true, false);
+ private final Field f92_LNAMEA = Field.alphanumeric(s_COUSR3AI, 206, 1, false);
+ private final Field f94_LNAMEI = Field.alphanumeric(s_COUSR3AI, 211, 20, false);
+ private final Field f95_USRTYPEL = Field.binary(s_COUSR3AI, 231, 4, 0, true, false);
+ private final Field f98_USRTYPEA = Field.alphanumeric(s_COUSR3AI, 233, 1, false);
+ private final Field f100_USRTYPEI = Field.alphanumeric(s_COUSR3AI, 238, 1, false);
+ private final Field f101_ERRMSGL = Field.binary(s_COUSR3AI, 239, 4, 0, true, false);
+ private final Field f104_ERRMSGA = Field.alphanumeric(s_COUSR3AI, 241, 1, false);
+ private final Field f106_ERRMSGI = Field.alphanumeric(s_COUSR3AI, 246, 78, false);
+ private final Field f107_COUSR3AO = Field.group(s_COUSR3AI, 0, 324);
+ private final Field f110_TRNNAMEC = Field.alphanumeric(s_COUSR3AI, 15, 1, false);
+ private final Field f112_TRNNAMEH = Field.alphanumeric(s_COUSR3AI, 17, 1, false);
+ private final Field f114_TRNNAMEO = Field.alphanumeric(s_COUSR3AI, 19, 4, false);
+ private final Field f116_TITLE01C = Field.alphanumeric(s_COUSR3AI, 26, 1, false);
+ private final Field f118_TITLE01H = Field.alphanumeric(s_COUSR3AI, 28, 1, false);
+ private final Field f120_TITLE01O = Field.alphanumeric(s_COUSR3AI, 30, 40, false);
+ private final Field f122_CURDATEC = Field.alphanumeric(s_COUSR3AI, 73, 1, false);
+ private final Field f124_CURDATEH = Field.alphanumeric(s_COUSR3AI, 75, 1, false);
+ private final Field f126_CURDATEO = Field.alphanumeric(s_COUSR3AI, 77, 8, false);
+ private final Field f128_PGMNAMEC = Field.alphanumeric(s_COUSR3AI, 88, 1, false);
+ private final Field f130_PGMNAMEH = Field.alphanumeric(s_COUSR3AI, 90, 1, false);
+ private final Field f132_PGMNAMEO = Field.alphanumeric(s_COUSR3AI, 92, 8, false);
+ private final Field f134_TITLE02C = Field.alphanumeric(s_COUSR3AI, 103, 1, false);
+ private final Field f136_TITLE02H = Field.alphanumeric(s_COUSR3AI, 105, 1, false);
+ private final Field f138_TITLE02O = Field.alphanumeric(s_COUSR3AI, 107, 40, false);
+ private final Field f140_CURTIMEC = Field.alphanumeric(s_COUSR3AI, 150, 1, false);
+ private final Field f142_CURTIMEH = Field.alphanumeric(s_COUSR3AI, 152, 1, false);
+ private final Field f144_CURTIMEO = Field.alphanumeric(s_COUSR3AI, 154, 8, false);
+ private final Field f146_USRIDINC = Field.alphanumeric(s_COUSR3AI, 165, 1, false);
+ private final Field f148_USRIDINH = Field.alphanumeric(s_COUSR3AI, 167, 1, false);
+ private final Field f150_USRIDINO = Field.alphanumeric(s_COUSR3AI, 169, 8, false);
+ private final Field f152_FNAMEC = Field.alphanumeric(s_COUSR3AI, 180, 1, false);
+ private final Field f154_FNAMEH = Field.alphanumeric(s_COUSR3AI, 182, 1, false);
+ private final Field f156_FNAMEO = Field.alphanumeric(s_COUSR3AI, 184, 20, false);
+ private final Field f158_LNAMEC = Field.alphanumeric(s_COUSR3AI, 207, 1, false);
+ private final Field f160_LNAMEH = Field.alphanumeric(s_COUSR3AI, 209, 1, false);
+ private final Field f162_LNAMEO = Field.alphanumeric(s_COUSR3AI, 211, 20, false);
+ private final Field f164_USRTYPEC = Field.alphanumeric(s_COUSR3AI, 234, 1, false);
+ private final Field f166_USRTYPEH = Field.alphanumeric(s_COUSR3AI, 236, 1, false);
+ private final Field f168_USRTYPEO = Field.alphanumeric(s_COUSR3AI, 238, 1, false);
+ private final Field f170_ERRMSGC = Field.alphanumeric(s_COUSR3AI, 242, 1, false);
+ private final Field f172_ERRMSGH = Field.alphanumeric(s_COUSR3AI, 244, 1, false);
+ private final Field f174_ERRMSGO = Field.alphanumeric(s_COUSR3AI, 246, 78, false);
+ private final Field f180_WS_CURDATE_DATA = Field.group(s_WS_DATE_TIME, 0, 16);
+ private final Field f182_WS_CURDATE_YEAR = Field.zoned(s_WS_DATE_TIME, 0, 4, 0, false, false, false);
+ private final Field f183_WS_CURDATE_MONTH = Field.zoned(s_WS_DATE_TIME, 4, 2, 0, false, false, false);
+ private final Field f184_WS_CURDATE_DAY = Field.zoned(s_WS_DATE_TIME, 6, 2, 0, false, false, false);
+ private final Field f187_WS_CURTIME_HOURS = Field.zoned(s_WS_DATE_TIME, 8, 2, 0, false, false, false);
+ private final Field f188_WS_CURTIME_MINUTE = Field.zoned(s_WS_DATE_TIME, 10, 2, 0, false, false, false);
+ private final Field f189_WS_CURTIME_SECOND = Field.zoned(s_WS_DATE_TIME, 12, 2, 0, false, false, false);
+ private final Field f192_WS_CURDATE_MM_DD_YY = Field.group(s_WS_DATE_TIME, 16, 8);
+ private final Field f193_WS_CURDATE_MM = Field.zoned(s_WS_DATE_TIME, 16, 2, 0, false, false, false);
+ private final Field f195_WS_CURDATE_DD = Field.zoned(s_WS_DATE_TIME, 19, 2, 0, false, false, false);
+ private final Field f197_WS_CURDATE_YY = Field.zoned(s_WS_DATE_TIME, 22, 2, 0, false, false, false);
+ private final Field f198_WS_CURTIME_HH_MM_SS = Field.group(s_WS_DATE_TIME, 24, 8);
+ private final Field f199_WS_CURTIME_HH = Field.zoned(s_WS_DATE_TIME, 24, 2, 0, false, false, false);
+ private final Field f201_WS_CURTIME_MM = Field.zoned(s_WS_DATE_TIME, 27, 2, 0, false, false, false);
+ private final Field f203_WS_CURTIME_SS = Field.zoned(s_WS_DATE_TIME, 30, 2, 0, false, false, false);
+ private final Field f221_SEC_USER_DATA = Field.group(s_SEC_USER_DATA, 0, 80);
+ private final Field f222_SEC_USR_ID = Field.alphanumeric(s_SEC_USER_DATA, 0, 8, false);
+ private final Field f223_SEC_USR_FNAME = Field.alphanumeric(s_SEC_USER_DATA, 8, 20, false);
+ private final Field f224_SEC_USR_LNAME = Field.alphanumeric(s_SEC_USER_DATA, 28, 20, false);
+ private final Field f226_SEC_USR_TYPE = Field.alphanumeric(s_SEC_USER_DATA, 56, 1, false);
+ private final Field f229_DFHNULL = Field.alphanumeric(s_DFHAID, 0, 1, false);
+ private final Field f230_DFHENTER = Field.alphanumeric(s_DFHAID, 1, 1, false);
+ private final Field f231_DFHCLEAR = Field.alphanumeric(s_DFHAID, 2, 1, false);
+ private final Field f232_DFHCLRP = Field.alphanumeric(s_DFHAID, 3, 1, false);
+ private final Field f233_DFHPEN = Field.alphanumeric(s_DFHAID, 4, 1, false);
+ private final Field f234_DFHOPID = Field.alphanumeric(s_DFHAID, 5, 1, false);
+ private final Field f235_DFHMSRE = Field.alphanumeric(s_DFHAID, 6, 1, false);
+ private final Field f236_DFHSTRF = Field.alphanumeric(s_DFHAID, 7, 1, false);
+ private final Field f237_DFHTRIG = Field.alphanumeric(s_DFHAID, 8, 1, false);
+ private final Field f238_DFHPA1 = Field.alphanumeric(s_DFHAID, 9, 1, false);
+ private final Field f239_DFHPA2 = Field.alphanumeric(s_DFHAID, 10, 1, false);
+ private final Field f240_DFHPA3 = Field.alphanumeric(s_DFHAID, 11, 1, false);
+ private final Field f241_DFHPF1 = Field.alphanumeric(s_DFHAID, 12, 1, false);
+ private final Field f242_DFHPF2 = Field.alphanumeric(s_DFHAID, 13, 1, false);
+ private final Field f243_DFHPF3 = Field.alphanumeric(s_DFHAID, 14, 1, false);
+ private final Field f244_DFHPF4 = Field.alphanumeric(s_DFHAID, 15, 1, false);
+ private final Field f245_DFHPF5 = Field.alphanumeric(s_DFHAID, 16, 1, false);
+ private final Field f246_DFHPF6 = Field.alphanumeric(s_DFHAID, 17, 1, false);
+ private final Field f247_DFHPF7 = Field.alphanumeric(s_DFHAID, 18, 1, false);
+ private final Field f248_DFHPF8 = Field.alphanumeric(s_DFHAID, 19, 1, false);
+ private final Field f249_DFHPF9 = Field.alphanumeric(s_DFHAID, 20, 1, false);
+ private final Field f250_DFHPF10 = Field.alphanumeric(s_DFHAID, 21, 1, false);
+ private final Field f251_DFHPF11 = Field.alphanumeric(s_DFHAID, 22, 1, false);
+ private final Field f252_DFHPF12 = Field.alphanumeric(s_DFHAID, 23, 1, false);
+ private final Field f253_DFHPF13 = Field.alphanumeric(s_DFHAID, 24, 1, false);
+ private final Field f254_DFHPF14 = Field.alphanumeric(s_DFHAID, 25, 1, false);
+ private final Field f255_DFHPF15 = Field.alphanumeric(s_DFHAID, 26, 1, false);
+ private final Field f256_DFHPF16 = Field.alphanumeric(s_DFHAID, 27, 1, false);
+ private final Field f257_DFHPF17 = Field.alphanumeric(s_DFHAID, 28, 1, false);
+ private final Field f258_DFHPF18 = Field.alphanumeric(s_DFHAID, 29, 1, false);
+ private final Field f259_DFHPF19 = Field.alphanumeric(s_DFHAID, 30, 1, false);
+ private final Field f260_DFHPF20 = Field.alphanumeric(s_DFHAID, 31, 1, false);
+ private final Field f261_DFHPF21 = Field.alphanumeric(s_DFHAID, 32, 1, false);
+ private final Field f262_DFHPF22 = Field.alphanumeric(s_DFHAID, 33, 1, false);
+ private final Field f263_DFHPF23 = Field.alphanumeric(s_DFHAID, 34, 1, false);
+ private final Field f264_DFHPF24 = Field.alphanumeric(s_DFHAID, 35, 1, false);
+ private final Field f300_DFHGREEN = Field.alphanumeric(s_DFHBMSCA, 34, 1, false);
+ private final Field f303_DFHNEUTR = Field.alphanumeric(s_DFHBMSCA, 37, 1, false);
+ private final Field f333_DFHCOMMAREA = Field.group(s_DFHCOMMAREA, 0, 32767);
+ private final Field f336_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
+ private final Field f337_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
+ private final Field f338_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
+ private final Field f339_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
+ private final Field f340_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
+ private final Field f343_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
+ private final Field f344_EIBAID = Field.alphanumeric(s_DFHEIBLK, 26, 1, false);
+ private final Field f364_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
+ private final Field f365_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
+ private final Field f367_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
+ private String f2_WS_PGMNAME; // WS-PGMNAME PIC X(08)
+ private String f3_WS_TRANID; // WS-TRANID PIC X(04)
+ private String f5_WS_USRSEC_FILE; // WS-USRSEC-FILE PIC X(08)
+ private String f6_WS_ERR_FLG; // WS-ERR-FLG PIC X(01)
+ private String f9_WS_USR_MODIFIED; // WS-USR-MODIFIED PIC X(01)
+ private String f176_CCDA_TITLE01; // CCDA-TITLE01 PIC X(40)
+ private String f177_CCDA_TITLE02; // CCDA-TITLE02 PIC X(40)
+ private String f178_CCDA_THANK_YOU; // CCDA-THANK-YOU PIC X(40)
+ private BigDecimal f205_WS_TIMESTAMP_DT_YYYY; // WS-TIMESTAMP-DT-YYYY PIC 9(04) DISPLAY
+ private BigDecimal f207_WS_TIMESTAMP_DT_MM; // WS-TIMESTAMP-DT-MM PIC 9(02) DISPLAY
+ private BigDecimal f209_WS_TIMESTAMP_DT_DD; // WS-TIMESTAMP-DT-DD PIC 9(02) DISPLAY
+ private BigDecimal f211_WS_TIMESTAMP_TM_HH; // WS-TIMESTAMP-TM-HH PIC 9(02) DISPLAY
+ private BigDecimal f213_WS_TIMESTAMP_TM_MM; // WS-TIMESTAMP-TM-MM PIC 9(02) DISPLAY
+ private BigDecimal f215_WS_TIMESTAMP_TM_SS; // WS-TIMESTAMP-TM-SS PIC 9(02) DISPLAY
+ private BigDecimal f217_WS_TIMESTAMP_TM_MS6; // WS-TIMESTAMP-TM-MS6 PIC 9(06) DISPLAY
+ private String f219_CCDA_MSG_THANK_YOU; // CCDA-MSG-THANK-YOU PIC X(50)
+ private String f220_CCDA_MSG_INVALID_KEY; // CCDA-MSG-INVALID-KEY PIC X(50)
private static String id_SecUserData(byte[] rec) {
Storage s = Storage.of(rec);
@@ -570,6 +366,14 @@ private static String id_SecUserData(byte[] rec) {
/** Writes the COMMAREA's bytes back into the object the task carries (a LINKed program's is its caller's). */
private Runnable caBack = () -> { };
+ /** The program ends because of an abend: a LINKed program's COMMAREA writes stay its caller's. */
+ private Goback abended() {
+ if (task.level() > 1) {
+ caBack.run();
+ }
+ return new Goback();
+ }
+
@SuppressWarnings("unchecked")
private DetCics.Store store(String name) {
return (DetCics.Store) stores.computeIfAbsent(name, n -> switch (n) {
@@ -600,16 +404,26 @@ private static int paragraph(String name) {
return i;
}
- /** A condition the command neither returned in RESP nor ignored: its HANDLE CONDITION label, or CICS's
- * default action -- an abend, to this program's HANDLE ABEND exit or ending the task. */
+ /** A condition the command did not return in RESP: its HANDLE CONDITION label, or -1 (go on) when IGNOREd
+ * (#4414); else CICS's default action -- -1 for one whose default is to ignore it (#4413: EOC); else the
+ * ERROR label (#4502: IBM, HANDLE CONDITION: "if the default action for such a condition terminates the
+ * task abnormally, and the condition ERROR has been specified, the action for ERROR is taken"); else an
+ * abend, to this program's HANDLE ABEND exit or ending the task. */
private int condition(String cond) {
Integer h = handlers.get(cond);
if (h != null) {
return h;
}
+ if (DetCics.ignoredByDefault(cond)) {
+ return -1;
+ }
+ Integer error = handlers.get("ERROR");
+ if (error != null) {
+ return error;
+ }
String label = task.abendOnCondition(cond);
if (label == null) {
- throw new Goback();
+ throw abended();
}
return paragraph(label);
}
@@ -677,6 +491,14 @@ private Cousr03cCarddemoCommarea out_Cousr03cCarddemoCommarea(Storage s, int bas
return d;
}
+ /** #4270 (X23): DFHCOMMAREA's whole record again, with what the task left in its EIBCALEN bytes. */
+ private void caWhole(byte[] whole) {
+ if (s_DFHCOMMAREA.bytes != whole) {
+ System.arraycopy(s_DFHCOMMAREA.bytes, 0, whole, 0, s_DFHCOMMAREA.bytes.length);
+ s_DFHCOMMAREA.bytes = whole;
+ }
+ }
+
private final SecUserDataRepository secUserDataRepository;
private final DatasetResolver datasets;
@@ -688,386 +510,10 @@ public Cousr03cService(SecUserDataRepository secUserDataRepository, DatasetResol
this.datasets = datasets;
this.files = files;
this.clock = clock;
- fields0();
- fields1();
}
- private void fields0() {
- f1_WS_VARIABLES = Field.group(s_WS_VARIABLES, 0, 110);
- f2_WS_PGMNAME = Field.alphanumeric(s_WS_VARIABLES, 0, 8, false);
- f3_WS_TRANID = Field.alphanumeric(s_WS_VARIABLES, 8, 4, false);
- f4_WS_MESSAGE = Field.alphanumeric(s_WS_VARIABLES, 12, 80, false);
- f5_WS_USRSEC_FILE = Field.alphanumeric(s_WS_VARIABLES, 92, 8, false);
- f6_WS_ERR_FLG = Field.alphanumeric(s_WS_VARIABLES, 100, 1, false);
- f7_WS_RESP_CD = Field.binary(s_WS_VARIABLES, 101, 9, 0, true, false);
- f8_WS_REAS_CD = Field.binary(s_WS_VARIABLES, 105, 9, 0, true, false);
- f9_WS_USR_MODIFIED = Field.alphanumeric(s_WS_VARIABLES, 109, 1, false);
- f10_CARDDEMO_COMMAREA = Field.group(s_CARDDEMO_COMMAREA, 0, 194);
- f11_CDEMO_GENERAL_INFO = Field.group(s_CARDDEMO_COMMAREA, 0, 34);
- f12_CDEMO_FROM_TRANID = Field.alphanumeric(s_CARDDEMO_COMMAREA, 0, 4, false);
- f13_CDEMO_FROM_PROGRAM = Field.alphanumeric(s_CARDDEMO_COMMAREA, 4, 8, false);
- f14_CDEMO_TO_TRANID = Field.alphanumeric(s_CARDDEMO_COMMAREA, 12, 4, false);
- f15_CDEMO_TO_PROGRAM = Field.alphanumeric(s_CARDDEMO_COMMAREA, 16, 8, false);
- f16_CDEMO_USER_ID = Field.alphanumeric(s_CARDDEMO_COMMAREA, 24, 8, false);
- f17_CDEMO_USER_TYPE = Field.alphanumeric(s_CARDDEMO_COMMAREA, 32, 1, false);
- f18_CDEMO_PGM_CONTEXT = Field.zoned(s_CARDDEMO_COMMAREA, 33, 1, 0, false, false, false);
- f19_CDEMO_CUSTOMER_INFO = Field.group(s_CARDDEMO_COMMAREA, 34, 84);
- f20_CDEMO_CUST_ID = Field.zoned(s_CARDDEMO_COMMAREA, 34, 9, 0, false, false, false);
- f21_CDEMO_CUST_FNAME = Field.alphanumeric(s_CARDDEMO_COMMAREA, 43, 25, false);
- f22_CDEMO_CUST_MNAME = Field.alphanumeric(s_CARDDEMO_COMMAREA, 68, 25, false);
- f23_CDEMO_CUST_LNAME = Field.alphanumeric(s_CARDDEMO_COMMAREA, 93, 25, false);
- f24_CDEMO_ACCOUNT_INFO = Field.group(s_CARDDEMO_COMMAREA, 118, 12);
- f25_CDEMO_ACCT_ID = Field.zoned(s_CARDDEMO_COMMAREA, 118, 11, 0, false, false, false);
- f26_CDEMO_ACCT_STATUS = Field.alphanumeric(s_CARDDEMO_COMMAREA, 129, 1, false);
- f27_CDEMO_CARD_INFO = Field.group(s_CARDDEMO_COMMAREA, 130, 16);
- f28_CDEMO_CARD_NUM = Field.zoned(s_CARDDEMO_COMMAREA, 130, 16, 0, false, false, false);
- f29_CDEMO_MORE_INFO = Field.group(s_CARDDEMO_COMMAREA, 146, 14);
- f30_CDEMO_LAST_MAP = Field.alphanumeric(s_CARDDEMO_COMMAREA, 146, 7, false);
- f31_CDEMO_LAST_MAPSET = Field.alphanumeric(s_CARDDEMO_COMMAREA, 153, 7, false);
- f32_CDEMO_CU03_INFO = Field.group(s_CARDDEMO_COMMAREA, 160, 34);
- f33_CDEMO_CU03_USRID_FIRST = Field.alphanumeric(s_CARDDEMO_COMMAREA, 160, 8, false);
- f34_CDEMO_CU03_USRID_LAST = Field.alphanumeric(s_CARDDEMO_COMMAREA, 168, 8, false);
- f35_CDEMO_CU03_PAGE_NUM = Field.zoned(s_CARDDEMO_COMMAREA, 176, 8, 0, false, false, false);
- f36_CDEMO_CU03_NEXT_PAGE_FLG = Field.alphanumeric(s_CARDDEMO_COMMAREA, 184, 1, false);
- f37_CDEMO_CU03_USR_SEL_FLG = Field.alphanumeric(s_CARDDEMO_COMMAREA, 185, 1, false);
- f38_CDEMO_CU03_USR_SELECTED = Field.alphanumeric(s_CARDDEMO_COMMAREA, 186, 8, false);
- f39_COUSR3AI = Field.group(s_COUSR3AI, 0, 324);
- f40_FILLER = Field.alphanumeric(s_COUSR3AI, 0, 12, false);
- f41_TRNNAMEL = Field.binary(s_COUSR3AI, 12, 4, 0, true, false);
- f42_TRNNAMEF = Field.alphanumeric(s_COUSR3AI, 14, 1, false);
- f43_FILLER = Field.group(s_COUSR3AI, 14, 1);
- f44_TRNNAMEA = Field.alphanumeric(s_COUSR3AI, 14, 1, false);
- f45_FILLER = Field.alphanumeric(s_COUSR3AI, 15, 4, false);
- f46_TRNNAMEI = Field.alphanumeric(s_COUSR3AI, 19, 4, false);
- f47_TITLE01L = Field.binary(s_COUSR3AI, 23, 4, 0, true, false);
- f48_TITLE01F = Field.alphanumeric(s_COUSR3AI, 25, 1, false);
- f49_FILLER = Field.group(s_COUSR3AI, 25, 1);
- f50_TITLE01A = Field.alphanumeric(s_COUSR3AI, 25, 1, false);
- f51_FILLER = Field.alphanumeric(s_COUSR3AI, 26, 4, false);
- f52_TITLE01I = Field.alphanumeric(s_COUSR3AI, 30, 40, false);
- f53_CURDATEL = Field.binary(s_COUSR3AI, 70, 4, 0, true, false);
- f54_CURDATEF = Field.alphanumeric(s_COUSR3AI, 72, 1, false);
- f55_FILLER = Field.group(s_COUSR3AI, 72, 1);
- f56_CURDATEA = Field.alphanumeric(s_COUSR3AI, 72, 1, false);
- f57_FILLER = Field.alphanumeric(s_COUSR3AI, 73, 4, false);
- f58_CURDATEI = Field.alphanumeric(s_COUSR3AI, 77, 8, false);
- f59_PGMNAMEL = Field.binary(s_COUSR3AI, 85, 4, 0, true, false);
- f60_PGMNAMEF = Field.alphanumeric(s_COUSR3AI, 87, 1, false);
- f61_FILLER = Field.group(s_COUSR3AI, 87, 1);
- f62_PGMNAMEA = Field.alphanumeric(s_COUSR3AI, 87, 1, false);
- f63_FILLER = Field.alphanumeric(s_COUSR3AI, 88, 4, false);
- f64_PGMNAMEI = Field.alphanumeric(s_COUSR3AI, 92, 8, false);
- f65_TITLE02L = Field.binary(s_COUSR3AI, 100, 4, 0, true, false);
- f66_TITLE02F = Field.alphanumeric(s_COUSR3AI, 102, 1, false);
- f67_FILLER = Field.group(s_COUSR3AI, 102, 1);
- f68_TITLE02A = Field.alphanumeric(s_COUSR3AI, 102, 1, false);
- f69_FILLER = Field.alphanumeric(s_COUSR3AI, 103, 4, false);
- f70_TITLE02I = Field.alphanumeric(s_COUSR3AI, 107, 40, false);
- f71_CURTIMEL = Field.binary(s_COUSR3AI, 147, 4, 0, true, false);
- f72_CURTIMEF = Field.alphanumeric(s_COUSR3AI, 149, 1, false);
- f73_FILLER = Field.group(s_COUSR3AI, 149, 1);
- f74_CURTIMEA = Field.alphanumeric(s_COUSR3AI, 149, 1, false);
- f75_FILLER = Field.alphanumeric(s_COUSR3AI, 150, 4, false);
- f76_CURTIMEI = Field.alphanumeric(s_COUSR3AI, 154, 8, false);
- f77_USRIDINL = Field.binary(s_COUSR3AI, 162, 4, 0, true, false);
- f78_USRIDINF = Field.alphanumeric(s_COUSR3AI, 164, 1, false);
- f79_FILLER = Field.group(s_COUSR3AI, 164, 1);
- f80_USRIDINA = Field.alphanumeric(s_COUSR3AI, 164, 1, false);
- f81_FILLER = Field.alphanumeric(s_COUSR3AI, 165, 4, false);
- f82_USRIDINI = Field.alphanumeric(s_COUSR3AI, 169, 8, false);
- f83_FNAMEL = Field.binary(s_COUSR3AI, 177, 4, 0, true, false);
- f84_FNAMEF = Field.alphanumeric(s_COUSR3AI, 179, 1, false);
- f85_FILLER = Field.group(s_COUSR3AI, 179, 1);
- f86_FNAMEA = Field.alphanumeric(s_COUSR3AI, 179, 1, false);
- f87_FILLER = Field.alphanumeric(s_COUSR3AI, 180, 4, false);
- f88_FNAMEI = Field.alphanumeric(s_COUSR3AI, 184, 20, false);
- f89_LNAMEL = Field.binary(s_COUSR3AI, 204, 4, 0, true, false);
- f90_LNAMEF = Field.alphanumeric(s_COUSR3AI, 206, 1, false);
- f91_FILLER = Field.group(s_COUSR3AI, 206, 1);
- f92_LNAMEA = Field.alphanumeric(s_COUSR3AI, 206, 1, false);
- f93_FILLER = Field.alphanumeric(s_COUSR3AI, 207, 4, false);
- f94_LNAMEI = Field.alphanumeric(s_COUSR3AI, 211, 20, false);
- f95_USRTYPEL = Field.binary(s_COUSR3AI, 231, 4, 0, true, false);
- f96_USRTYPEF = Field.alphanumeric(s_COUSR3AI, 233, 1, false);
- f97_FILLER = Field.group(s_COUSR3AI, 233, 1);
- f98_USRTYPEA = Field.alphanumeric(s_COUSR3AI, 233, 1, false);
- f99_FILLER = Field.alphanumeric(s_COUSR3AI, 234, 4, false);
- f100_USRTYPEI = Field.alphanumeric(s_COUSR3AI, 238, 1, false);
- f101_ERRMSGL = Field.binary(s_COUSR3AI, 239, 4, 0, true, false);
- f102_ERRMSGF = Field.alphanumeric(s_COUSR3AI, 241, 1, false);
- f103_FILLER = Field.group(s_COUSR3AI, 241, 1);
- f104_ERRMSGA = Field.alphanumeric(s_COUSR3AI, 241, 1, false);
- f105_FILLER = Field.alphanumeric(s_COUSR3AI, 242, 4, false);
- f106_ERRMSGI = Field.alphanumeric(s_COUSR3AI, 246, 78, false);
- f107_COUSR3AO = Field.group(s_COUSR3AI, 0, 324);
- f108_FILLER = Field.alphanumeric(s_COUSR3AI, 0, 12, false);
- f109_FILLER = Field.alphanumeric(s_COUSR3AI, 12, 3, false);
- f110_TRNNAMEC = Field.alphanumeric(s_COUSR3AI, 15, 1, false);
- f111_TRNNAMEP = Field.alphanumeric(s_COUSR3AI, 16, 1, false);
- f112_TRNNAMEH = Field.alphanumeric(s_COUSR3AI, 17, 1, false);
- f113_TRNNAMEV = Field.alphanumeric(s_COUSR3AI, 18, 1, false);
- f114_TRNNAMEO = Field.alphanumeric(s_COUSR3AI, 19, 4, false);
- f115_FILLER = Field.alphanumeric(s_COUSR3AI, 23, 3, false);
- f116_TITLE01C = Field.alphanumeric(s_COUSR3AI, 26, 1, false);
- f117_TITLE01P = Field.alphanumeric(s_COUSR3AI, 27, 1, false);
- f118_TITLE01H = Field.alphanumeric(s_COUSR3AI, 28, 1, false);
- f119_TITLE01V = Field.alphanumeric(s_COUSR3AI, 29, 1, false);
- f120_TITLE01O = Field.alphanumeric(s_COUSR3AI, 30, 40, false);
- f121_FILLER = Field.alphanumeric(s_COUSR3AI, 70, 3, false);
- f122_CURDATEC = Field.alphanumeric(s_COUSR3AI, 73, 1, false);
- f123_CURDATEP = Field.alphanumeric(s_COUSR3AI, 74, 1, false);
- f124_CURDATEH = Field.alphanumeric(s_COUSR3AI, 75, 1, false);
- f125_CURDATEV = Field.alphanumeric(s_COUSR3AI, 76, 1, false);
- f126_CURDATEO = Field.alphanumeric(s_COUSR3AI, 77, 8, false);
- f127_FILLER = Field.alphanumeric(s_COUSR3AI, 85, 3, false);
- f128_PGMNAMEC = Field.alphanumeric(s_COUSR3AI, 88, 1, false);
- f129_PGMNAMEP = Field.alphanumeric(s_COUSR3AI, 89, 1, false);
- f130_PGMNAMEH = Field.alphanumeric(s_COUSR3AI, 90, 1, false);
- f131_PGMNAMEV = Field.alphanumeric(s_COUSR3AI, 91, 1, false);
- f132_PGMNAMEO = Field.alphanumeric(s_COUSR3AI, 92, 8, false);
- f133_FILLER = Field.alphanumeric(s_COUSR3AI, 100, 3, false);
- f134_TITLE02C = Field.alphanumeric(s_COUSR3AI, 103, 1, false);
- f135_TITLE02P = Field.alphanumeric(s_COUSR3AI, 104, 1, false);
- f136_TITLE02H = Field.alphanumeric(s_COUSR3AI, 105, 1, false);
- f137_TITLE02V = Field.alphanumeric(s_COUSR3AI, 106, 1, false);
- f138_TITLE02O = Field.alphanumeric(s_COUSR3AI, 107, 40, false);
- f139_FILLER = Field.alphanumeric(s_COUSR3AI, 147, 3, false);
- f140_CURTIMEC = Field.alphanumeric(s_COUSR3AI, 150, 1, false);
- f141_CURTIMEP = Field.alphanumeric(s_COUSR3AI, 151, 1, false);
- f142_CURTIMEH = Field.alphanumeric(s_COUSR3AI, 152, 1, false);
- f143_CURTIMEV = Field.alphanumeric(s_COUSR3AI, 153, 1, false);
- f144_CURTIMEO = Field.alphanumeric(s_COUSR3AI, 154, 8, false);
- f145_FILLER = Field.alphanumeric(s_COUSR3AI, 162, 3, false);
- f146_USRIDINC = Field.alphanumeric(s_COUSR3AI, 165, 1, false);
- f147_USRIDINP = Field.alphanumeric(s_COUSR3AI, 166, 1, false);
- f148_USRIDINH = Field.alphanumeric(s_COUSR3AI, 167, 1, false);
- f149_USRIDINV = Field.alphanumeric(s_COUSR3AI, 168, 1, false);
- f150_USRIDINO = Field.alphanumeric(s_COUSR3AI, 169, 8, false);
- f151_FILLER = Field.alphanumeric(s_COUSR3AI, 177, 3, false);
- f152_FNAMEC = Field.alphanumeric(s_COUSR3AI, 180, 1, false);
- f153_FNAMEP = Field.alphanumeric(s_COUSR3AI, 181, 1, false);
- f154_FNAMEH = Field.alphanumeric(s_COUSR3AI, 182, 1, false);
- f155_FNAMEV = Field.alphanumeric(s_COUSR3AI, 183, 1, false);
- f156_FNAMEO = Field.alphanumeric(s_COUSR3AI, 184, 20, false);
- f157_FILLER = Field.alphanumeric(s_COUSR3AI, 204, 3, false);
- f158_LNAMEC = Field.alphanumeric(s_COUSR3AI, 207, 1, false);
- f159_LNAMEP = Field.alphanumeric(s_COUSR3AI, 208, 1, false);
- f160_LNAMEH = Field.alphanumeric(s_COUSR3AI, 209, 1, false);
- f161_LNAMEV = Field.alphanumeric(s_COUSR3AI, 210, 1, false);
- f162_LNAMEO = Field.alphanumeric(s_COUSR3AI, 211, 20, false);
- f163_FILLER = Field.alphanumeric(s_COUSR3AI, 231, 3, false);
- f164_USRTYPEC = Field.alphanumeric(s_COUSR3AI, 234, 1, false);
- f165_USRTYPEP = Field.alphanumeric(s_COUSR3AI, 235, 1, false);
- f166_USRTYPEH = Field.alphanumeric(s_COUSR3AI, 236, 1, false);
- f167_USRTYPEV = Field.alphanumeric(s_COUSR3AI, 237, 1, false);
- f168_USRTYPEO = Field.alphanumeric(s_COUSR3AI, 238, 1, false);
- f169_FILLER = Field.alphanumeric(s_COUSR3AI, 239, 3, false);
- f170_ERRMSGC = Field.alphanumeric(s_COUSR3AI, 242, 1, false);
- f171_ERRMSGP = Field.alphanumeric(s_COUSR3AI, 243, 1, false);
- f172_ERRMSGH = Field.alphanumeric(s_COUSR3AI, 244, 1, false);
- f173_ERRMSGV = Field.alphanumeric(s_COUSR3AI, 245, 1, false);
- f174_ERRMSGO = Field.alphanumeric(s_COUSR3AI, 246, 78, false);
- f175_CCDA_SCREEN_TITLE = Field.group(s_CCDA_SCREEN_TITLE, 0, 120);
- f176_CCDA_TITLE01 = Field.alphanumeric(s_CCDA_SCREEN_TITLE, 0, 40, false);
- f177_CCDA_TITLE02 = Field.alphanumeric(s_CCDA_SCREEN_TITLE, 40, 40, false);
- f178_CCDA_THANK_YOU = Field.alphanumeric(s_CCDA_SCREEN_TITLE, 80, 40, false);
- f179_WS_DATE_TIME = Field.group(s_WS_DATE_TIME, 0, 58);
- f180_WS_CURDATE_DATA = Field.group(s_WS_DATE_TIME, 0, 16);
- f181_WS_CURDATE = Field.group(s_WS_DATE_TIME, 0, 8);
- f182_WS_CURDATE_YEAR = Field.zoned(s_WS_DATE_TIME, 0, 4, 0, false, false, false);
- f183_WS_CURDATE_MONTH = Field.zoned(s_WS_DATE_TIME, 4, 2, 0, false, false, false);
- f184_WS_CURDATE_DAY = Field.zoned(s_WS_DATE_TIME, 6, 2, 0, false, false, false);
- f185_WS_CURDATE_N = Field.zoned(s_WS_DATE_TIME, 0, 8, 0, false, false, false);
- f186_WS_CURTIME = Field.group(s_WS_DATE_TIME, 8, 8);
- f187_WS_CURTIME_HOURS = Field.zoned(s_WS_DATE_TIME, 8, 2, 0, false, false, false);
- f188_WS_CURTIME_MINUTE = Field.zoned(s_WS_DATE_TIME, 10, 2, 0, false, false, false);
- f189_WS_CURTIME_SECOND = Field.zoned(s_WS_DATE_TIME, 12, 2, 0, false, false, false);
- f190_WS_CURTIME_MILSEC = Field.zoned(s_WS_DATE_TIME, 14, 2, 0, false, false, false);
- f191_WS_CURTIME_N = Field.zoned(s_WS_DATE_TIME, 8, 8, 0, false, false, false);
- f192_WS_CURDATE_MM_DD_YY = Field.group(s_WS_DATE_TIME, 16, 8);
- f193_WS_CURDATE_MM = Field.zoned(s_WS_DATE_TIME, 16, 2, 0, false, false, false);
- f194_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 18, 1, false);
- f195_WS_CURDATE_DD = Field.zoned(s_WS_DATE_TIME, 19, 2, 0, false, false, false);
- f196_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 21, 1, false);
- f197_WS_CURDATE_YY = Field.zoned(s_WS_DATE_TIME, 22, 2, 0, false, false, false);
- f198_WS_CURTIME_HH_MM_SS = Field.group(s_WS_DATE_TIME, 24, 8);
- f199_WS_CURTIME_HH = Field.zoned(s_WS_DATE_TIME, 24, 2, 0, false, false, false);
- f200_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 26, 1, false);
- f201_WS_CURTIME_MM = Field.zoned(s_WS_DATE_TIME, 27, 2, 0, false, false, false);
- f202_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 29, 1, false);
- f203_WS_CURTIME_SS = Field.zoned(s_WS_DATE_TIME, 30, 2, 0, false, false, false);
- f204_WS_TIMESTAMP = Field.group(s_WS_DATE_TIME, 32, 26);
- f205_WS_TIMESTAMP_DT_YYYY = Field.zoned(s_WS_DATE_TIME, 32, 4, 0, false, false, false);
- f206_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 36, 1, false);
- f207_WS_TIMESTAMP_DT_MM = Field.zoned(s_WS_DATE_TIME, 37, 2, 0, false, false, false);
- f208_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 39, 1, false);
- f209_WS_TIMESTAMP_DT_DD = Field.zoned(s_WS_DATE_TIME, 40, 2, 0, false, false, false);
- f210_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 42, 1, false);
- f211_WS_TIMESTAMP_TM_HH = Field.zoned(s_WS_DATE_TIME, 43, 2, 0, false, false, false);
- f212_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 45, 1, false);
- f213_WS_TIMESTAMP_TM_MM = Field.zoned(s_WS_DATE_TIME, 46, 2, 0, false, false, false);
- f214_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 48, 1, false);
- f215_WS_TIMESTAMP_TM_SS = Field.zoned(s_WS_DATE_TIME, 49, 2, 0, false, false, false);
- f216_FILLER = Field.alphanumeric(s_WS_DATE_TIME, 51, 1, false);
- f217_WS_TIMESTAMP_TM_MS6 = Field.zoned(s_WS_DATE_TIME, 52, 6, 0, false, false, false);
- f218_CCDA_COMMON_MESSAGES = Field.group(s_CCDA_COMMON_MESSAGES, 0, 100);
- f219_CCDA_MSG_THANK_YOU = Field.alphanumeric(s_CCDA_COMMON_MESSAGES, 0, 50, false);
- f220_CCDA_MSG_INVALID_KEY = Field.alphanumeric(s_CCDA_COMMON_MESSAGES, 50, 50, false);
- f221_SEC_USER_DATA = Field.group(s_SEC_USER_DATA, 0, 80);
- f222_SEC_USR_ID = Field.alphanumeric(s_SEC_USER_DATA, 0, 8, false);
- f223_SEC_USR_FNAME = Field.alphanumeric(s_SEC_USER_DATA, 8, 20, false);
- f224_SEC_USR_LNAME = Field.alphanumeric(s_SEC_USER_DATA, 28, 20, false);
- f225_SEC_USR_PWD = Field.alphanumeric(s_SEC_USER_DATA, 48, 8, false);
- f226_SEC_USR_TYPE = Field.alphanumeric(s_SEC_USER_DATA, 56, 1, false);
- f227_SEC_USR_FILLER = Field.alphanumeric(s_SEC_USER_DATA, 57, 23, false);
- f228_DFHAID = Field.group(s_DFHAID, 0, 36);
- f229_DFHNULL = Field.alphanumeric(s_DFHAID, 0, 1, false);
- f230_DFHENTER = Field.alphanumeric(s_DFHAID, 1, 1, false);
- f231_DFHCLEAR = Field.alphanumeric(s_DFHAID, 2, 1, false);
- f232_DFHCLRP = Field.alphanumeric(s_DFHAID, 3, 1, false);
- f233_DFHPEN = Field.alphanumeric(s_DFHAID, 4, 1, false);
- f234_DFHOPID = Field.alphanumeric(s_DFHAID, 5, 1, false);
- f235_DFHMSRE = Field.alphanumeric(s_DFHAID, 6, 1, false);
- f236_DFHSTRF = Field.alphanumeric(s_DFHAID, 7, 1, false);
- f237_DFHTRIG = Field.alphanumeric(s_DFHAID, 8, 1, false);
- f238_DFHPA1 = Field.alphanumeric(s_DFHAID, 9, 1, false);
- f239_DFHPA2 = Field.alphanumeric(s_DFHAID, 10, 1, false);
- f240_DFHPA3 = Field.alphanumeric(s_DFHAID, 11, 1, false);
- f241_DFHPF1 = Field.alphanumeric(s_DFHAID, 12, 1, false);
- f242_DFHPF2 = Field.alphanumeric(s_DFHAID, 13, 1, false);
- f243_DFHPF3 = Field.alphanumeric(s_DFHAID, 14, 1, false);
- f244_DFHPF4 = Field.alphanumeric(s_DFHAID, 15, 1, false);
- f245_DFHPF5 = Field.alphanumeric(s_DFHAID, 16, 1, false);
- f246_DFHPF6 = Field.alphanumeric(s_DFHAID, 17, 1, false);
- f247_DFHPF7 = Field.alphanumeric(s_DFHAID, 18, 1, false);
- f248_DFHPF8 = Field.alphanumeric(s_DFHAID, 19, 1, false);
- f249_DFHPF9 = Field.alphanumeric(s_DFHAID, 20, 1, false);
- f250_DFHPF10 = Field.alphanumeric(s_DFHAID, 21, 1, false);
- f251_DFHPF11 = Field.alphanumeric(s_DFHAID, 22, 1, false);
- f252_DFHPF12 = Field.alphanumeric(s_DFHAID, 23, 1, false);
- f253_DFHPF13 = Field.alphanumeric(s_DFHAID, 24, 1, false);
- f254_DFHPF14 = Field.alphanumeric(s_DFHAID, 25, 1, false);
- f255_DFHPF15 = Field.alphanumeric(s_DFHAID, 26, 1, false);
- f256_DFHPF16 = Field.alphanumeric(s_DFHAID, 27, 1, false);
- f257_DFHPF17 = Field.alphanumeric(s_DFHAID, 28, 1, false);
- f258_DFHPF18 = Field.alphanumeric(s_DFHAID, 29, 1, false);
- f259_DFHPF19 = Field.alphanumeric(s_DFHAID, 30, 1, false);
- f260_DFHPF20 = Field.alphanumeric(s_DFHAID, 31, 1, false);
- f261_DFHPF21 = Field.alphanumeric(s_DFHAID, 32, 1, false);
- f262_DFHPF22 = Field.alphanumeric(s_DFHAID, 33, 1, false);
- f263_DFHPF23 = Field.alphanumeric(s_DFHAID, 34, 1, false);
- f264_DFHPF24 = Field.alphanumeric(s_DFHAID, 35, 1, false);
- f265_DFHBMSCA = Field.group(s_DFHBMSCA, 0, 67);
- f266_DFHBMPEM = Field.alphanumeric(s_DFHBMSCA, 0, 1, false);
- f267_DFHBMPNL = Field.alphanumeric(s_DFHBMSCA, 1, 1, false);
- f268_DFHBMPFF = Field.alphanumeric(s_DFHBMSCA, 2, 1, false);
- f269_DFHBMPCR = Field.alphanumeric(s_DFHBMSCA, 3, 1, false);
- f270_DFHBMASK = Field.alphanumeric(s_DFHBMSCA, 4, 1, false);
- f271_DFHBMUNP = Field.alphanumeric(s_DFHBMSCA, 5, 1, false);
- f272_DFHBMUNN = Field.alphanumeric(s_DFHBMSCA, 6, 1, false);
- f273_DFHBMPRO = Field.alphanumeric(s_DFHBMSCA, 7, 1, false);
- f274_DFHBMBRY = Field.alphanumeric(s_DFHBMSCA, 8, 1, false);
- f275_DFHBMDAR = Field.alphanumeric(s_DFHBMSCA, 9, 1, false);
- f276_DFHBMFSE = Field.alphanumeric(s_DFHBMSCA, 10, 1, false);
- f277_DFHBMPRF = Field.alphanumeric(s_DFHBMSCA, 11, 1, false);
- f278_DFHBMASF = Field.alphanumeric(s_DFHBMSCA, 12, 1, false);
- f279_DFHBMASB = Field.alphanumeric(s_DFHBMSCA, 13, 1, false);
- f280_DFHBMEOF = Field.alphanumeric(s_DFHBMSCA, 14, 1, false);
- f281_DFHBMCUR = Field.alphanumeric(s_DFHBMSCA, 15, 1, false);
- f282_DFHBMEC = Field.alphanumeric(s_DFHBMSCA, 16, 1, false);
- f283_DFHBMFLG = Field.alphanumeric(s_DFHBMSCA, 17, 1, false);
- f284_DFHBMDET = Field.alphanumeric(s_DFHBMSCA, 18, 1, false);
- f285_DFHSA = Field.alphanumeric(s_DFHBMSCA, 19, 1, false);
- f286_DFHCOLOR = Field.alphanumeric(s_DFHBMSCA, 20, 1, false);
- f287_DFHPS = Field.alphanumeric(s_DFHBMSCA, 21, 1, false);
- f288_DFHHLT = Field.alphanumeric(s_DFHBMSCA, 22, 1, false);
- f289_DFH3270 = Field.alphanumeric(s_DFHBMSCA, 23, 1, false);
- f290_DFHVAL = Field.alphanumeric(s_DFHBMSCA, 24, 1, false);
- f291_DFHOUTLN = Field.alphanumeric(s_DFHBMSCA, 25, 1, false);
- f292_DFHBKTRN = Field.alphanumeric(s_DFHBMSCA, 26, 1, false);
- f293_DFHALL = Field.alphanumeric(s_DFHBMSCA, 27, 1, false);
- f294_DFHERROR = Field.alphanumeric(s_DFHBMSCA, 28, 1, false);
- f295_DFHDFT = Field.alphanumeric(s_DFHBMSCA, 29, 1, false);
- f296_DFHDFCOL = Field.alphanumeric(s_DFHBMSCA, 30, 1, false);
- f297_DFHBLUE = Field.alphanumeric(s_DFHBMSCA, 31, 1, false);
- f298_DFHRED = Field.alphanumeric(s_DFHBMSCA, 32, 1, false);
- f299_DFHPINK = Field.alphanumeric(s_DFHBMSCA, 33, 1, false);
- f300_DFHGREEN = Field.alphanumeric(s_DFHBMSCA, 34, 1, false);
- }
-
- private void fields1() {
- f301_DFHTURQ = Field.alphanumeric(s_DFHBMSCA, 35, 1, false);
- f302_DFHYELLO = Field.alphanumeric(s_DFHBMSCA, 36, 1, false);
- f303_DFHNEUTR = Field.alphanumeric(s_DFHBMSCA, 37, 1, false);
- f304_DFHBASE = Field.alphanumeric(s_DFHBMSCA, 38, 1, false);
- f305_DFHDFHI = Field.alphanumeric(s_DFHBMSCA, 39, 1, false);
- f306_DFHBLINK = Field.alphanumeric(s_DFHBMSCA, 40, 1, false);
- f307_DFHREVRS = Field.alphanumeric(s_DFHBMSCA, 41, 1, false);
- f308_DFHUNDLN = Field.alphanumeric(s_DFHBMSCA, 42, 1, false);
- f309_DFHMFIL = Field.alphanumeric(s_DFHBMSCA, 43, 1, false);
- f310_DFHMENT = Field.alphanumeric(s_DFHBMSCA, 44, 1, false);
- f311_DFHMFE = Field.alphanumeric(s_DFHBMSCA, 45, 1, false);
- f312_DFHUNNOD = Field.alphanumeric(s_DFHBMSCA, 46, 1, false);
- f313_DFHUNIMD = Field.alphanumeric(s_DFHBMSCA, 47, 1, false);
- f314_DFHUNNUM = Field.alphanumeric(s_DFHBMSCA, 48, 1, false);
- f315_DFHUNNUB = Field.alphanumeric(s_DFHBMSCA, 49, 1, false);
- f316_DFHUNINT = Field.alphanumeric(s_DFHBMSCA, 50, 1, false);
- f317_DFHUNNON = Field.alphanumeric(s_DFHBMSCA, 51, 1, false);
- f318_DFHPROTI = Field.alphanumeric(s_DFHBMSCA, 52, 1, false);
- f319_DFHPROTN = Field.alphanumeric(s_DFHBMSCA, 53, 1, false);
- f320_DFHMT = Field.alphanumeric(s_DFHBMSCA, 54, 1, false);
- f321_DFHMFT = Field.alphanumeric(s_DFHBMSCA, 55, 1, false);
- f322_DFHMET = Field.alphanumeric(s_DFHBMSCA, 56, 1, false);
- f323_DFHMFET = Field.alphanumeric(s_DFHBMSCA, 57, 1, false);
- f324_DFHDFFR = Field.alphanumeric(s_DFHBMSCA, 58, 1, false);
- f325_DFHUNDER = Field.alphanumeric(s_DFHBMSCA, 59, 1, false);
- f326_DFHRIGHT = Field.alphanumeric(s_DFHBMSCA, 60, 1, false);
- f327_DFHOVER = Field.alphanumeric(s_DFHBMSCA, 61, 1, false);
- f328_DFHLEFT = Field.alphanumeric(s_DFHBMSCA, 62, 1, false);
- f329_DFHBOX = Field.alphanumeric(s_DFHBMSCA, 63, 1, false);
- f330_DFHSOSI = Field.alphanumeric(s_DFHBMSCA, 64, 1, false);
- f331_DFHTRANS = Field.alphanumeric(s_DFHBMSCA, 65, 1, false);
- f332_DFHOPAQ = Field.alphanumeric(s_DFHBMSCA, 66, 1, false);
- f333_DFHCOMMAREA = Field.group(s_DFHCOMMAREA, 0, 32767);
- f334_LK_COMMAREA = Field.alphanumeric(s_DFHCOMMAREA, 0, 1, false);
- f335_DFHEIBLK = Field.group(s_DFHEIBLK, 0, 85);
- f336_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
- f337_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
- f338_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
- f339_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
- f340_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
- f341_DFHEIGDI = Field.binary(s_DFHEIBLK, 20, 4, 0, true, false);
- f342_EIBCPOSN = Field.binary(s_DFHEIBLK, 22, 4, 0, true, false);
- f343_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
- f344_EIBAID = Field.alphanumeric(s_DFHEIBLK, 26, 1, false);
- f345_EIBFN = Field.alphanumeric(s_DFHEIBLK, 27, 2, false);
- f346_EIBRCODE = Field.alphanumeric(s_DFHEIBLK, 29, 6, false);
- f347_EIBDS = Field.alphanumeric(s_DFHEIBLK, 35, 8, false);
- f348_EIBREQID = Field.alphanumeric(s_DFHEIBLK, 43, 8, false);
- f349_EIBRSRCE = Field.alphanumeric(s_DFHEIBLK, 51, 8, false);
- f350_EIBSYNC = Field.alphanumeric(s_DFHEIBLK, 59, 1, false);
- f351_EIBFREE = Field.alphanumeric(s_DFHEIBLK, 60, 1, false);
- f352_EIBRECV = Field.alphanumeric(s_DFHEIBLK, 61, 1, false);
- f353_EIBSEND = Field.alphanumeric(s_DFHEIBLK, 62, 1, false);
- f354_EIBATT = Field.alphanumeric(s_DFHEIBLK, 63, 1, false);
- f355_EIBEOC = Field.alphanumeric(s_DFHEIBLK, 64, 1, false);
- f356_EIBFMH = Field.alphanumeric(s_DFHEIBLK, 65, 1, false);
- f357_EIBCOMPL = Field.alphanumeric(s_DFHEIBLK, 66, 1, false);
- f358_EIBSIG = Field.alphanumeric(s_DFHEIBLK, 67, 1, false);
- f359_EIBCONF = Field.alphanumeric(s_DFHEIBLK, 68, 1, false);
- f360_EIBERR = Field.alphanumeric(s_DFHEIBLK, 69, 1, false);
- f361_EIBERRCD = Field.alphanumeric(s_DFHEIBLK, 70, 4, false);
- f362_EIBSYNRB = Field.alphanumeric(s_DFHEIBLK, 74, 1, false);
- f363_EIBNODAT = Field.alphanumeric(s_DFHEIBLK, 75, 1, false);
- f364_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
- f365_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
- f366_EIBRLDBK = Field.alphanumeric(s_DFHEIBLK, 84, 1, false);
- f367_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
- }
-
- /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
- * initial storage; RETURN-CODE. */
- public int runProgram() {
+ /** WORKING-STORAGE (and every storage) as its VALUE clauses set it: each entry point starts from here. */
+ private void initialState() {
System.arraycopy(IMAGE_s_WS_VARIABLES, 0, s_WS_VARIABLES.bytes, 0, IMAGE_s_WS_VARIABLES.length);
System.arraycopy(IMAGE_s_CARDDEMO_COMMAREA, 0, s_CARDDEMO_COMMAREA.bytes, 0, IMAGE_s_CARDDEMO_COMMAREA.length);
System.arraycopy(IMAGE_s_COUSR3AI, 0, s_COUSR3AI.bytes, 0, IMAGE_s_COUSR3AI.length);
@@ -1080,6 +526,29 @@ public int runProgram() {
System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ f2_WS_PGMNAME = "COUSR03C";
+ f3_WS_TRANID = "CU03";
+ f5_WS_USRSEC_FILE = "USRSEC ";
+ f6_WS_ERR_FLG = "N";
+ f9_WS_USR_MODIFIED = "N";
+ f176_CCDA_TITLE01 = " AWS Mainframe Modernization ";
+ f177_CCDA_TITLE02 = " CardDemo ";
+ f178_CCDA_THANK_YOU = "Thank you for using CCDA application... ";
+ f205_WS_TIMESTAMP_DT_YYYY = new BigDecimal("0");
+ f207_WS_TIMESTAMP_DT_MM = new BigDecimal("0");
+ f209_WS_TIMESTAMP_DT_DD = new BigDecimal("0");
+ f211_WS_TIMESTAMP_TM_HH = new BigDecimal("0");
+ f213_WS_TIMESTAMP_TM_MM = new BigDecimal("0");
+ f215_WS_TIMESTAMP_TM_SS = new BigDecimal("0");
+ f217_WS_TIMESTAMP_TM_MS6 = new BigDecimal("0");
+ f219_CCDA_MSG_THANK_YOU = "Thank you for using CardDemo application... ";
+ f220_CCDA_MSG_INVALID_KEY = "Invalid key pressed. Please see below... ";
+ }
+
+ /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
+ * initial storage; RETURN-CODE. */
+ public int runProgram() {
+ initialState();
performDepth = 0;
try {
perform(0, 10);
@@ -1089,31 +558,19 @@ public int runProgram() {
return Cobol.num(f367_GG_RETURN_CODE, CS).intValue();
}
- public void executeCousr03c() {
- runBatch(List.of(), null);
- }
-
/** One task of the program: the EIB and COMMAREA from the task, then the PROCEDURE DIVISION. */
public void runTask(CicsTask task) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
this.task = task;
caBack = () -> { };
handlers.clear();
heldKey.clear();
- System.arraycopy(IMAGE_s_WS_VARIABLES, 0, s_WS_VARIABLES.bytes, 0, IMAGE_s_WS_VARIABLES.length);
- System.arraycopy(IMAGE_s_CARDDEMO_COMMAREA, 0, s_CARDDEMO_COMMAREA.bytes, 0, IMAGE_s_CARDDEMO_COMMAREA.length);
- System.arraycopy(IMAGE_s_COUSR3AI, 0, s_COUSR3AI.bytes, 0, IMAGE_s_COUSR3AI.length);
- System.arraycopy(IMAGE_s_CCDA_SCREEN_TITLE, 0, s_CCDA_SCREEN_TITLE.bytes, 0, IMAGE_s_CCDA_SCREEN_TITLE.length);
- System.arraycopy(IMAGE_s_WS_DATE_TIME, 0, s_WS_DATE_TIME.bytes, 0, IMAGE_s_WS_DATE_TIME.length);
- System.arraycopy(IMAGE_s_CCDA_COMMON_MESSAGES, 0, s_CCDA_COMMON_MESSAGES.bytes, 0, IMAGE_s_CCDA_COMMON_MESSAGES.length);
- System.arraycopy(IMAGE_s_SEC_USER_DATA, 0, s_SEC_USER_DATA.bytes, 0, IMAGE_s_SEC_USER_DATA.length);
- System.arraycopy(IMAGE_s_DFHAID, 0, s_DFHAID.bytes, 0, IMAGE_s_DFHAID.length);
- System.arraycopy(IMAGE_s_DFHBMSCA, 0, s_DFHBMSCA.bytes, 0, IMAGE_s_DFHBMSCA.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
Cobol.move(task.transid(), f338_EIBTRNID, CS);
+ Cobol.move(task.termid() == null ? "" : task.termid(), f340_EIBTRMID, CS);
+ Cobol.store(f339_EIBTASKN, BigDecimal.valueOf(task.taskNumber()), false, CS);
java.time.LocalDateTime now = task.now();
Cobol.store(f337_EIBDATE, BigDecimal.valueOf((now.getYear() - 1900) * 1000L + now.getDayOfYear()), false, CS);
Cobol.store(f336_EIBTIME, BigDecimal.valueOf(now.getHour() * 10000L + now.getMinute() * 100L + now.getSecond()), false, CS);
@@ -1163,11 +620,47 @@ public void runTask(CicsTask task) {
caBack = () -> fill_Cousr03cCarddemoCommarea(x, s_DFHCOMMAREA, 0);
calen = cx(task, 194);
}
+ s_DFHCOMMAREA.beyond = null;
+ if (ca instanceof byte[] cb0) {
+ byte[] cb = DetCics.commareaIn(cb0, CS);
+ System.arraycopy(cb, 0, s_DFHCOMMAREA.bytes, 0, Math.min(cb.length, s_DFHCOMMAREA.bytes.length));
+ if (cb.length > s_DFHCOMMAREA.bytes.length) {
+ s_DFHCOMMAREA.beyond = java.util.Arrays.copyOfRange(cb, s_DFHCOMMAREA.bytes.length, cb.length);
+ }
+ calen = cx(task, cb.length);
+ }
+ byte[] raw = task.linkArea();
+ if (raw != null) {
+ System.arraycopy(raw, 0, s_DFHCOMMAREA.bytes, 0, Math.min(raw.length, s_DFHCOMMAREA.bytes.length));
+ int keep = s_DFHCOMMAREA.bytes.length;
+ s_DFHCOMMAREA.beyond = raw.length > keep ? java.util.Arrays.copyOfRange(raw, keep, raw.length) : null;
+ Runnable typed = caBack;
+ caBack = () -> { typed.run(); System.arraycopy(s_DFHCOMMAREA.bytes, 0, raw, 0, Math.min(raw.length, keep)); if (s_DFHCOMMAREA.beyond != null) { System.arraycopy(s_DFHCOMMAREA.beyond, 0, raw, keep, raw.length - keep); } };
+ }
+ byte[] caWhole = null;
+ if (task.exactCommarea() && calen < s_DFHCOMMAREA.bytes.length) {
+ caWhole = s_DFHCOMMAREA.bytes;
+ s_DFHCOMMAREA.bytes = java.util.Arrays.copyOf(caWhole, calen);
+ Runnable typed = caBack;
+ byte[] whole = caWhole;
+ caBack = () -> { caWhole(whole); typed.run(); };
+ }
Cobol.store(f343_EIBCALEN, BigDecimal.valueOf(calen), false, CS);
try {
- perform(0, 10);
- } catch (Goback g) {
- // RETURN / XCTL / an abend ended the program
+ try {
+ perform(0, 10);
+ } catch (Goback g) {
+ // RETURN / XCTL / an abend ended the program
+ }
+ } catch (IndexOutOfBoundsException e) {
+ if (caWhole == null) {
+ throw e;
+ }
+ throw new DetCics.PastFrom("COMMAREA past EIBCALEN (" + calen + " bytes): not modelled");
+ } finally {
+ if (caWhole != null) {
+ caWhole(caWhole);
+ }
}
if (!task.ended()) {
caBack.run();
@@ -1175,15 +668,22 @@ public void runTask(CicsTask task) {
}
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
- public Cousr03cCarddemoCommarea handleTransaction(String transid, Cousr03cCarddemoCommarea request) {
- throw new UnsupportedOperationException("handleTransaction: this port runs as runTask");
+ public Object handleTransaction(String transid, Cousr03cCarddemoCommarea request) {
+ CicsTask.Region region = CicsTask.region();
+ CicsTask task = region.transaction(transid, request);
+ region.run(task, "COUSR03C", this::runTask);
+ return task.returned(Object.class);
}
public Cousr03cCarddemoCommarea handleLink(Cousr03cCarddemoCommarea request) {
- throw new UnsupportedOperationException("handleLink: this port runs as runTask");
+ CicsTask.Region region = CicsTask.region();
+ CicsTask task = region.linked("COUSR03C", request);
+ region.run(task, "COUSR03C", this::runTask);
+ return request;
}
@@ -1203,19 +703,9 @@ private static Dd dd(List dds, String name) {
/** The batch entry. */
public int runBatch(List dds, String parm) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
- System.arraycopy(IMAGE_s_WS_VARIABLES, 0, s_WS_VARIABLES.bytes, 0, IMAGE_s_WS_VARIABLES.length);
- System.arraycopy(IMAGE_s_CARDDEMO_COMMAREA, 0, s_CARDDEMO_COMMAREA.bytes, 0, IMAGE_s_CARDDEMO_COMMAREA.length);
- System.arraycopy(IMAGE_s_COUSR3AI, 0, s_COUSR3AI.bytes, 0, IMAGE_s_COUSR3AI.length);
- System.arraycopy(IMAGE_s_CCDA_SCREEN_TITLE, 0, s_CCDA_SCREEN_TITLE.bytes, 0, IMAGE_s_CCDA_SCREEN_TITLE.length);
- System.arraycopy(IMAGE_s_WS_DATE_TIME, 0, s_WS_DATE_TIME.bytes, 0, IMAGE_s_WS_DATE_TIME.length);
- System.arraycopy(IMAGE_s_CCDA_COMMON_MESSAGES, 0, s_CCDA_COMMON_MESSAGES.bytes, 0, IMAGE_s_CCDA_COMMON_MESSAGES.length);
- System.arraycopy(IMAGE_s_SEC_USER_DATA, 0, s_SEC_USER_DATA.bytes, 0, IMAGE_s_SEC_USER_DATA.length);
- System.arraycopy(IMAGE_s_DFHAID, 0, s_DFHAID.bytes, 0, IMAGE_s_DFHAID.length);
- System.arraycopy(IMAGE_s_DFHBMSCA, 0, s_DFHBMSCA.bytes, 0, IMAGE_s_DFHBMSCA.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
try {
perform(0, 10);
} catch (Goback g) {
@@ -1224,6 +714,7 @@ public int runBatch(List dds, String parm) {
return Cobol.num(f367_GG_RETURN_CODE, CS).intValue();
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
@@ -1301,9 +792,9 @@ private int run(int i) {
/** MAIN-PARA. */
private int p0() {
// SET ERR-FLG-OFF TO TRUE
- Cobol.move("N", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "N";
// SET USR-MODIFIED-NO TO TRUE
- Cobol.move("N", f9_WS_USR_MODIFIED, CS);
+ f9_WS_USR_MODIFIED = "N";
// MOVE SPACES TO WS-MESSAGE ERRMSGO OF COUSR3AO
Cobol.moveFigurative(Figurative.SPACES, f4_WS_MESSAGE, CS);
Cobol.moveFigurative(Figurative.SPACES, f174_ERRMSGO, CS);
@@ -1317,7 +808,7 @@ private int p0() {
// MOVE DFHCOMMAREA(1:EIBCALEN) TO CARDDEMO-COMMAREA
Cobol.move(f333_DFHCOMMAREA.ref(1, Integer.valueOf(Cobol.num(f343_EIBCALEN, CS).intValue())), f10_CARDDEMO_COMMAREA, CS);
// IF NOT CDEMO-PGM-REENTER
- if (!(Cobol.compare(f18_CDEMO_PGM_CONTEXT, D1, CS) == 0)) {
+ if (!(isCdemoPgmReenter())) {
// SET CDEMO-PGM-REENTER TO TRUE
Cobol.move(D1, f18_CDEMO_PGM_CONTEXT, CS);
// MOVE LOW-VALUES TO COUSR3AO
@@ -1364,7 +855,7 @@ private int p0() {
perform(3, 3);
} else if (true) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE CCDA-MSG-INVALID-KEY TO WS-MESSAGE
Cobol.move(f220_CCDA_MSG_INVALID_KEY, f4_WS_MESSAGE, CS);
// PERFORM SEND-USRDEL-SCREEN
@@ -1374,7 +865,7 @@ private int p0() {
}
// EXEC CICS RETURN TRANSID (WS-TRANID) COMMAREA (CARDDEMO-COMMAREA) END-EXEC
caBack.run();
- task.returnTransid(Cobol.text(f3_WS_TRANID, CS).strip(), out_Cousr03cCarddemoCommarea(f10_CARDDEMO_COMMAREA.storage(), f10_CARDDEMO_COMMAREA.offset()), null);
+ task.returnTransid(f3_WS_TRANID.strip(), out_Cousr03cCarddemoCommarea(f10_CARDDEMO_COMMAREA.storage(), f10_CARDDEMO_COMMAREA.offset()), null);
if (true) throw new Goback();
return 1;
}
@@ -1384,7 +875,7 @@ private int p1() {
// EVALUATE TRUE
if (((Cobol.compareFigurative(f82_USRIDINI, Figurative.SPACES, CS) == 0 || Cobol.compareFigurative(f82_USRIDINI, Figurative.LOW_VALUES, CS) == 0))) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'User ID can NOT be empty...' TO WS-MESSAGE
Cobol.move("User ID can NOT be empty...", f4_WS_MESSAGE, CS);
// MOVE -1 TO USRIDINL OF COUSR3AI
@@ -1397,7 +888,7 @@ private int p1() {
// CONTINUE
}
// IF NOT ERR-FLG-ON
- if (!(Cobol.compare(f6_WS_ERR_FLG, "Y", CS) == 0)) {
+ if (!(isErrFlgOn())) {
// MOVE SPACES TO FNAMEI OF COUSR3AI LNAMEI OF COUSR3AI USRTYPEI OF COUSR3AI
Cobol.moveFigurative(Figurative.SPACES, f88_FNAMEI, CS);
Cobol.moveFigurative(Figurative.SPACES, f94_LNAMEI, CS);
@@ -1408,7 +899,7 @@ private int p1() {
perform(7, 7);
}
// IF NOT ERR-FLG-ON
- if (!(Cobol.compare(f6_WS_ERR_FLG, "Y", CS) == 0)) {
+ if (!(isErrFlgOn())) {
// MOVE SEC-USR-FNAME TO FNAMEI OF COUSR3AI
Cobol.move(f223_SEC_USR_FNAME, f88_FNAMEI, CS);
// MOVE SEC-USR-LNAME TO LNAMEI OF COUSR3AI
@@ -1426,7 +917,7 @@ private int p2() {
// EVALUATE TRUE
if (((Cobol.compareFigurative(f82_USRIDINI, Figurative.SPACES, CS) == 0 || Cobol.compareFigurative(f82_USRIDINI, Figurative.LOW_VALUES, CS) == 0))) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'User ID can NOT be empty...' TO WS-MESSAGE
Cobol.move("User ID can NOT be empty...", f4_WS_MESSAGE, CS);
// MOVE -1 TO USRIDINL OF COUSR3AI
@@ -1439,7 +930,7 @@ private int p2() {
// CONTINUE
}
// IF NOT ERR-FLG-ON
- if (!(Cobol.compare(f6_WS_ERR_FLG, "Y", CS) == 0)) {
+ if (!(isErrFlgOn())) {
// MOVE USRIDINI OF COUSR3AI TO SEC-USR-ID
Cobol.move(f82_USRIDINI, f222_SEC_USR_ID, CS);
// PERFORM READ-USER-SEC-FILE
@@ -1467,7 +958,7 @@ private int p3() {
String xr1 = task.xctl(Cobol.text(f15_CDEMO_TO_PROGRAM, CS).strip(), out_Cousr03cCarddemoCommarea(f10_CARDDEMO_COMMAREA.storage(), f10_CARDDEMO_COMMAREA.offset()));
if ("NORMAL".equals(xr1)) throw new Goback();
Cobol.store(f364_EIBRESP, BigDecimal.valueOf(DetCics.resp(xr1)), false, CS);
- Cobol.store(f365_EIBRESP2, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f365_EIBRESP2, BigDecimal.valueOf(DetCics.xctlResp2(xr1)), false, CS);
if (DetCics.resp(xr1) != 0) {
int to = condition(DetCics.condition(DetCics.resp(xr1)));
if (to >= 0) return GOTO | to;
@@ -1601,10 +1092,10 @@ private int p6() {
private int p7() {
// EXEC CICS READ DATASET (WS-USRSEC-FILE) INTO (SEC-USER-DATA) LENGTH (LENGTH OF SEC-USER-DATA) RIDFLD (SEC-USR-ID) KEYLENGTH (LENGTH OF SEC-USR-ID) UPD
byte[] rec9 = DetCics.bytes(f222_SEC_USR_ID);
- CicsTask.FileRead read8 = task.readForUpdate(Cobol.text(f5_WS_USRSEC_FILE, CS).strip(), () -> store(Cobol.text(f5_WS_USRSEC_FILE, CS).strip()).find(rec9));
+ CicsTask.FileRead read8 = task.readForUpdate(f5_WS_USRSEC_FILE.strip(), () -> store(f5_WS_USRSEC_FILE.strip()).find(rec9));
if (read8.record() != null) {
DetCics.put(f221_SEC_USER_DATA, read8.record());
- heldKey.put(Cobol.text(f5_WS_USRSEC_FILE, CS).strip(), rec9);
+ heldKey.put(f5_WS_USRSEC_FILE.strip(), rec9);
}
Cobol.store(f364_EIBRESP, BigDecimal.valueOf(read8.resp()), false, CS);
Cobol.store(f365_EIBRESP2, BigDecimal.valueOf(read8.resp2()), false, CS);
@@ -1621,7 +1112,7 @@ private int p7() {
perform(4, 4);
} else if ((Cobol.num(f7_WS_RESP_CD, CS).compareTo(D13) == 0)) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'User ID NOT found...' TO WS-MESSAGE
Cobol.move("User ID NOT found...", f4_WS_MESSAGE, CS);
// MOVE -1 TO USRIDINL OF COUSR3AI
@@ -1632,7 +1123,7 @@ private int p7() {
// DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD
Sysout.display("RESP:", Cobol.displayText(f7_WS_RESP_CD, CS), "REAS:", Cobol.displayText(f8_WS_REAS_CD, CS));
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'Unable to lookup User...' TO WS-MESSAGE
Cobol.move("Unable to lookup User...", f4_WS_MESSAGE, CS);
// MOVE -1 TO FNAMEL OF COUSR3AI
@@ -1646,8 +1137,8 @@ private int p7() {
/** DELETE-USER-SEC-FILE. */
private int p8() {
// EXEC CICS DELETE DATASET (WS-USRSEC-FILE) RESP (WS-RESP-CD) RESP2 (WS-REAS-CD) END-EXEC
- byte[] held11 = heldKey.get(Cobol.text(f5_WS_USRSEC_FILE, CS).strip());
- int resp10 = task.deleteHeld(Cobol.text(f5_WS_USRSEC_FILE, CS).strip(), () -> store(Cobol.text(f5_WS_USRSEC_FILE, CS).strip()).remove(held11));
+ byte[] held11 = heldKey.get(f5_WS_USRSEC_FILE.strip());
+ int resp10 = task.deleteHeld(f5_WS_USRSEC_FILE.strip(), () -> store(f5_WS_USRSEC_FILE.strip()).remove(held11));
Cobol.store(f364_EIBRESP, BigDecimal.valueOf(resp10), false, CS);
Cobol.store(f365_EIBRESP2, BigDecimal.valueOf(0), false, CS);
Cobol.store(f7_WS_RESP_CD, BigDecimal.valueOf(resp10), false, CS);
@@ -1666,7 +1157,7 @@ private int p8() {
perform(4, 4);
} else if ((Cobol.num(f7_WS_RESP_CD, CS).compareTo(D13) == 0)) {
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'User ID NOT found...' TO WS-MESSAGE
Cobol.move("User ID NOT found...", f4_WS_MESSAGE, CS);
// MOVE -1 TO USRIDINL OF COUSR3AI
@@ -1677,7 +1168,7 @@ private int p8() {
// DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD
Sysout.display("RESP:", Cobol.displayText(f7_WS_RESP_CD, CS), "REAS:", Cobol.displayText(f8_WS_REAS_CD, CS));
// MOVE 'Y' TO WS-ERR-FLG
- Cobol.move("Y", f6_WS_ERR_FLG, CS);
+ f6_WS_ERR_FLG = "Y";
// MOVE 'Unable to Update User...' TO WS-MESSAGE
Cobol.move("Unable to Update User...", f4_WS_MESSAGE, CS);
// MOVE -1 TO FNAMEL OF COUSR3AI
@@ -1710,4 +1201,10 @@ private int p10() {
return 11;
}
+ /** 88 CDEMO-PGM-REENTER of CDEMO-PGM-CONTEXT. */
+ private boolean isCdemoPgmReenter() { return Cobol.compare(f18_CDEMO_PGM_CONTEXT, D1, CS) == 0; }
+
+ /** 88 ERR-FLG-ON of WS-ERR-FLG. */
+ private boolean isErrFlgOn() { return f6_WS_ERR_FLG.equals("Y"); }
+
}
diff --git a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/CsutldtcService.java b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/CsutldtcService.java
index 15db80ce5..f2de0f21e 100644
--- a/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/CsutldtcService.java
+++ b/tests/cobol_mainframe/port_invariance/aws-mainframe-modernization-carddemo/java/CsutldtcService.java
@@ -62,46 +62,27 @@ public class CsutldtcService {
private final Storage s_LS_RESULT = new Storage(IMAGE_s_LS_RESULT.length);
private final Storage s_GG_RETURN_CODE = new Storage(IMAGE_s_GG_RETURN_CODE.length);
- private Field f10_WS_MESSAGE;
- private Field f11_WS_SEVERITY;
- private Field f12_WS_SEVERITY_N;
- private Field f13_FILLER;
- private Field f14_WS_MSG_NO;
- private Field f15_WS_MSG_NO_N;
- private Field f16_FILLER;
- private Field f17_WS_RESULT;
- private Field f18_FILLER;
- private Field f19_FILLER;
- private Field f1_WS_DATE_TO_TEST;
- private Field f20_WS_DATE;
- private Field f21_FILLER;
- private Field f22_FILLER;
- private Field f23_WS_DATE_FMT;
- private Field f24_FILLER;
- private Field f25_FILLER;
- private Field f26_FEEDBACK_CODE;
- private Field f27_FEEDBACK_TOKEN_VALUE;
- private Field f28_CASE_1_CONDITION_ID;
- private Field f29_SEVERITY;
- private Field f2_VSTRING_LENGTH;
- private Field f30_MSG_NO;
- private Field f31_CASE_2_CONDITION_ID;
- private Field f32_CLASS_CODE;
- private Field f33_CAUSE_CODE;
- private Field f34_CASE_SEV_CTL;
- private Field f35_FACILITY_ID;
- private Field f36_I_S_INFO;
- private Field f37_LS_DATE;
- private Field f38_LS_DATE_FORMAT;
- private Field f39_LS_RESULT;
- private Field f3_VSTRING_TEXT;
- private Field f40_GG_RETURN_CODE;
- private Field f4_VSTRING_CHAR;
- private Field f5_WS_DATE_FORMAT;
- private Field f6_VSTRING_LENGTH;
- private Field f7_VSTRING_TEXT;
- private Field f8_VSTRING_CHAR;
- private Field f9_OUTPUT_LILLIAN;
+ private final Field f1_WS_DATE_TO_TEST = Field.group(s_WS_DATE_TO_TEST, 0, 258);
+ private final Field f2_VSTRING_LENGTH = Field.binary(s_WS_DATE_TO_TEST, 0, 4, 0, true, false);
+ private final Field f3_VSTRING_TEXT = Field.group(s_WS_DATE_TO_TEST, 2, 256);
+ private final Field f5_WS_DATE_FORMAT = Field.group(s_WS_DATE_FORMAT, 0, 258);
+ private final Field f6_VSTRING_LENGTH = Field.binary(s_WS_DATE_FORMAT, 0, 4, 0, true, false);
+ private final Field f7_VSTRING_TEXT = Field.group(s_WS_DATE_FORMAT, 2, 256);
+ private final Field f9_OUTPUT_LILLIAN = Field.binary(s_OUTPUT_LILLIAN, 0, 9, 0, true, false);
+ private final Field f10_WS_MESSAGE = Field.group(s_WS_MESSAGE, 0, 80);
+ private final Field f12_WS_SEVERITY_N = Field.zoned(s_WS_MESSAGE, 0, 4, 0, false, false, false);
+ private final Field f15_WS_MSG_NO_N = Field.zoned(s_WS_MESSAGE, 15, 4, 0, false, false, false);
+ private final Field f17_WS_RESULT = Field.alphanumeric(s_WS_MESSAGE, 20, 15, false);
+ private final Field f20_WS_DATE = Field.alphanumeric(s_WS_MESSAGE, 45, 10, false);
+ private final Field f23_WS_DATE_FMT = Field.alphanumeric(s_WS_MESSAGE, 66, 10, false);
+ private final Field f26_FEEDBACK_CODE = Field.group(s_FEEDBACK_CODE, 0, 12);
+ private final Field f27_FEEDBACK_TOKEN_VALUE = Field.group(s_FEEDBACK_CODE, 0, 8);
+ private final Field f29_SEVERITY = Field.binary(s_FEEDBACK_CODE, 0, 4, 0, true, false);
+ private final Field f30_MSG_NO = Field.binary(s_FEEDBACK_CODE, 2, 4, 0, true, false);
+ private final Field f37_LS_DATE = Field.alphanumeric(s_LS_DATE, 0, 10, false);
+ private final Field f38_LS_DATE_FORMAT = Field.alphanumeric(s_LS_DATE_FORMAT, 0, 10, false);
+ private final Field f39_LS_RESULT = Field.alphanumeric(s_LS_RESULT, 0, 80, false);
+ private final Field f40_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
private final DatasetResolver datasets;
@@ -112,7 +93,11 @@ public CsutldtcService(DatasetResolver datasets, CobolFiles files, MainframeCloc
this.datasets = datasets;
this.files = files;
this.clock = clock;
- fields0();
+ initialState();
+ }
+
+ /** WORKING-STORAGE (and every storage) as its VALUE clauses set it: each entry point starts from here. */
+ private void initialState() {
System.arraycopy(IMAGE_s_WS_DATE_TO_TEST, 0, s_WS_DATE_TO_TEST.bytes, 0, IMAGE_s_WS_DATE_TO_TEST.length);
System.arraycopy(IMAGE_s_WS_DATE_FORMAT, 0, s_WS_DATE_FORMAT.bytes, 0, IMAGE_s_WS_DATE_FORMAT.length);
System.arraycopy(IMAGE_s_OUTPUT_LILLIAN, 0, s_OUTPUT_LILLIAN.bytes, 0, IMAGE_s_OUTPUT_LILLIAN.length);
@@ -124,61 +109,10 @@ public CsutldtcService(DatasetResolver datasets, CobolFiles files, MainframeCloc
System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
}
- private void fields0() {
- f1_WS_DATE_TO_TEST = Field.group(s_WS_DATE_TO_TEST, 0, 258);
- f2_VSTRING_LENGTH = Field.binary(s_WS_DATE_TO_TEST, 0, 4, 0, true, false);
- f3_VSTRING_TEXT = Field.group(s_WS_DATE_TO_TEST, 2, 256);
- f4_VSTRING_CHAR = Field.alphanumeric(s_WS_DATE_TO_TEST, 2, 1, false);
- f5_WS_DATE_FORMAT = Field.group(s_WS_DATE_FORMAT, 0, 258);
- f6_VSTRING_LENGTH = Field.binary(s_WS_DATE_FORMAT, 0, 4, 0, true, false);
- f7_VSTRING_TEXT = Field.group(s_WS_DATE_FORMAT, 2, 256);
- f8_VSTRING_CHAR = Field.alphanumeric(s_WS_DATE_FORMAT, 2, 1, false);
- f9_OUTPUT_LILLIAN = Field.binary(s_OUTPUT_LILLIAN, 0, 9, 0, true, false);
- f10_WS_MESSAGE = Field.group(s_WS_MESSAGE, 0, 80);
- f11_WS_SEVERITY = Field.alphanumeric(s_WS_MESSAGE, 0, 4, false);
- f12_WS_SEVERITY_N = Field.zoned(s_WS_MESSAGE, 0, 4, 0, false, false, false);
- f13_FILLER = Field.alphanumeric(s_WS_MESSAGE, 4, 11, false);
- f14_WS_MSG_NO = Field.alphanumeric(s_WS_MESSAGE, 15, 4, false);
- f15_WS_MSG_NO_N = Field.zoned(s_WS_MESSAGE, 15, 4, 0, false, false, false);
- f16_FILLER = Field.alphanumeric(s_WS_MESSAGE, 19, 1, false);
- f17_WS_RESULT = Field.alphanumeric(s_WS_MESSAGE, 20, 15, false);
- f18_FILLER = Field.alphanumeric(s_WS_MESSAGE, 35, 1, false);
- f19_FILLER = Field.alphanumeric(s_WS_MESSAGE, 36, 9, false);
- f20_WS_DATE = Field.alphanumeric(s_WS_MESSAGE, 45, 10, false);
- f21_FILLER = Field.alphanumeric(s_WS_MESSAGE, 55, 1, false);
- f22_FILLER = Field.alphanumeric(s_WS_MESSAGE, 56, 10, false);
- f23_WS_DATE_FMT = Field.alphanumeric(s_WS_MESSAGE, 66, 10, false);
- f24_FILLER = Field.alphanumeric(s_WS_MESSAGE, 76, 1, false);
- f25_FILLER = Field.alphanumeric(s_WS_MESSAGE, 77, 3, false);
- f26_FEEDBACK_CODE = Field.group(s_FEEDBACK_CODE, 0, 12);
- f27_FEEDBACK_TOKEN_VALUE = Field.group(s_FEEDBACK_CODE, 0, 8);
- f28_CASE_1_CONDITION_ID = Field.group(s_FEEDBACK_CODE, 0, 4);
- f29_SEVERITY = Field.binary(s_FEEDBACK_CODE, 0, 4, 0, true, false);
- f30_MSG_NO = Field.binary(s_FEEDBACK_CODE, 2, 4, 0, true, false);
- f31_CASE_2_CONDITION_ID = Field.group(s_FEEDBACK_CODE, 0, 4);
- f32_CLASS_CODE = Field.binary(s_FEEDBACK_CODE, 0, 4, 0, true, false);
- f33_CAUSE_CODE = Field.binary(s_FEEDBACK_CODE, 2, 4, 0, true, false);
- f34_CASE_SEV_CTL = Field.alphanumeric(s_FEEDBACK_CODE, 4, 1, false);
- f35_FACILITY_ID = Field.alphanumeric(s_FEEDBACK_CODE, 5, 3, false);
- f36_I_S_INFO = Field.binary(s_FEEDBACK_CODE, 8, 9, 0, true, false);
- f37_LS_DATE = Field.alphanumeric(s_LS_DATE, 0, 10, false);
- f38_LS_DATE_FORMAT = Field.alphanumeric(s_LS_DATE_FORMAT, 0, 10, false);
- f39_LS_RESULT = Field.alphanumeric(s_LS_RESULT, 0, 80, false);
- f40_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
- }
-
/** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
* initial storage; RETURN-CODE. */
public int runProgram() {
- System.arraycopy(IMAGE_s_WS_DATE_TO_TEST, 0, s_WS_DATE_TO_TEST.bytes, 0, IMAGE_s_WS_DATE_TO_TEST.length);
- System.arraycopy(IMAGE_s_WS_DATE_FORMAT, 0, s_WS_DATE_FORMAT.bytes, 0, IMAGE_s_WS_DATE_FORMAT.length);
- System.arraycopy(IMAGE_s_OUTPUT_LILLIAN, 0, s_OUTPUT_LILLIAN.bytes, 0, IMAGE_s_OUTPUT_LILLIAN.length);
- System.arraycopy(IMAGE_s_WS_MESSAGE, 0, s_WS_MESSAGE.bytes, 0, IMAGE_s_WS_MESSAGE.length);
- System.arraycopy(IMAGE_s_FEEDBACK_CODE, 0, s_FEEDBACK_CODE.bytes, 0, IMAGE_s_FEEDBACK_CODE.length);
- System.arraycopy(IMAGE_s_LS_DATE, 0, s_LS_DATE.bytes, 0, IMAGE_s_LS_DATE.length);
- System.arraycopy(IMAGE_s_LS_DATE_FORMAT, 0, s_LS_DATE_FORMAT.bytes, 0, IMAGE_s_LS_DATE_FORMAT.length);
- System.arraycopy(IMAGE_s_LS_RESULT, 0, s_LS_RESULT.bytes, 0, IMAGE_s_LS_RESULT.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
performDepth = 0;
try {
perform(0, 2);
@@ -188,12 +122,9 @@ public int runProgram() {
return Cobol.num(f40_GG_RETURN_CODE, CS).intValue();
}
- public void executeCsutldtc() {
- runBatch(List.of(), null);
- }
-
public int handleCall(CobolRef arg1, CobolRef arg2, CobolRef arg3) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
Cobol.move(arg1.get() == null ? "" : arg1.get(), f37_LS_DATE, CS);
Cobol.move(arg2.get() == null ? "" : arg2.get(), f38_LS_DATE_FORMAT, CS);
@@ -209,6 +140,7 @@ public int handleCall(CobolRef arg1, CobolRef arg2, CobolRef dds, String name) {
/** The batch entry. */
public int runBatch(List dds, String parm) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
- System.arraycopy(IMAGE_s_WS_DATE_TO_TEST, 0, s_WS_DATE_TO_TEST.bytes, 0, IMAGE_s_WS_DATE_TO_TEST.length);
- System.arraycopy(IMAGE_s_WS_DATE_FORMAT, 0, s_WS_DATE_FORMAT.bytes, 0, IMAGE_s_WS_DATE_FORMAT.length);
- System.arraycopy(IMAGE_s_OUTPUT_LILLIAN, 0, s_OUTPUT_LILLIAN.bytes, 0, IMAGE_s_OUTPUT_LILLIAN.length);
- System.arraycopy(IMAGE_s_WS_MESSAGE, 0, s_WS_MESSAGE.bytes, 0, IMAGE_s_WS_MESSAGE.length);
- System.arraycopy(IMAGE_s_FEEDBACK_CODE, 0, s_FEEDBACK_CODE.bytes, 0, IMAGE_s_FEEDBACK_CODE.length);
- System.arraycopy(IMAGE_s_LS_DATE, 0, s_LS_DATE.bytes, 0, IMAGE_s_LS_DATE.length);
- System.arraycopy(IMAGE_s_LS_DATE_FORMAT, 0, s_LS_DATE_FORMAT.bytes, 0, IMAGE_s_LS_DATE_FORMAT.length);
- System.arraycopy(IMAGE_s_LS_RESULT, 0, s_LS_RESULT.bytes, 0, IMAGE_s_LS_RESULT.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
byte[] parmText = (parm == null ? "" : parm).getBytes(CS);
s_LS_DATE.bytes[0] = (byte) (parmText.length >> 8);
s_LS_DATE.bytes[1] = (byte) parmText.length;
@@ -251,6 +176,7 @@ public int runBatch(List dds, String parm) {
return Cobol.num(f40_GG_RETURN_CODE, CS).intValue();
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
@@ -361,31 +287,31 @@ private int p1() {
// MOVE MSG-NO OF FEEDBACK-CODE TO WS-MSG-NO-N
Cobol.move(f30_MSG_NO, f15_WS_MSG_NO_N, CS);
// EVALUATE TRUE
- if ((Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000", CS) == 0)) {
+ if ((isFcInvalidDate())) {
// MOVE 'Date is valid' TO WS-RESULT
Cobol.move("Date is valid", f17_WS_RESULT, CS);
- } else if ((Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\u0000\u0003\u0009\u00cbY\u00c3\u00c5\u00c5", CS) == 0)) {
+ } else if ((isFcInsufficientData())) {
// MOVE 'Insufficient' TO WS-RESULT
Cobol.move("Insufficient", f17_WS_RESULT, CS);
- } else if ((Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\u0000\u0003\u0009\u00ccY\u00c3\u00c5\u00c5", CS) == 0)) {
+ } else if ((isFcBadDateValue())) {
// MOVE 'Datevalue error' TO WS-RESULT
Cobol.move("Datevalue error", f17_WS_RESULT, CS);
- } else if ((Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\u0000\u0003\u0009\u00cdY\u00c3\u00c5\u00c5", CS) == 0)) {
+ } else if ((isFcInvalidEra())) {
// MOVE 'Invalid Era ' TO WS-RESULT
Cobol.move("Invalid Era ", f17_WS_RESULT, CS);
- } else if ((Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\u0000\u0003\u0009\u00d1Y\u00c3\u00c5\u00c5", CS) == 0)) {
+ } else if ((isFcUnsuppRange())) {
// MOVE 'Unsupp. Range ' TO WS-RESULT
Cobol.move("Unsupp. Range ", f17_WS_RESULT, CS);
- } else if ((Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\u0000\u0003\u0009\u00d5Y\u00c3\u00c5\u00c5", CS) == 0)) {
+ } else if ((isFcInvalidMonth())) {
// MOVE 'Invalid month ' TO WS-RESULT
Cobol.move("Invalid month ", f17_WS_RESULT, CS);
- } else if ((Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\u0000\u0003\u0009\u00d6Y\u00c3\u00c5\u00c5", CS) == 0)) {
+ } else if ((isFcBadPicString())) {
// MOVE 'Bad Pic String ' TO WS-RESULT
Cobol.move("Bad Pic String ", f17_WS_RESULT, CS);
- } else if ((Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\u0000\u0003\u0009\u00d8Y\u00c3\u00c5\u00c5", CS) == 0)) {
+ } else if ((isFcNonNumericData())) {
// MOVE 'Nonnumeric data' TO WS-RESULT
Cobol.move("Nonnumeric data", f17_WS_RESULT, CS);
- } else if ((Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\u0000\u0003\u0009\u00d9Y\u00c3\u00c5\u00c5", CS) == 0)) {
+ } else if ((isFcYearInEraZero())) {
// MOVE 'YearInEra is 0 ' TO WS-RESULT
Cobol.move("YearInEra is 0 ", f17_WS_RESULT, CS);
} else if (true) {
@@ -401,4 +327,31 @@ private int p2() {
return 3;
}
+ /** 88 FC-INVALID-DATE of FEEDBACK-TOKEN-VALUE. */
+ private boolean isFcInvalidDate() { return Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\000\000\000\000\000\000\000\000", CS) == 0; }
+
+ /** 88 FC-INSUFFICIENT-DATA of FEEDBACK-TOKEN-VALUE. */
+ private boolean isFcInsufficientData() { return Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\000\003\011\313Y\303\305\305", CS) == 0; }
+
+ /** 88 FC-BAD-DATE-VALUE of FEEDBACK-TOKEN-VALUE. */
+ private boolean isFcBadDateValue() { return Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\000\003\011\314Y\303\305\305", CS) == 0; }
+
+ /** 88 FC-INVALID-ERA of FEEDBACK-TOKEN-VALUE. */
+ private boolean isFcInvalidEra() { return Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\000\003\011\315Y\303\305\305", CS) == 0; }
+
+ /** 88 FC-UNSUPP-RANGE of FEEDBACK-TOKEN-VALUE. */
+ private boolean isFcUnsuppRange() { return Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\000\003\011\321Y\303\305\305", CS) == 0; }
+
+ /** 88 FC-INVALID-MONTH of FEEDBACK-TOKEN-VALUE. */
+ private boolean isFcInvalidMonth() { return Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\000\003\011\325Y\303\305\305", CS) == 0; }
+
+ /** 88 FC-BAD-PIC-STRING of FEEDBACK-TOKEN-VALUE. */
+ private boolean isFcBadPicString() { return Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\000\003\011\326Y\303\305\305", CS) == 0; }
+
+ /** 88 FC-NON-NUMERIC-DATA of FEEDBACK-TOKEN-VALUE. */
+ private boolean isFcNonNumericData() { return Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\000\003\011\330Y\303\305\305", CS) == 0; }
+
+ /** 88 FC-YEAR-IN-ERA-ZERO of FEEDBACK-TOKEN-VALUE. */
+ private boolean isFcYearInEraZero() { return Cobol.compare(f27_FEEDBACK_TOKEN_VALUE, "\000\003\011\331Y\303\305\305", CS) == 0; }
+
}
diff --git a/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/AbndprocService.java b/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/AbndprocService.java
index aeba451f7..3d14d6180 100644
--- a/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/AbndprocService.java
+++ b/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/AbndprocService.java
@@ -46,8 +46,6 @@ public class AbndprocService {
"AAAAAAAAAAwwMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKzAwMDAwMDAwKzAwMDAwMDAwKzAwMDAwMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg",
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg",
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"));
- private static final byte[] IMAGE_s_WS_ABND_KEY_LEN = Base64.getDecoder().decode(String.join("",
- "AAAADA=="));
private static final byte[] IMAGE_s_DB2_DATE_REFORMAT = Base64.getDecoder().decode(String.join("",
"MDAwMCAwMCAwMA=="));
private static final byte[] IMAGE_s_DATA_STORE_TYPE = Base64.getDecoder().decode(String.join("",
@@ -84,7 +82,6 @@ public class AbndprocService {
"AAA="));
private final Storage s_WS_CICS_WORK_AREA = new Storage(IMAGE_s_WS_CICS_WORK_AREA.length);
private final Storage s_WS_ABND_AREA = new Storage(IMAGE_s_WS_ABND_AREA.length);
- private final Storage s_WS_ABND_KEY_LEN = new Storage(IMAGE_s_WS_ABND_KEY_LEN.length);
private final Storage s_DB2_DATE_REFORMAT = new Storage(IMAGE_s_DB2_DATE_REFORMAT.length);
private final Storage s_DATA_STORE_TYPE = new Storage(IMAGE_s_DATA_STORE_TYPE.length);
private final Storage s_WS_EIBTASKN12 = new Storage(IMAGE_s_WS_EIBTASKN12.length);
@@ -102,111 +99,21 @@ public class AbndprocService {
private final Storage s_DFHEIBLK = new Storage(IMAGE_s_DFHEIBLK.length);
private final Storage s_GG_RETURN_CODE = new Storage(IMAGE_s_GG_RETURN_CODE.length);
- private Field f100_EIBSYNRB;
- private Field f101_EIBNODAT;
- private Field f102_EIBRESP;
- private Field f103_EIBRESP2;
- private Field f104_EIBRLDBK;
- private Field f105_GG_RETURN_CODE;
- private Field f10_ABND_DATE;
- private Field f11_ABND_TIME;
- private Field f12_ABND_CODE;
- private Field f13_ABND_PROGRAM;
- private Field f14_ABND_RESPCODE;
- private Field f15_ABND_RESP2CODE;
- private Field f16_ABND_SQLCODE;
- private Field f17_ABND_FREEFORM;
- private Field f18_WS_ABND_KEY_LEN;
- private Field f19_DB2_DATE_REFORMAT;
- private Field f1_WS_CICS_WORK_AREA;
- private Field f20_DB2_DATE_REF_YR;
- private Field f21_FILLER;
- private Field f22_DB2_DATE_REF_MNTH;
- private Field f23_FILLER;
- private Field f24_DB2_DATE_REF_DAY;
- private Field f25_DATA_STORE_TYPE;
- private Field f26_WS_EIBTASKN12;
- private Field f27_WS_SQLCODE_DISP;
- private Field f28_WS_U_TIME;
- private Field f29_WS_ORIG_DATE;
- private Field f2_WS_CICS_RESP;
- private Field f30_WS_ORIG_DATE_GRP;
- private Field f31_WS_ORIG_DATE_DD;
- private Field f32_FILLER;
- private Field f33_WS_ORIG_DATE_MM;
- private Field f34_FILLER;
- private Field f35_WS_ORIG_DATE_YYYY;
- private Field f36_WS_ORIG_DATE_GRP_X;
- private Field f37_WS_ORIG_DATE_DD_X;
- private Field f38_FILLER;
- private Field f39_WS_ORIG_DATE_MM_X;
- private Field f3_WS_CICS_RESP2;
- private Field f40_FILLER;
- private Field f41_WS_ORIG_DATE_YYYY_X;
- private Field f42_WS_PASSED_DATA;
- private Field f43_WS_TEST_KEY;
- private Field f44_WS_SORT_CODE;
- private Field f45_WS_CUSTOMER_RANGE;
- private Field f46_WS_CUSTOMER_RANGE_TOP;
- private Field f47_WS_CUSTOMER_RANGE_MIDDLE;
- private Field f48_WS_CUSTOMER_RANGE_BOTTOM;
- private Field f49_WS_SORT_DIV;
- private Field f4_WS_ABND_AREA;
- private Field f50_WS_SORT_DIV1;
- private Field f51_WS_SORT_DIV2;
- private Field f52_WS_SORT_DIV3;
- private Field f53_CUSTOMER_KY;
- private Field f54_REQUIRED_SORT_CODE;
- private Field f55_REQUIRED_ACC_NUM;
- private Field f56_PROCTRAN_RIDFLD;
- private Field f57_SQLCODE_DISPLAY;
- private Field f58_MY_ABEND_CODE;
- private Field f59_DFHCOMMAREA;
- private Field f5_ABND_VSAM_KEY;
- private Field f60_COMM_VSAM_KEY;
- private Field f61_COMM_UTIME_KEY;
- private Field f62_COMM_TASKNO_KEY;
- private Field f63_COMM_APPLID;
- private Field f64_COMM_TRANID;
- private Field f65_COMM_DATE;
- private Field f66_COMM_TIME;
- private Field f67_COMM_CODE;
- private Field f68_COMM_PROGRAM;
- private Field f69_COMM_RESPCODE;
- private Field f6_ABND_UTIME_KEY;
- private Field f70_COMM_RESP2CODE;
- private Field f71_COMM_SQLCODE;
- private Field f72_COMM_FREEFORM;
- private Field f73_DFHEIBLK;
- private Field f74_EIBTIME;
- private Field f75_EIBDATE;
- private Field f76_EIBTRNID;
- private Field f77_EIBTASKN;
- private Field f78_EIBTRMID;
- private Field f79_DFHEIGDI;
- private Field f7_ABND_TASKNO_KEY;
- private Field f80_EIBCPOSN;
- private Field f81_EIBCALEN;
- private Field f82_EIBAID;
- private Field f83_EIBFN;
- private Field f84_EIBRCODE;
- private Field f85_EIBDS;
- private Field f86_EIBREQID;
- private Field f87_EIBRSRCE;
- private Field f88_EIBSYNC;
- private Field f89_EIBFREE;
- private Field f8_ABND_APPLID;
- private Field f90_EIBRECV;
- private Field f91_EIBSEND;
- private Field f92_EIBATT;
- private Field f93_EIBEOC;
- private Field f94_EIBFMH;
- private Field f95_EIBCOMPL;
- private Field f96_EIBSIG;
- private Field f97_EIBCONF;
- private Field f98_EIBERR;
- private Field f99_EIBERRCD;
- private Field f9_ABND_TRANID;
+ private final Field f2_WS_CICS_RESP = Field.binary(s_WS_CICS_WORK_AREA, 0, 8, 0, true, false);
+ private final Field f3_WS_CICS_RESP2 = Field.binary(s_WS_CICS_WORK_AREA, 4, 8, 0, true, false);
+ private final Field f4_WS_ABND_AREA = Field.group(s_WS_ABND_AREA, 0, 681);
+ private final Field f5_ABND_VSAM_KEY = Field.group(s_WS_ABND_AREA, 0, 12);
+ private final Field f59_DFHCOMMAREA = Field.group(s_DFHCOMMAREA, 0, 681);
+ private final Field f74_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
+ private final Field f75_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
+ private final Field f76_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
+ private final Field f77_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
+ private final Field f78_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
+ private final Field f81_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
+ private final Field f102_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
+ private final Field f103_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
+ private final Field f105_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
+ private long f18_WS_ABND_KEY_LEN; // WS-ABND-KEY-LEN PIC S9(8) BINARY
private static WsAbndAreaKey id_WsAbndArea(byte[] rec) {
Storage s = Storage.of(rec);
@@ -223,6 +130,14 @@ private static WsAbndAreaKey id_WsAbndArea(byte[] rec) {
/** Writes the COMMAREA's bytes back into the object the task carries (a LINKed program's is its caller's). */
private Runnable caBack = () -> { };
+ /** The program ends because of an abend: a LINKed program's COMMAREA writes stay its caller's. */
+ private Goback abended() {
+ if (task.level() > 1) {
+ caBack.run();
+ }
+ return new Goback();
+ }
+
@SuppressWarnings("unchecked")
private DetCics.Store store(String name) {
return (DetCics.Store) stores.computeIfAbsent(name, n -> switch (n) {
@@ -248,16 +163,26 @@ private static int paragraph(String name) {
return i;
}
- /** A condition the command neither returned in RESP nor ignored: its HANDLE CONDITION label, or CICS's
- * default action -- an abend, to this program's HANDLE ABEND exit or ending the task. */
+ /** A condition the command did not return in RESP: its HANDLE CONDITION label, or -1 (go on) when IGNOREd
+ * (#4414); else CICS's default action -- -1 for one whose default is to ignore it (#4413: EOC); else the
+ * ERROR label (#4502: IBM, HANDLE CONDITION: "if the default action for such a condition terminates the
+ * task abnormally, and the condition ERROR has been specified, the action for ERROR is taken"); else an
+ * abend, to this program's HANDLE ABEND exit or ending the task. */
private int condition(String cond) {
Integer h = handlers.get(cond);
if (h != null) {
return h;
}
+ if (DetCics.ignoredByDefault(cond)) {
+ return -1;
+ }
+ Integer error = handlers.get("ERROR");
+ if (error != null) {
+ return error;
+ }
String label = task.abendOnCondition(cond);
if (label == null) {
- throw new Goback();
+ throw abended();
}
return paragraph(label);
}
@@ -266,7 +191,7 @@ private static int cx(CicsTask task, int whole) {
return task.eibcalen() == null ? whole : task.eibcalen();
}
- private void in_AbndprocAbndinfoRec(AbndprocAbndinfoRec d, Storage s, int base) {
+ private void in_AbndprocDfhcommarea(AbndprocDfhcommarea d, Storage s, int base) {
if (d == null) {
return;
}
@@ -284,7 +209,7 @@ private void in_AbndprocAbndinfoRec(AbndprocAbndinfoRec d, Storage s, int base)
Cobol.move(d.getAbndFreeform() == null ? "" : d.getAbndFreeform(), Field.alphanumeric(s, base + 81, 600, false), CS);
}
- private void fill_AbndprocAbndinfoRec(AbndprocAbndinfoRec d, Storage s, int base) {
+ private void fill_AbndprocDfhcommarea(AbndprocDfhcommarea d, Storage s, int base) {
d.setAbndUtimeKey(Cobol.num(Field.packed(s, base + 0, 15, 0, true), CS).longValue());
d.setAbndTasknoKey(Cobol.num(Field.zoned(s, base + 8, 4, 0, false, false, false), CS).intValue());
d.setAbndApplid(Cobol.text(Field.alphanumeric(s, base + 12, 8, false), CS));
@@ -299,12 +224,20 @@ private void fill_AbndprocAbndinfoRec(AbndprocAbndinfoRec d, Storage s, int base
d.setAbndFreeform(Cobol.text(Field.alphanumeric(s, base + 81, 600, false), CS));
}
- private AbndprocAbndinfoRec out_AbndprocAbndinfoRec(Storage s, int base) {
- AbndprocAbndinfoRec d = new AbndprocAbndinfoRec();
- fill_AbndprocAbndinfoRec(d, s, base);
+ private AbndprocDfhcommarea out_AbndprocDfhcommarea(Storage s, int base) {
+ AbndprocDfhcommarea d = new AbndprocDfhcommarea();
+ fill_AbndprocDfhcommarea(d, s, base);
return d;
}
+ /** #4270 (X23): DFHCOMMAREA's whole record again, with what the task left in its EIBCALEN bytes. */
+ private void caWhole(byte[] whole) {
+ if (s_DFHCOMMAREA.bytes != whole) {
+ System.arraycopy(s_DFHCOMMAREA.bytes, 0, whole, 0, s_DFHCOMMAREA.bytes.length);
+ s_DFHCOMMAREA.bytes = whole;
+ }
+ }
+
private final WsAbndAreaRepository wsAbndAreaRepository;
private final DatasetResolver datasets;
@@ -316,123 +249,12 @@ public AbndprocService(WsAbndAreaRepository wsAbndAreaRepository, DatasetResolve
this.datasets = datasets;
this.files = files;
this.clock = clock;
- fields0();
- }
-
- private void fields0() {
- f1_WS_CICS_WORK_AREA = Field.group(s_WS_CICS_WORK_AREA, 0, 8);
- f2_WS_CICS_RESP = Field.binary(s_WS_CICS_WORK_AREA, 0, 8, 0, true, false);
- f3_WS_CICS_RESP2 = Field.binary(s_WS_CICS_WORK_AREA, 4, 8, 0, true, false);
- f4_WS_ABND_AREA = Field.group(s_WS_ABND_AREA, 0, 681);
- f5_ABND_VSAM_KEY = Field.group(s_WS_ABND_AREA, 0, 12);
- f6_ABND_UTIME_KEY = Field.packed(s_WS_ABND_AREA, 0, 15, 0, true);
- f7_ABND_TASKNO_KEY = Field.zoned(s_WS_ABND_AREA, 8, 4, 0, false, false, false);
- f8_ABND_APPLID = Field.alphanumeric(s_WS_ABND_AREA, 12, 8, false);
- f9_ABND_TRANID = Field.alphanumeric(s_WS_ABND_AREA, 20, 4, false);
- f10_ABND_DATE = Field.alphanumeric(s_WS_ABND_AREA, 24, 10, false);
- f11_ABND_TIME = Field.alphanumeric(s_WS_ABND_AREA, 34, 8, false);
- f12_ABND_CODE = Field.alphanumeric(s_WS_ABND_AREA, 42, 4, false);
- f13_ABND_PROGRAM = Field.alphanumeric(s_WS_ABND_AREA, 46, 8, false);
- f14_ABND_RESPCODE = Field.zoned(s_WS_ABND_AREA, 54, 8, 0, true, true, true);
- f15_ABND_RESP2CODE = Field.zoned(s_WS_ABND_AREA, 63, 8, 0, true, true, true);
- f16_ABND_SQLCODE = Field.zoned(s_WS_ABND_AREA, 72, 8, 0, true, true, true);
- f17_ABND_FREEFORM = Field.alphanumeric(s_WS_ABND_AREA, 81, 600, false);
- f18_WS_ABND_KEY_LEN = Field.binary(s_WS_ABND_KEY_LEN, 0, 8, 0, true, false);
- f19_DB2_DATE_REFORMAT = Field.group(s_DB2_DATE_REFORMAT, 0, 10);
- f20_DB2_DATE_REF_YR = Field.zoned(s_DB2_DATE_REFORMAT, 0, 4, 0, false, false, false);
- f21_FILLER = Field.alphanumeric(s_DB2_DATE_REFORMAT, 4, 1, false);
- f22_DB2_DATE_REF_MNTH = Field.zoned(s_DB2_DATE_REFORMAT, 5, 2, 0, false, false, false);
- f23_FILLER = Field.alphanumeric(s_DB2_DATE_REFORMAT, 7, 1, false);
- f24_DB2_DATE_REF_DAY = Field.zoned(s_DB2_DATE_REFORMAT, 8, 2, 0, false, false, false);
- f25_DATA_STORE_TYPE = Field.alphanumeric(s_DATA_STORE_TYPE, 0, 1, false);
- f26_WS_EIBTASKN12 = Field.zoned(s_WS_EIBTASKN12, 0, 12, 0, false, false, false);
- f27_WS_SQLCODE_DISP = Field.zoned(s_WS_SQLCODE_DISP, 0, 9, 0, false, false, false);
- f28_WS_U_TIME = Field.packed(s_WS_U_TIME, 0, 15, 0, true);
- f29_WS_ORIG_DATE = Field.alphanumeric(s_WS_ORIG_DATE, 0, 10, false);
- f30_WS_ORIG_DATE_GRP = Field.group(s_WS_ORIG_DATE, 0, 10);
- f31_WS_ORIG_DATE_DD = Field.zoned(s_WS_ORIG_DATE, 0, 2, 0, false, false, false);
- f32_FILLER = Field.alphanumeric(s_WS_ORIG_DATE, 2, 1, false);
- f33_WS_ORIG_DATE_MM = Field.zoned(s_WS_ORIG_DATE, 3, 2, 0, false, false, false);
- f34_FILLER = Field.alphanumeric(s_WS_ORIG_DATE, 5, 1, false);
- f35_WS_ORIG_DATE_YYYY = Field.zoned(s_WS_ORIG_DATE, 6, 4, 0, false, false, false);
- f36_WS_ORIG_DATE_GRP_X = Field.group(s_WS_ORIG_DATE_GRP_X, 0, 10);
- f37_WS_ORIG_DATE_DD_X = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 0, 2, false);
- f38_FILLER = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 2, 1, false);
- f39_WS_ORIG_DATE_MM_X = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 3, 2, false);
- f40_FILLER = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 5, 1, false);
- f41_WS_ORIG_DATE_YYYY_X = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 6, 4, false);
- f42_WS_PASSED_DATA = Field.group(s_WS_PASSED_DATA, 0, 13);
- f43_WS_TEST_KEY = Field.alphanumeric(s_WS_PASSED_DATA, 0, 4, false);
- f44_WS_SORT_CODE = Field.zoned(s_WS_PASSED_DATA, 4, 6, 0, false, false, false);
- f45_WS_CUSTOMER_RANGE = Field.group(s_WS_PASSED_DATA, 10, 3);
- f46_WS_CUSTOMER_RANGE_TOP = Field.alphanumeric(s_WS_PASSED_DATA, 10, 1, false);
- f47_WS_CUSTOMER_RANGE_MIDDLE = Field.alphanumeric(s_WS_PASSED_DATA, 11, 1, false);
- f48_WS_CUSTOMER_RANGE_BOTTOM = Field.alphanumeric(s_WS_PASSED_DATA, 12, 1, false);
- f49_WS_SORT_DIV = Field.group(s_WS_SORT_DIV, 0, 6);
- f50_WS_SORT_DIV1 = Field.alphanumeric(s_WS_SORT_DIV, 0, 2, false);
- f51_WS_SORT_DIV2 = Field.alphanumeric(s_WS_SORT_DIV, 2, 2, false);
- f52_WS_SORT_DIV3 = Field.alphanumeric(s_WS_SORT_DIV, 4, 2, false);
- f53_CUSTOMER_KY = Field.group(s_CUSTOMER_KY, 0, 14);
- f54_REQUIRED_SORT_CODE = Field.zoned(s_CUSTOMER_KY, 0, 6, 0, false, false, false);
- f55_REQUIRED_ACC_NUM = Field.zoned(s_CUSTOMER_KY, 6, 8, 0, false, false, false);
- f56_PROCTRAN_RIDFLD = Field.binary(s_PROCTRAN_RIDFLD, 0, 8, 0, true, false);
- f57_SQLCODE_DISPLAY = Field.zoned(s_SQLCODE_DISPLAY, 0, 8, 0, true, true, true);
- f58_MY_ABEND_CODE = Field.alphanumeric(s_MY_ABEND_CODE, 0, 4, false);
- f59_DFHCOMMAREA = Field.group(s_DFHCOMMAREA, 0, 681);
- f60_COMM_VSAM_KEY = Field.group(s_DFHCOMMAREA, 0, 12);
- f61_COMM_UTIME_KEY = Field.packed(s_DFHCOMMAREA, 0, 15, 0, true);
- f62_COMM_TASKNO_KEY = Field.zoned(s_DFHCOMMAREA, 8, 4, 0, false, false, false);
- f63_COMM_APPLID = Field.alphanumeric(s_DFHCOMMAREA, 12, 8, false);
- f64_COMM_TRANID = Field.alphanumeric(s_DFHCOMMAREA, 20, 4, false);
- f65_COMM_DATE = Field.alphanumeric(s_DFHCOMMAREA, 24, 10, false);
- f66_COMM_TIME = Field.alphanumeric(s_DFHCOMMAREA, 34, 8, false);
- f67_COMM_CODE = Field.alphanumeric(s_DFHCOMMAREA, 42, 4, false);
- f68_COMM_PROGRAM = Field.alphanumeric(s_DFHCOMMAREA, 46, 8, false);
- f69_COMM_RESPCODE = Field.zoned(s_DFHCOMMAREA, 54, 8, 0, true, true, true);
- f70_COMM_RESP2CODE = Field.zoned(s_DFHCOMMAREA, 63, 8, 0, true, true, true);
- f71_COMM_SQLCODE = Field.zoned(s_DFHCOMMAREA, 72, 8, 0, true, true, true);
- f72_COMM_FREEFORM = Field.alphanumeric(s_DFHCOMMAREA, 81, 600, false);
- f73_DFHEIBLK = Field.group(s_DFHEIBLK, 0, 85);
- f74_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
- f75_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
- f76_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
- f77_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
- f78_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
- f79_DFHEIGDI = Field.binary(s_DFHEIBLK, 20, 4, 0, true, false);
- f80_EIBCPOSN = Field.binary(s_DFHEIBLK, 22, 4, 0, true, false);
- f81_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
- f82_EIBAID = Field.alphanumeric(s_DFHEIBLK, 26, 1, false);
- f83_EIBFN = Field.alphanumeric(s_DFHEIBLK, 27, 2, false);
- f84_EIBRCODE = Field.alphanumeric(s_DFHEIBLK, 29, 6, false);
- f85_EIBDS = Field.alphanumeric(s_DFHEIBLK, 35, 8, false);
- f86_EIBREQID = Field.alphanumeric(s_DFHEIBLK, 43, 8, false);
- f87_EIBRSRCE = Field.alphanumeric(s_DFHEIBLK, 51, 8, false);
- f88_EIBSYNC = Field.alphanumeric(s_DFHEIBLK, 59, 1, false);
- f89_EIBFREE = Field.alphanumeric(s_DFHEIBLK, 60, 1, false);
- f90_EIBRECV = Field.alphanumeric(s_DFHEIBLK, 61, 1, false);
- f91_EIBSEND = Field.alphanumeric(s_DFHEIBLK, 62, 1, false);
- f92_EIBATT = Field.alphanumeric(s_DFHEIBLK, 63, 1, false);
- f93_EIBEOC = Field.alphanumeric(s_DFHEIBLK, 64, 1, false);
- f94_EIBFMH = Field.alphanumeric(s_DFHEIBLK, 65, 1, false);
- f95_EIBCOMPL = Field.alphanumeric(s_DFHEIBLK, 66, 1, false);
- f96_EIBSIG = Field.alphanumeric(s_DFHEIBLK, 67, 1, false);
- f97_EIBCONF = Field.alphanumeric(s_DFHEIBLK, 68, 1, false);
- f98_EIBERR = Field.alphanumeric(s_DFHEIBLK, 69, 1, false);
- f99_EIBERRCD = Field.alphanumeric(s_DFHEIBLK, 70, 4, false);
- f100_EIBSYNRB = Field.alphanumeric(s_DFHEIBLK, 74, 1, false);
- f101_EIBNODAT = Field.alphanumeric(s_DFHEIBLK, 75, 1, false);
- f102_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
- f103_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
- f104_EIBRLDBK = Field.alphanumeric(s_DFHEIBLK, 84, 1, false);
- f105_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
}
- /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
- * initial storage; RETURN-CODE. */
- public int runProgram() {
+ /** WORKING-STORAGE (and every storage) as its VALUE clauses set it: each entry point starts from here. */
+ private void initialState() {
System.arraycopy(IMAGE_s_WS_CICS_WORK_AREA, 0, s_WS_CICS_WORK_AREA.bytes, 0, IMAGE_s_WS_CICS_WORK_AREA.length);
System.arraycopy(IMAGE_s_WS_ABND_AREA, 0, s_WS_ABND_AREA.bytes, 0, IMAGE_s_WS_ABND_AREA.length);
- System.arraycopy(IMAGE_s_WS_ABND_KEY_LEN, 0, s_WS_ABND_KEY_LEN.bytes, 0, IMAGE_s_WS_ABND_KEY_LEN.length);
System.arraycopy(IMAGE_s_DB2_DATE_REFORMAT, 0, s_DB2_DATE_REFORMAT.bytes, 0, IMAGE_s_DB2_DATE_REFORMAT.length);
System.arraycopy(IMAGE_s_DATA_STORE_TYPE, 0, s_DATA_STORE_TYPE.bytes, 0, IMAGE_s_DATA_STORE_TYPE.length);
System.arraycopy(IMAGE_s_WS_EIBTASKN12, 0, s_WS_EIBTASKN12.bytes, 0, IMAGE_s_WS_EIBTASKN12.length);
@@ -449,6 +271,13 @@ public int runProgram() {
System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ f18_WS_ABND_KEY_LEN = 12L;
+ }
+
+ /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
+ * initial storage; RETURN-CODE. */
+ public int runProgram() {
+ initialState();
performDepth = 0;
try {
perform(0, 5);
@@ -458,38 +287,19 @@ public int runProgram() {
return Cobol.num(f105_GG_RETURN_CODE, CS).intValue();
}
- public void executeAbndproc() {
- runBatch(List.of(), null);
- }
-
/** One task of the program: the EIB and COMMAREA from the task, then the PROCEDURE DIVISION. */
public void runTask(CicsTask task) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
this.task = task;
caBack = () -> { };
handlers.clear();
heldKey.clear();
- System.arraycopy(IMAGE_s_WS_CICS_WORK_AREA, 0, s_WS_CICS_WORK_AREA.bytes, 0, IMAGE_s_WS_CICS_WORK_AREA.length);
- System.arraycopy(IMAGE_s_WS_ABND_AREA, 0, s_WS_ABND_AREA.bytes, 0, IMAGE_s_WS_ABND_AREA.length);
- System.arraycopy(IMAGE_s_WS_ABND_KEY_LEN, 0, s_WS_ABND_KEY_LEN.bytes, 0, IMAGE_s_WS_ABND_KEY_LEN.length);
- System.arraycopy(IMAGE_s_DB2_DATE_REFORMAT, 0, s_DB2_DATE_REFORMAT.bytes, 0, IMAGE_s_DB2_DATE_REFORMAT.length);
- System.arraycopy(IMAGE_s_DATA_STORE_TYPE, 0, s_DATA_STORE_TYPE.bytes, 0, IMAGE_s_DATA_STORE_TYPE.length);
- System.arraycopy(IMAGE_s_WS_EIBTASKN12, 0, s_WS_EIBTASKN12.bytes, 0, IMAGE_s_WS_EIBTASKN12.length);
- System.arraycopy(IMAGE_s_WS_SQLCODE_DISP, 0, s_WS_SQLCODE_DISP.bytes, 0, IMAGE_s_WS_SQLCODE_DISP.length);
- System.arraycopy(IMAGE_s_WS_U_TIME, 0, s_WS_U_TIME.bytes, 0, IMAGE_s_WS_U_TIME.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE, 0, s_WS_ORIG_DATE.bytes, 0, IMAGE_s_WS_ORIG_DATE.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE_GRP_X, 0, s_WS_ORIG_DATE_GRP_X.bytes, 0, IMAGE_s_WS_ORIG_DATE_GRP_X.length);
- System.arraycopy(IMAGE_s_WS_PASSED_DATA, 0, s_WS_PASSED_DATA.bytes, 0, IMAGE_s_WS_PASSED_DATA.length);
- System.arraycopy(IMAGE_s_WS_SORT_DIV, 0, s_WS_SORT_DIV.bytes, 0, IMAGE_s_WS_SORT_DIV.length);
- System.arraycopy(IMAGE_s_CUSTOMER_KY, 0, s_CUSTOMER_KY.bytes, 0, IMAGE_s_CUSTOMER_KY.length);
- System.arraycopy(IMAGE_s_PROCTRAN_RIDFLD, 0, s_PROCTRAN_RIDFLD.bytes, 0, IMAGE_s_PROCTRAN_RIDFLD.length);
- System.arraycopy(IMAGE_s_SQLCODE_DISPLAY, 0, s_SQLCODE_DISPLAY.bytes, 0, IMAGE_s_SQLCODE_DISPLAY.length);
- System.arraycopy(IMAGE_s_MY_ABEND_CODE, 0, s_MY_ABEND_CODE.bytes, 0, IMAGE_s_MY_ABEND_CODE.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
Cobol.move(task.transid(), f76_EIBTRNID, CS);
+ Cobol.move(task.termid() == null ? "" : task.termid(), f78_EIBTRMID, CS);
+ Cobol.store(f77_EIBTASKN, BigDecimal.valueOf(task.taskNumber()), false, CS);
java.time.LocalDateTime now = task.now();
Cobol.store(f75_EIBDATE, BigDecimal.valueOf((now.getYear() - 1900) * 1000L + now.getDayOfYear()), false, CS);
Cobol.store(f74_EIBTIME, BigDecimal.valueOf(now.getHour() * 10000L + now.getMinute() * 100L + now.getSecond()), false, CS);
@@ -498,16 +308,52 @@ public void runTask(CicsTask task) {
}
Object ca = task.hasCommarea() ? task.commarea(Object.class) : null;
int calen = 0;
- if (ca instanceof AbndprocAbndinfoRec x) {
- in_AbndprocAbndinfoRec(x, s_DFHCOMMAREA, 0);
- caBack = () -> fill_AbndprocAbndinfoRec(x, s_DFHCOMMAREA, 0);
+ if (ca instanceof AbndprocDfhcommarea x) {
+ in_AbndprocDfhcommarea(x, s_DFHCOMMAREA, 0);
+ caBack = () -> fill_AbndprocDfhcommarea(x, s_DFHCOMMAREA, 0);
calen = cx(task, 681);
}
+ s_DFHCOMMAREA.beyond = null;
+ if (ca instanceof byte[] cb0) {
+ byte[] cb = DetCics.commareaIn(cb0, CS);
+ System.arraycopy(cb, 0, s_DFHCOMMAREA.bytes, 0, Math.min(cb.length, s_DFHCOMMAREA.bytes.length));
+ if (cb.length > s_DFHCOMMAREA.bytes.length) {
+ s_DFHCOMMAREA.beyond = java.util.Arrays.copyOfRange(cb, s_DFHCOMMAREA.bytes.length, cb.length);
+ }
+ calen = cx(task, cb.length);
+ }
+ byte[] raw = task.linkArea();
+ if (raw != null) {
+ System.arraycopy(raw, 0, s_DFHCOMMAREA.bytes, 0, Math.min(raw.length, s_DFHCOMMAREA.bytes.length));
+ int keep = s_DFHCOMMAREA.bytes.length;
+ s_DFHCOMMAREA.beyond = raw.length > keep ? java.util.Arrays.copyOfRange(raw, keep, raw.length) : null;
+ Runnable typed = caBack;
+ caBack = () -> { typed.run(); System.arraycopy(s_DFHCOMMAREA.bytes, 0, raw, 0, Math.min(raw.length, keep)); if (s_DFHCOMMAREA.beyond != null) { System.arraycopy(s_DFHCOMMAREA.beyond, 0, raw, keep, raw.length - keep); } };
+ }
+ byte[] caWhole = null;
+ if (task.exactCommarea() && calen < s_DFHCOMMAREA.bytes.length) {
+ caWhole = s_DFHCOMMAREA.bytes;
+ s_DFHCOMMAREA.bytes = java.util.Arrays.copyOf(caWhole, calen);
+ Runnable typed = caBack;
+ byte[] whole = caWhole;
+ caBack = () -> { caWhole(whole); typed.run(); };
+ }
Cobol.store(f81_EIBCALEN, BigDecimal.valueOf(calen), false, CS);
try {
- perform(0, 5);
- } catch (Goback g) {
- // RETURN / XCTL / an abend ended the program
+ try {
+ perform(0, 5);
+ } catch (Goback g) {
+ // RETURN / XCTL / an abend ended the program
+ }
+ } catch (IndexOutOfBoundsException e) {
+ if (caWhole == null) {
+ throw e;
+ }
+ throw new DetCics.PastFrom("COMMAREA past EIBCALEN (" + calen + " bytes): not modelled");
+ } finally {
+ if (caWhole != null) {
+ caWhole(caWhole);
+ }
}
if (!task.ended()) {
caBack.run();
@@ -515,11 +361,15 @@ public void runTask(CicsTask task) {
}
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
- public AbndprocAbndinfoRec handleLink(AbndprocAbndinfoRec request) {
- throw new UnsupportedOperationException("handleLink: this port runs as runTask");
+ public AbndprocDfhcommarea handleLink(AbndprocDfhcommarea request) {
+ CicsTask.Region region = CicsTask.region();
+ CicsTask task = region.linked("ABNDPROC", request);
+ region.run(task, "ABNDPROC", this::runTask);
+ return request;
}
@@ -539,26 +389,9 @@ private static Dd dd(List dds, String name) {
/** The batch entry. */
public int runBatch(List dds, String parm) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
- System.arraycopy(IMAGE_s_WS_CICS_WORK_AREA, 0, s_WS_CICS_WORK_AREA.bytes, 0, IMAGE_s_WS_CICS_WORK_AREA.length);
- System.arraycopy(IMAGE_s_WS_ABND_AREA, 0, s_WS_ABND_AREA.bytes, 0, IMAGE_s_WS_ABND_AREA.length);
- System.arraycopy(IMAGE_s_WS_ABND_KEY_LEN, 0, s_WS_ABND_KEY_LEN.bytes, 0, IMAGE_s_WS_ABND_KEY_LEN.length);
- System.arraycopy(IMAGE_s_DB2_DATE_REFORMAT, 0, s_DB2_DATE_REFORMAT.bytes, 0, IMAGE_s_DB2_DATE_REFORMAT.length);
- System.arraycopy(IMAGE_s_DATA_STORE_TYPE, 0, s_DATA_STORE_TYPE.bytes, 0, IMAGE_s_DATA_STORE_TYPE.length);
- System.arraycopy(IMAGE_s_WS_EIBTASKN12, 0, s_WS_EIBTASKN12.bytes, 0, IMAGE_s_WS_EIBTASKN12.length);
- System.arraycopy(IMAGE_s_WS_SQLCODE_DISP, 0, s_WS_SQLCODE_DISP.bytes, 0, IMAGE_s_WS_SQLCODE_DISP.length);
- System.arraycopy(IMAGE_s_WS_U_TIME, 0, s_WS_U_TIME.bytes, 0, IMAGE_s_WS_U_TIME.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE, 0, s_WS_ORIG_DATE.bytes, 0, IMAGE_s_WS_ORIG_DATE.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE_GRP_X, 0, s_WS_ORIG_DATE_GRP_X.bytes, 0, IMAGE_s_WS_ORIG_DATE_GRP_X.length);
- System.arraycopy(IMAGE_s_WS_PASSED_DATA, 0, s_WS_PASSED_DATA.bytes, 0, IMAGE_s_WS_PASSED_DATA.length);
- System.arraycopy(IMAGE_s_WS_SORT_DIV, 0, s_WS_SORT_DIV.bytes, 0, IMAGE_s_WS_SORT_DIV.length);
- System.arraycopy(IMAGE_s_CUSTOMER_KY, 0, s_CUSTOMER_KY.bytes, 0, IMAGE_s_CUSTOMER_KY.length);
- System.arraycopy(IMAGE_s_PROCTRAN_RIDFLD, 0, s_PROCTRAN_RIDFLD.bytes, 0, IMAGE_s_PROCTRAN_RIDFLD.length);
- System.arraycopy(IMAGE_s_SQLCODE_DISPLAY, 0, s_SQLCODE_DISPLAY.bytes, 0, IMAGE_s_SQLCODE_DISPLAY.length);
- System.arraycopy(IMAGE_s_MY_ABEND_CODE, 0, s_MY_ABEND_CODE.bytes, 0, IMAGE_s_MY_ABEND_CODE.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
byte[] parmText = (parm == null ? "" : parm).getBytes(CS);
s_DFHCOMMAREA.bytes[0] = (byte) (parmText.length >> 8);
s_DFHCOMMAREA.bytes[1] = (byte) parmText.length;
@@ -571,6 +404,7 @@ public int runBatch(List dds, String parm) {
return Cobol.num(f105_GG_RETURN_CODE, CS).intValue();
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
diff --git a/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/DbcrfunService.java b/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/DbcrfunService.java
index 66662d213..04499a571 100644
--- a/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/DbcrfunService.java
+++ b/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/DbcrfunService.java
@@ -45,10 +45,6 @@ public class DbcrfunService {
private static final BigDecimal D496 = new BigDecimal("496");
private static final BigDecimal D923 = new BigDecimal("923");
- private static final byte[] IMAGE_s_SORTCODE = Base64.getDecoder().decode(String.join("",
- "OTg3NjU0"));
- private static final byte[] IMAGE_s_SYSIDERR_RETRY = Base64.getDecoder().decode(String.join("",
- "MDAw"));
private static final byte[] IMAGE_s_HOST_ACCOUNT_ROW = Base64.getDecoder().decode(String.join("",
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAAAADCAgICAgICAgICAAAAAAICAgICAgICAgICAgICAgICAgICAAAAAAAAAMAAAAAAAADA=="));
private static final byte[] IMAGE_s_HOST_PROCTRAN_ROW = Base64.getDecoder().decode(String.join("",
@@ -121,8 +117,6 @@ public class DbcrfunService {
"AAAADAAAAAwgICAgAAAADCAgICAAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAAAAAAAAAIA=="));
private static final byte[] IMAGE_s_GG_RETURN_CODE = Base64.getDecoder().decode(String.join("",
"AAA="));
- private final Storage s_SORTCODE = new Storage(IMAGE_s_SORTCODE.length);
- private final Storage s_SYSIDERR_RETRY = new Storage(IMAGE_s_SYSIDERR_RETRY.length);
private final Storage s_HOST_ACCOUNT_ROW = new Storage(IMAGE_s_HOST_ACCOUNT_ROW.length);
private final Storage s_HOST_PROCTRAN_ROW = new Storage(IMAGE_s_HOST_PROCTRAN_ROW.length);
private final Storage s_SQLCA = new Storage(IMAGE_s_SQLCA.length);
@@ -158,264 +152,85 @@ public class DbcrfunService {
private final Storage s_DFHEIBLK = new Storage(IMAGE_s_DFHEIBLK.length);
private final Storage s_GG_RETURN_CODE = new Storage(IMAGE_s_GG_RETURN_CODE.length);
- private Field f100_FILLER;
- private Field f101_WS_ORIG_DATE_MM;
- private Field f102_FILLER;
- private Field f103_WS_ORIG_DATE_YYYY;
- private Field f104_WS_ORIG_DATE_GRP_X;
- private Field f105_WS_ORIG_DATE_DD_X;
- private Field f106_FILLER;
- private Field f107_WS_ORIG_DATE_MM_X;
- private Field f108_FILLER;
- private Field f109_WS_ORIG_DATE_YYYY_X;
- private Field f10_HV_ACCOUNT_INT_RATE;
- private Field f110_PROCTRAN_AREA;
- private Field f111_PROC_TRAN_DATA;
- private Field f112_PROC_TRAN_EYE_CATCHER;
- private Field f113_PROC_TRAN_LOGICAL_DELETE_AREA;
- private Field f114_PROC_TRAN_LOGICAL_DELETE_FLAG;
- private Field f115_FILLER;
- private Field f116_PROC_TRAN_ID;
- private Field f117_PROC_TRAN_SORT_CODE;
- private Field f118_PROC_TRAN_NUMBER;
- private Field f119_PROC_TRAN_DATE;
- private Field f11_HV_ACCOUNT_OPENED;
- private Field f120_PROC_TRAN_DATE_GRP;
- private Field f121_PROC_TRAN_DATE_GRP_YYYY;
- private Field f122_PROC_TRAN_DATE_GRP_MM;
- private Field f123_PROC_TRAN_DATE_GRP_DD;
- private Field f124_PROC_TRAN_TIME;
- private Field f125_PROC_TRAN_TIME_GRP;
- private Field f126_PROC_TRAN_TIME_GRP_HH;
- private Field f127_PROC_TRAN_TIME_GRP_MM;
- private Field f128_PROC_TRAN_TIME_GRP_SS;
- private Field f129_PROC_TRAN_REF;
- private Field f12_HV_ACCOUNT_OVERDRAFT_LIM;
- private Field f130_PROC_TRAN_TYPE;
- private Field f131_PROC_TRAN_DESC;
- private Field f132_PROC_TRAN_DESC_XFR;
- private Field f133_PROC_TRAN_DESC_XFR_HEADER;
- private Field f134_PROC_TRAN_DESC_XFR_SORTCODE;
- private Field f135_PROC_TRAN_DESC_XFR_ACCOUNT;
- private Field f136_PROC_TRAN_DESC_DELACC;
- private Field f137_PROC_DESC_DELACC_CUSTOMER;
- private Field f138_PROC_DESC_DELACC_ACCTYPE;
- private Field f139_PROC_DESC_DELACC_LAST_DD;
- private Field f13_HV_ACCOUNT_LAST_STMT;
- private Field f140_PROC_DESC_DELACC_LAST_MM;
- private Field f141_PROC_DESC_DELACC_LAST_YYYY;
- private Field f142_PROC_DESC_DELACC_NEXT_DD;
- private Field f143_PROC_DESC_DELACC_NEXT_MM;
- private Field f144_PROC_DESC_DELACC_NEXT_YYYY;
- private Field f145_PROC_DESC_DELACC_FOOTER;
- private Field f146_PROC_TRAN_DESC_CREACC;
- private Field f147_PROC_DESC_CREACC_CUSTOMER;
- private Field f148_PROC_DESC_CREACC_ACCTYPE;
- private Field f149_PROC_DESC_CREACC_LAST_DD;
- private Field f14_HV_ACCOUNT_NEXT_STMT;
- private Field f150_PROC_DESC_CREACC_LAST_MM;
- private Field f151_PROC_DESC_CREACC_LAST_YYYY;
- private Field f152_PROC_DESC_CREACC_NEXT_DD;
- private Field f153_PROC_DESC_CREACC_NEXT_MM;
- private Field f154_PROC_DESC_CREACC_NEXT_YYYY;
- private Field f155_PROC_DESC_CREACC_FOOTER;
- private Field f156_PROC_TRAN_DESC_DELCUS;
- private Field f157_PROC_DESC_DELCUS_SORTCODE;
- private Field f158_PROC_DESC_DELCUS_CUSTOMER;
- private Field f159_PROC_DESC_DELCUS_NAME;
- private Field f15_HV_ACCOUNT_AVAIL_BAL;
- private Field f160_PROC_DESC_DELCUS_DOB_YYYY;
- private Field f161_PROC_DESC_DELCUS_FILLER;
- private Field f162_PROC_DESC_DELCUS_DOB_MM;
- private Field f163_PROC_DESC_DELCUS_FILLER2;
- private Field f164_PROC_DESC_DELCUS_DOB_DD;
- private Field f165_PROC_TRAN_DESC_CRECUS;
- private Field f166_PROC_DESC_CRECUS_SORTCODE;
- private Field f167_PROC_DESC_CRECUS_CUSTOMER;
- private Field f168_PROC_DESC_CRECUS_NAME;
- private Field f169_PROC_DESC_CRECUS_DOB_YYYY;
- private Field f16_HV_ACCOUNT_ACTUAL_BAL;
- private Field f170_PROC_DESC_CRECUS_FILLER;
- private Field f171_PROC_DESC_CRECUS_DOB_MM;
- private Field f172_PROC_DESC_CRECUS_FILLER2;
- private Field f173_PROC_DESC_CRECUS_DOB_DD;
- private Field f174_PROC_TRAN_AMOUNT;
- private Field f175_WS_PASSED_DATA;
- private Field f176_WS_TEST_KEY;
- private Field f177_WS_SORT_CODE;
- private Field f178_WS_CUSTOMER_RANGE;
- private Field f179_WS_CUSTOMER_RANGE_TOP;
- private Field f17_HOST_PROCTRAN_ROW;
- private Field f180_WS_CUSTOMER_RANGE_MIDDLE;
- private Field f181_WS_CUSTOMER_RANGE_BOTTOM;
- private Field f182_PROCTRAN_RIDFLD;
- private Field f183_SQLCODE_DISPLAY;
- private Field f184_MY_ABEND_CODE;
- private Field f185_WS_STORM_DRAIN;
- private Field f186_STORM_DRAIN_CONDITION;
- private Field f187_NUMERIC_AMOUNT_DISPLAY;
- private Field f188_WS_TIME_DATA;
- private Field f189_WS_TIME_NOW;
- private Field f18_HV_PROCTRAN_EYECATCHER;
- private Field f190_WS_TIME_NOW_GRP;
- private Field f191_WS_TIME_NOW_GRP_HH;
- private Field f192_WS_TIME_NOW_GRP_MM;
- private Field f193_WS_TIME_NOW_GRP_SS;
- private Field f194_WS_ABEND_PGM;
- private Field f195_ABNDINFO_REC;
- private Field f196_ABND_VSAM_KEY;
- private Field f197_ABND_UTIME_KEY;
- private Field f198_ABND_TASKNO_KEY;
- private Field f199_ABND_APPLID;
- private Field f19_HV_PROCTRAN_SORT_CODE;
- private Field f1_SORTCODE;
- private Field f200_ABND_TRANID;
- private Field f201_ABND_DATE;
- private Field f202_ABND_TIME;
- private Field f203_ABND_CODE;
- private Field f204_ABND_PROGRAM;
- private Field f205_ABND_RESPCODE;
- private Field f206_ABND_RESP2CODE;
- private Field f207_ABND_SQLCODE;
- private Field f208_ABND_FREEFORM;
- private Field f209_WS_SUFFICIENT_FUNDS;
- private Field f20_HV_PROCTRAN_ACC_NUMBER;
- private Field f210_WS_DIFFERENCE;
- private Field f211_DFHCOMMAREA;
- private Field f212_COMM_ACCNO;
- private Field f213_COMM_AMT;
- private Field f214_COMM_SORTC;
- private Field f215_COMM_AV_BAL;
- private Field f216_COMM_ACT_BAL;
- private Field f217_COMM_ORIGIN;
- private Field f218_COMM_APPLID;
- private Field f219_COMM_USERID;
- private Field f21_HV_PROCTRAN_DATE;
- private Field f220_COMM_FACILITY_NAME;
- private Field f221_COMM_NETWRK_ID;
- private Field f222_COMM_FACILTYPE;
- private Field f223_FILLER;
- private Field f224_COMM_SUCCESS;
- private Field f225_COMM_FAIL_CODE;
- private Field f226_DFHEIBLK;
- private Field f227_EIBTIME;
- private Field f228_EIBDATE;
- private Field f229_EIBTRNID;
- private Field f22_HV_PROCTRAN_TIME;
- private Field f230_EIBTASKN;
- private Field f231_EIBTRMID;
- private Field f232_DFHEIGDI;
- private Field f233_EIBCPOSN;
- private Field f234_EIBCALEN;
- private Field f235_EIBAID;
- private Field f236_EIBFN;
- private Field f237_EIBRCODE;
- private Field f238_EIBDS;
- private Field f239_EIBREQID;
- private Field f23_HV_PROCTRAN_REF;
- private Field f240_EIBRSRCE;
- private Field f241_EIBSYNC;
- private Field f242_EIBFREE;
- private Field f243_EIBRECV;
- private Field f244_EIBSEND;
- private Field f245_EIBATT;
- private Field f246_EIBEOC;
- private Field f247_EIBFMH;
- private Field f248_EIBCOMPL;
- private Field f249_EIBSIG;
- private Field f24_HV_PROCTRAN_TYPE;
- private Field f250_EIBCONF;
- private Field f251_EIBERR;
- private Field f252_EIBERRCD;
- private Field f253_EIBSYNRB;
- private Field f254_EIBNODAT;
- private Field f255_EIBRESP;
- private Field f256_EIBRESP2;
- private Field f257_EIBRLDBK;
- private Field f258_GG_RETURN_CODE;
- private Field f25_HV_PROCTRAN_DESC;
- private Field f26_HV_PROCTRAN_AMOUNT;
- private Field f27_SQLCA;
- private Field f28_SQLCAID;
- private Field f29_SQLCABC;
- private Field f2_SYSIDERR_RETRY;
- private Field f30_SQLCODE;
- private Field f31_SQLERRM;
- private Field f32_SQLERRML;
- private Field f33_SQLERRMC;
- private Field f34_SQLERRP;
- private Field f35_SQLERRD;
- private Field f36_SQLWARN;
- private Field f37_SQLWARN0;
- private Field f38_SQLWARN1;
- private Field f39_SQLWARN2;
- private Field f3_HOST_ACCOUNT_ROW;
- private Field f40_SQLWARN3;
- private Field f41_SQLWARN4;
- private Field f42_SQLWARN5;
- private Field f43_SQLWARN6;
- private Field f44_SQLWARN7;
- private Field f45_SQLWARN8;
- private Field f46_SQLWARN9;
- private Field f47_SQLWARNA;
- private Field f48_SQLSTATE;
- private Field f49_WS_CICS_WORK_AREA;
- private Field f4_HV_ACCOUNT_EYECATCHER;
- private Field f50_WS_CICS_RESP;
- private Field f51_WS_CICS_RESP2;
- private Field f52_FILE_RETRY;
- private Field f53_WS_EXIT_RETRY_LOOP;
- private Field f54_DB2_DATE_REFORMAT;
- private Field f55_DB2_DATE_REF_YR;
- private Field f56_FILLER;
- private Field f57_DB2_DATE_REF_MNTH;
- private Field f58_FILLER;
- private Field f59_DB2_DATE_REF_DAY;
- private Field f5_HV_ACCOUNT_CUST_NO;
- private Field f60_DATA_STORE_TYPE;
- private Field f61_WS_ACC_DATA;
- private Field f62_ACCOUNT_DATA;
- private Field f63_ACCOUNT_EYE_CATCHER;
- private Field f64_ACCOUNT_CUST_NO;
- private Field f65_ACCOUNT_KEY;
- private Field f66_ACCOUNT_SORT_CODE;
- private Field f67_ACCOUNT_NUMBER;
- private Field f68_ACCOUNT_TYPE;
- private Field f69_ACCOUNT_INTEREST_RATE;
- private Field f6_HV_ACCOUNT_KEY;
- private Field f70_ACCOUNT_OPENED;
- private Field f71_ACCOUNT_OPENED_GROUP;
- private Field f72_ACCOUNT_OPENED_DAY;
- private Field f73_ACCOUNT_OPENED_MONTH;
- private Field f74_ACCOUNT_OPENED_YEAR;
- private Field f75_ACCOUNT_OVERDRAFT_LIMIT;
- private Field f76_ACCOUNT_LAST_STMT_DATE;
- private Field f77_ACCOUNT_LAST_STMT_GROUP;
- private Field f78_ACCOUNT_LAST_STMT_DAY;
- private Field f79_ACCOUNT_LAST_STMT_MONTH;
- private Field f7_HV_ACCOUNT_SORTCODE;
- private Field f80_ACCOUNT_LAST_STMT_YEAR;
- private Field f81_ACCOUNT_NEXT_STMT_DATE;
- private Field f82_ACCOUNT_NEXT_STMT_GROUP;
- private Field f83_ACCOUNT_NEXT_STMT_DAY;
- private Field f84_ACCOUNT_NEXT_STMT_MONTH;
- private Field f85_ACCOUNT_NEXT_STMT_YEAR;
- private Field f86_ACCOUNT_AVAILABLE_BALANCE;
- private Field f87_ACCOUNT_ACTUAL_BALANCE;
- private Field f88_WS_EIBTASKN12;
- private Field f89_WS_SQLCODE_DISP;
- private Field f8_HV_ACCOUNT_ACC_NO;
- private Field f90_DESIRED_ACC_KEY;
- private Field f91_DESIRED_SORT_CODE;
- private Field f92_DESIRED_ACC_NO;
- private Field f93_NEW_ACCOUNT_AVAILABLE_BALANCE;
- private Field f94_NEW_ACCOUNT_ACTUAL_BALANCE;
- private Field f95_WS_ACC_REC_LEN;
- private Field f96_WS_U_TIME;
- private Field f97_WS_ORIG_DATE;
- private Field f98_WS_ORIG_DATE_GRP;
- private Field f99_WS_ORIG_DATE_DD;
- private Field f9_HV_ACCOUNT_ACC_TYPE;
+ private final Field f4_HV_ACCOUNT_EYECATCHER = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 0, 4, false);
+ private final Field f5_HV_ACCOUNT_CUST_NO = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 4, 10, false);
+ private final Field f7_HV_ACCOUNT_SORTCODE = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 14, 6, false);
+ private final Field f8_HV_ACCOUNT_ACC_NO = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 20, 8, false);
+ private final Field f9_HV_ACCOUNT_ACC_TYPE = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 28, 8, false);
+ private final Field f10_HV_ACCOUNT_INT_RATE = Field.packed(s_HOST_ACCOUNT_ROW, 36, 6, 2, true);
+ private final Field f11_HV_ACCOUNT_OPENED = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 40, 10, false);
+ private final Field f12_HV_ACCOUNT_OVERDRAFT_LIM = Field.binary(s_HOST_ACCOUNT_ROW, 50, 9, 0, true, false);
+ private final Field f13_HV_ACCOUNT_LAST_STMT = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 54, 10, false);
+ private final Field f14_HV_ACCOUNT_NEXT_STMT = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 64, 10, false);
+ private final Field f15_HV_ACCOUNT_AVAIL_BAL = Field.packed(s_HOST_ACCOUNT_ROW, 74, 12, 2, true);
+ private final Field f16_HV_ACCOUNT_ACTUAL_BAL = Field.packed(s_HOST_ACCOUNT_ROW, 81, 12, 2, true);
+ private final Field f17_HOST_PROCTRAN_ROW = Field.group(s_HOST_PROCTRAN_ROW, 0, 96);
+ private final Field f18_HV_PROCTRAN_EYECATCHER = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 0, 4, false);
+ private final Field f19_HV_PROCTRAN_SORT_CODE = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 4, 6, false);
+ private final Field f20_HV_PROCTRAN_ACC_NUMBER = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 10, 8, false);
+ private final Field f21_HV_PROCTRAN_DATE = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 18, 10, false);
+ private final Field f22_HV_PROCTRAN_TIME = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 28, 6, false);
+ private final Field f23_HV_PROCTRAN_REF = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 34, 12, false);
+ private final Field f24_HV_PROCTRAN_TYPE = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 46, 3, false);
+ private final Field f25_HV_PROCTRAN_DESC = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 49, 40, false);
+ private final Field f26_HV_PROCTRAN_AMOUNT = Field.packed(s_HOST_PROCTRAN_ROW, 89, 12, 2, true);
+ private final Field f27_SQLCA = Field.group(s_SQLCA, 0, 136);
+ private final Field f30_SQLCODE = Field.binary(s_SQLCA, 12, 9, 0, true, true);
+ private final Field f32_SQLERRML = Field.binary(s_SQLCA, 16, 4, 0, true, true);
+ private final Field f33_SQLERRMC = Field.alphanumeric(s_SQLCA, 18, 70, false);
+ private final Field f35_SQLERRD = Field.binary(s_SQLCA, 96, 9, 0, true, true);
+ private final Field f48_SQLSTATE = Field.alphanumeric(s_SQLCA, 131, 5, false);
+ private final Field f50_WS_CICS_RESP = Field.binary(s_WS_CICS_WORK_AREA, 0, 8, 0, true, false);
+ private final Field f51_WS_CICS_RESP2 = Field.binary(s_WS_CICS_WORK_AREA, 4, 8, 0, true, false);
+ private final Field f88_WS_EIBTASKN12 = Field.zoned(s_WS_EIBTASKN12, 0, 12, 0, false, false, false);
+ private final Field f91_DESIRED_SORT_CODE = Field.zoned(s_DESIRED_ACC_KEY, 0, 6, 0, false, false, false);
+ private final Field f92_DESIRED_ACC_NO = Field.zoned(s_DESIRED_ACC_KEY, 6, 8, 0, false, false, false);
+ private final Field f96_WS_U_TIME = Field.packed(s_WS_U_TIME, 0, 15, 0, true);
+ private final Field f97_WS_ORIG_DATE = Field.alphanumeric(s_WS_ORIG_DATE, 0, 10, false);
+ private final Field f104_WS_ORIG_DATE_GRP_X = Field.group(s_WS_ORIG_DATE_GRP_X, 0, 10);
+ private final Field f183_SQLCODE_DISPLAY = Field.zoned(s_SQLCODE_DISPLAY, 0, 8, 0, true, true, true);
+ private final Field f184_MY_ABEND_CODE = Field.alphanumeric(s_MY_ABEND_CODE, 0, 4, false);
+ private final Field f185_WS_STORM_DRAIN = Field.alphanumeric(s_WS_STORM_DRAIN, 0, 1, false);
+ private final Field f186_STORM_DRAIN_CONDITION = Field.alphanumeric(s_STORM_DRAIN_CONDITION, 0, 20, false);
+ private final Field f187_NUMERIC_AMOUNT_DISPLAY = Field.numericEdited(s_NUMERIC_AMOUNT_DISPLAY, 0, 14, "+9999999999.99", false);
+ private final Field f189_WS_TIME_NOW = Field.zoned(s_WS_TIME_DATA, 0, 6, 0, false, false, false);
+ private final Field f191_WS_TIME_NOW_GRP_HH = Field.zoned(s_WS_TIME_DATA, 0, 2, 0, false, false, false);
+ private final Field f192_WS_TIME_NOW_GRP_MM = Field.zoned(s_WS_TIME_DATA, 2, 2, 0, false, false, false);
+ private final Field f194_WS_ABEND_PGM = Field.alphanumeric(s_WS_ABEND_PGM, 0, 8, false);
+ private final Field f195_ABNDINFO_REC = Field.group(s_ABNDINFO_REC, 0, 681);
+ private final Field f197_ABND_UTIME_KEY = Field.packed(s_ABNDINFO_REC, 0, 15, 0, true);
+ private final Field f198_ABND_TASKNO_KEY = Field.zoned(s_ABNDINFO_REC, 8, 4, 0, false, false, false);
+ private final Field f199_ABND_APPLID = Field.alphanumeric(s_ABNDINFO_REC, 12, 8, false);
+ private final Field f200_ABND_TRANID = Field.alphanumeric(s_ABNDINFO_REC, 20, 4, false);
+ private final Field f201_ABND_DATE = Field.alphanumeric(s_ABNDINFO_REC, 24, 10, false);
+ private final Field f202_ABND_TIME = Field.alphanumeric(s_ABNDINFO_REC, 34, 8, false);
+ private final Field f203_ABND_CODE = Field.alphanumeric(s_ABNDINFO_REC, 42, 4, false);
+ private final Field f204_ABND_PROGRAM = Field.alphanumeric(s_ABNDINFO_REC, 46, 8, false);
+ private final Field f205_ABND_RESPCODE = Field.zoned(s_ABNDINFO_REC, 54, 8, 0, true, true, true);
+ private final Field f206_ABND_RESP2CODE = Field.zoned(s_ABNDINFO_REC, 63, 8, 0, true, true, true);
+ private final Field f207_ABND_SQLCODE = Field.zoned(s_ABNDINFO_REC, 72, 8, 0, true, true, true);
+ private final Field f208_ABND_FREEFORM = Field.alphanumeric(s_ABNDINFO_REC, 81, 600, false);
+ private final Field f210_WS_DIFFERENCE = Field.zoned(s_WS_DIFFERENCE, 0, 12, 2, true, false, false);
+ private final Field f212_COMM_ACCNO = Field.alphanumeric(s_DFHCOMMAREA, 0, 8, false);
+ private final Field f213_COMM_AMT = Field.zoned(s_DFHCOMMAREA, 8, 12, 2, true, false, false);
+ private final Field f214_COMM_SORTC = Field.zoned(s_DFHCOMMAREA, 20, 6, 0, false, false, false);
+ private final Field f215_COMM_AV_BAL = Field.zoned(s_DFHCOMMAREA, 26, 12, 2, true, false, false);
+ private final Field f216_COMM_ACT_BAL = Field.zoned(s_DFHCOMMAREA, 38, 12, 2, true, false, false);
+ private final Field f217_COMM_ORIGIN = Field.group(s_DFHCOMMAREA, 50, 40);
+ private final Field f222_COMM_FACILTYPE = Field.binary(s_DFHCOMMAREA, 82, 8, 0, true, false);
+ private final Field f224_COMM_SUCCESS = Field.alphanumeric(s_DFHCOMMAREA, 90, 1, false);
+ private final Field f225_COMM_FAIL_CODE = Field.alphanumeric(s_DFHCOMMAREA, 91, 1, false);
+ private final Field f227_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
+ private final Field f228_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
+ private final Field f229_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
+ private final Field f230_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
+ private final Field f231_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
+ private final Field f234_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
+ private final Field f255_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
+ private final Field f256_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
+ private final Field f258_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
+ private BigDecimal f1_SORTCODE; // SORTCODE PIC 9(6) DISPLAY
+ private BigDecimal f2_SYSIDERR_RETRY; // SYSIDERR-RETRY PIC 999 DISPLAY
private CicsTask task;
private final java.util.Map handlers = new java.util.HashMap<>();
@@ -424,6 +239,14 @@ public class DbcrfunService {
/** Writes the COMMAREA's bytes back into the object the task carries (a LINKed program's is its caller's). */
private Runnable caBack = () -> { };
+ /** The program ends because of an abend: a LINKed program's COMMAREA writes stay its caller's. */
+ private Goback abended() {
+ if (task.level() > 1) {
+ caBack.run();
+ }
+ return new Goback();
+ }
+
@SuppressWarnings("unchecked")
private DetCics.Store store(String name) {
throw new Hole("CICS file " + name + ": the program names no file the generated project stores");
@@ -464,16 +287,26 @@ private static int paragraph(String name) {
return i;
}
- /** A condition the command neither returned in RESP nor ignored: its HANDLE CONDITION label, or CICS's
- * default action -- an abend, to this program's HANDLE ABEND exit or ending the task. */
+ /** A condition the command did not return in RESP: its HANDLE CONDITION label, or -1 (go on) when IGNOREd
+ * (#4414); else CICS's default action -- -1 for one whose default is to ignore it (#4413: EOC); else the
+ * ERROR label (#4502: IBM, HANDLE CONDITION: "if the default action for such a condition terminates the
+ * task abnormally, and the condition ERROR has been specified, the action for ERROR is taken"); else an
+ * abend, to this program's HANDLE ABEND exit or ending the task. */
private int condition(String cond) {
Integer h = handlers.get(cond);
if (h != null) {
return h;
}
+ if (DetCics.ignoredByDefault(cond)) {
+ return -1;
+ }
+ Integer error = handlers.get("ERROR");
+ if (error != null) {
+ return error;
+ }
String label = task.abendOnCondition(cond);
if (label == null) {
- throw new Goback();
+ throw abended();
}
return paragraph(label);
}
@@ -482,7 +315,7 @@ private static int cx(CicsTask task, int whole) {
return task.eibcalen() == null ? whole : task.eibcalen();
}
- private void in_AbndprocAbndinfoRec(AbndprocAbndinfoRec d, Storage s, int base) {
+ private void in_AbndprocDfhcommarea(AbndprocDfhcommarea d, Storage s, int base) {
if (d == null) {
return;
}
@@ -500,7 +333,7 @@ private void in_AbndprocAbndinfoRec(AbndprocAbndinfoRec d, Storage s, int base)
Cobol.move(d.getAbndFreeform() == null ? "" : d.getAbndFreeform(), Field.alphanumeric(s, base + 81, 600, false), CS);
}
- private void fill_AbndprocAbndinfoRec(AbndprocAbndinfoRec d, Storage s, int base) {
+ private void fill_AbndprocDfhcommarea(AbndprocDfhcommarea d, Storage s, int base) {
d.setAbndUtimeKey(Cobol.num(Field.packed(s, base + 0, 15, 0, true), CS).longValue());
d.setAbndTasknoKey(Cobol.num(Field.zoned(s, base + 8, 4, 0, false, false, false), CS).intValue());
d.setAbndApplid(Cobol.text(Field.alphanumeric(s, base + 12, 8, false), CS));
@@ -515,13 +348,13 @@ private void fill_AbndprocAbndinfoRec(AbndprocAbndinfoRec d, Storage s, int base
d.setAbndFreeform(Cobol.text(Field.alphanumeric(s, base + 81, 600, false), CS));
}
- private AbndprocAbndinfoRec out_AbndprocAbndinfoRec(Storage s, int base) {
- AbndprocAbndinfoRec d = new AbndprocAbndinfoRec();
- fill_AbndprocAbndinfoRec(d, s, base);
+ private AbndprocDfhcommarea out_AbndprocDfhcommarea(Storage s, int base) {
+ AbndprocDfhcommarea d = new AbndprocDfhcommarea();
+ fill_AbndprocDfhcommarea(d, s, base);
return d;
}
- private void in_Bnk1craSubpgmParms(Bnk1craSubpgmParms d, Storage s, int base) {
+ private void in_DbcrfunDfhcommarea(DbcrfunDfhcommarea d, Storage s, int base) {
if (d == null) {
return;
}
@@ -539,7 +372,7 @@ private void in_Bnk1craSubpgmParms(Bnk1craSubpgmParms d, Storage s, int base) {
Cobol.move(d.getSubpgmFailCode() == null ? "" : d.getSubpgmFailCode(), Field.alphanumeric(s, base + 91, 1, false), CS);
}
- private void fill_Bnk1craSubpgmParms(Bnk1craSubpgmParms d, Storage s, int base) {
+ private void fill_DbcrfunDfhcommarea(DbcrfunDfhcommarea d, Storage s, int base) {
d.setSubpgmAccno(Cobol.text(Field.alphanumeric(s, base + 0, 8, false), CS));
d.setSubpgmAmt(Cobol.num(Field.zoned(s, base + 8, 12, 2, true, false, false), CS));
d.setSubpgmSortc(Cobol.num(Field.zoned(s, base + 20, 6, 0, false, false, false), CS).intValue());
@@ -554,12 +387,20 @@ private void fill_Bnk1craSubpgmParms(Bnk1craSubpgmParms d, Storage s, int base)
d.setSubpgmFailCode(Cobol.text(Field.alphanumeric(s, base + 91, 1, false), CS));
}
- private Bnk1craSubpgmParms out_Bnk1craSubpgmParms(Storage s, int base) {
- Bnk1craSubpgmParms d = new Bnk1craSubpgmParms();
- fill_Bnk1craSubpgmParms(d, s, base);
+ private DbcrfunDfhcommarea out_DbcrfunDfhcommarea(Storage s, int base) {
+ DbcrfunDfhcommarea d = new DbcrfunDfhcommarea();
+ fill_DbcrfunDfhcommarea(d, s, base);
return d;
}
+ /** #4270 (X23): DFHCOMMAREA's whole record again, with what the task left in its EIBCALEN bytes. */
+ private void caWhole(byte[] whole) {
+ if (s_DFHCOMMAREA.bytes != whole) {
+ System.arraycopy(s_DFHCOMMAREA.bytes, 0, whole, 0, s_DFHCOMMAREA.bytes.length);
+ s_DFHCOMMAREA.bytes = whole;
+ }
+ }
+
private final AccountRepository accountRepository;
private final ProctranRepository proctranRepository;
@@ -573,275 +414,10 @@ public DbcrfunService(AccountRepository accountRepository, ProctranRepository pr
this.datasets = datasets;
this.files = files;
this.clock = clock;
- fields0();
- }
-
- private void fields0() {
- f1_SORTCODE = Field.zoned(s_SORTCODE, 0, 6, 0, false, false, false);
- f2_SYSIDERR_RETRY = Field.zoned(s_SYSIDERR_RETRY, 0, 3, 0, false, false, false);
- f3_HOST_ACCOUNT_ROW = Field.group(s_HOST_ACCOUNT_ROW, 0, 88);
- f4_HV_ACCOUNT_EYECATCHER = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 0, 4, false);
- f5_HV_ACCOUNT_CUST_NO = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 4, 10, false);
- f6_HV_ACCOUNT_KEY = Field.group(s_HOST_ACCOUNT_ROW, 14, 14);
- f7_HV_ACCOUNT_SORTCODE = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 14, 6, false);
- f8_HV_ACCOUNT_ACC_NO = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 20, 8, false);
- f9_HV_ACCOUNT_ACC_TYPE = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 28, 8, false);
- f10_HV_ACCOUNT_INT_RATE = Field.packed(s_HOST_ACCOUNT_ROW, 36, 6, 2, true);
- f11_HV_ACCOUNT_OPENED = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 40, 10, false);
- f12_HV_ACCOUNT_OVERDRAFT_LIM = Field.binary(s_HOST_ACCOUNT_ROW, 50, 9, 0, true, false);
- f13_HV_ACCOUNT_LAST_STMT = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 54, 10, false);
- f14_HV_ACCOUNT_NEXT_STMT = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 64, 10, false);
- f15_HV_ACCOUNT_AVAIL_BAL = Field.packed(s_HOST_ACCOUNT_ROW, 74, 12, 2, true);
- f16_HV_ACCOUNT_ACTUAL_BAL = Field.packed(s_HOST_ACCOUNT_ROW, 81, 12, 2, true);
- f17_HOST_PROCTRAN_ROW = Field.group(s_HOST_PROCTRAN_ROW, 0, 96);
- f18_HV_PROCTRAN_EYECATCHER = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 0, 4, false);
- f19_HV_PROCTRAN_SORT_CODE = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 4, 6, false);
- f20_HV_PROCTRAN_ACC_NUMBER = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 10, 8, false);
- f21_HV_PROCTRAN_DATE = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 18, 10, false);
- f22_HV_PROCTRAN_TIME = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 28, 6, false);
- f23_HV_PROCTRAN_REF = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 34, 12, false);
- f24_HV_PROCTRAN_TYPE = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 46, 3, false);
- f25_HV_PROCTRAN_DESC = Field.alphanumeric(s_HOST_PROCTRAN_ROW, 49, 40, false);
- f26_HV_PROCTRAN_AMOUNT = Field.packed(s_HOST_PROCTRAN_ROW, 89, 12, 2, true);
- f27_SQLCA = Field.group(s_SQLCA, 0, 136);
- f28_SQLCAID = Field.alphanumeric(s_SQLCA, 0, 8, false);
- f29_SQLCABC = Field.binary(s_SQLCA, 8, 9, 0, true, true);
- f30_SQLCODE = Field.binary(s_SQLCA, 12, 9, 0, true, true);
- f31_SQLERRM = Field.group(s_SQLCA, 16, 72);
- f32_SQLERRML = Field.binary(s_SQLCA, 16, 4, 0, true, true);
- f33_SQLERRMC = Field.alphanumeric(s_SQLCA, 18, 70, false);
- f34_SQLERRP = Field.alphanumeric(s_SQLCA, 88, 8, false);
- f35_SQLERRD = Field.binary(s_SQLCA, 96, 9, 0, true, true);
- f36_SQLWARN = Field.group(s_SQLCA, 120, 11);
- f37_SQLWARN0 = Field.alphanumeric(s_SQLCA, 120, 1, false);
- f38_SQLWARN1 = Field.alphanumeric(s_SQLCA, 121, 1, false);
- f39_SQLWARN2 = Field.alphanumeric(s_SQLCA, 122, 1, false);
- f40_SQLWARN3 = Field.alphanumeric(s_SQLCA, 123, 1, false);
- f41_SQLWARN4 = Field.alphanumeric(s_SQLCA, 124, 1, false);
- f42_SQLWARN5 = Field.alphanumeric(s_SQLCA, 125, 1, false);
- f43_SQLWARN6 = Field.alphanumeric(s_SQLCA, 126, 1, false);
- f44_SQLWARN7 = Field.alphanumeric(s_SQLCA, 127, 1, false);
- f45_SQLWARN8 = Field.alphanumeric(s_SQLCA, 128, 1, false);
- f46_SQLWARN9 = Field.alphanumeric(s_SQLCA, 129, 1, false);
- f47_SQLWARNA = Field.alphanumeric(s_SQLCA, 130, 1, false);
- f48_SQLSTATE = Field.alphanumeric(s_SQLCA, 131, 5, false);
- f49_WS_CICS_WORK_AREA = Field.group(s_WS_CICS_WORK_AREA, 0, 8);
- f50_WS_CICS_RESP = Field.binary(s_WS_CICS_WORK_AREA, 0, 8, 0, true, false);
- f51_WS_CICS_RESP2 = Field.binary(s_WS_CICS_WORK_AREA, 4, 8, 0, true, false);
- f52_FILE_RETRY = Field.zoned(s_FILE_RETRY, 0, 3, 0, false, false, false);
- f53_WS_EXIT_RETRY_LOOP = Field.alphanumeric(s_WS_EXIT_RETRY_LOOP, 0, 1, false);
- f54_DB2_DATE_REFORMAT = Field.group(s_DB2_DATE_REFORMAT, 0, 10);
- f55_DB2_DATE_REF_YR = Field.zoned(s_DB2_DATE_REFORMAT, 0, 4, 0, false, false, false);
- f56_FILLER = Field.alphanumeric(s_DB2_DATE_REFORMAT, 4, 1, false);
- f57_DB2_DATE_REF_MNTH = Field.zoned(s_DB2_DATE_REFORMAT, 5, 2, 0, false, false, false);
- f58_FILLER = Field.alphanumeric(s_DB2_DATE_REFORMAT, 7, 1, false);
- f59_DB2_DATE_REF_DAY = Field.zoned(s_DB2_DATE_REFORMAT, 8, 2, 0, false, false, false);
- f60_DATA_STORE_TYPE = Field.alphanumeric(s_DATA_STORE_TYPE, 0, 1, false);
- f61_WS_ACC_DATA = Field.group(s_WS_ACC_DATA, 0, 98);
- f62_ACCOUNT_DATA = Field.group(s_WS_ACC_DATA, 0, 98);
- f63_ACCOUNT_EYE_CATCHER = Field.alphanumeric(s_WS_ACC_DATA, 0, 4, false);
- f64_ACCOUNT_CUST_NO = Field.zoned(s_WS_ACC_DATA, 4, 10, 0, false, false, false);
- f65_ACCOUNT_KEY = Field.group(s_WS_ACC_DATA, 14, 14);
- f66_ACCOUNT_SORT_CODE = Field.zoned(s_WS_ACC_DATA, 14, 6, 0, false, false, false);
- f67_ACCOUNT_NUMBER = Field.zoned(s_WS_ACC_DATA, 20, 8, 0, false, false, false);
- f68_ACCOUNT_TYPE = Field.alphanumeric(s_WS_ACC_DATA, 28, 8, false);
- f69_ACCOUNT_INTEREST_RATE = Field.zoned(s_WS_ACC_DATA, 36, 6, 2, false, false, false);
- f70_ACCOUNT_OPENED = Field.zoned(s_WS_ACC_DATA, 42, 8, 0, false, false, false);
- f71_ACCOUNT_OPENED_GROUP = Field.group(s_WS_ACC_DATA, 42, 8);
- f72_ACCOUNT_OPENED_DAY = Field.zoned(s_WS_ACC_DATA, 42, 2, 0, false, false, false);
- f73_ACCOUNT_OPENED_MONTH = Field.zoned(s_WS_ACC_DATA, 44, 2, 0, false, false, false);
- f74_ACCOUNT_OPENED_YEAR = Field.zoned(s_WS_ACC_DATA, 46, 4, 0, false, false, false);
- f75_ACCOUNT_OVERDRAFT_LIMIT = Field.zoned(s_WS_ACC_DATA, 50, 8, 0, false, false, false);
- f76_ACCOUNT_LAST_STMT_DATE = Field.zoned(s_WS_ACC_DATA, 58, 8, 0, false, false, false);
- f77_ACCOUNT_LAST_STMT_GROUP = Field.group(s_WS_ACC_DATA, 58, 8);
- f78_ACCOUNT_LAST_STMT_DAY = Field.zoned(s_WS_ACC_DATA, 58, 2, 0, false, false, false);
- f79_ACCOUNT_LAST_STMT_MONTH = Field.zoned(s_WS_ACC_DATA, 60, 2, 0, false, false, false);
- f80_ACCOUNT_LAST_STMT_YEAR = Field.zoned(s_WS_ACC_DATA, 62, 4, 0, false, false, false);
- f81_ACCOUNT_NEXT_STMT_DATE = Field.zoned(s_WS_ACC_DATA, 66, 8, 0, false, false, false);
- f82_ACCOUNT_NEXT_STMT_GROUP = Field.group(s_WS_ACC_DATA, 66, 8);
- f83_ACCOUNT_NEXT_STMT_DAY = Field.zoned(s_WS_ACC_DATA, 66, 2, 0, false, false, false);
- f84_ACCOUNT_NEXT_STMT_MONTH = Field.zoned(s_WS_ACC_DATA, 68, 2, 0, false, false, false);
- f85_ACCOUNT_NEXT_STMT_YEAR = Field.zoned(s_WS_ACC_DATA, 70, 4, 0, false, false, false);
- f86_ACCOUNT_AVAILABLE_BALANCE = Field.zoned(s_WS_ACC_DATA, 74, 12, 2, true, false, false);
- f87_ACCOUNT_ACTUAL_BALANCE = Field.zoned(s_WS_ACC_DATA, 86, 12, 2, true, false, false);
- f88_WS_EIBTASKN12 = Field.zoned(s_WS_EIBTASKN12, 0, 12, 0, false, false, false);
- f89_WS_SQLCODE_DISP = Field.zoned(s_WS_SQLCODE_DISP, 0, 9, 0, false, false, false);
- f90_DESIRED_ACC_KEY = Field.group(s_DESIRED_ACC_KEY, 0, 14);
- f91_DESIRED_SORT_CODE = Field.zoned(s_DESIRED_ACC_KEY, 0, 6, 0, false, false, false);
- f92_DESIRED_ACC_NO = Field.zoned(s_DESIRED_ACC_KEY, 6, 8, 0, false, false, false);
- f93_NEW_ACCOUNT_AVAILABLE_BALANCE = Field.zoned(s_NEW_ACCOUNT_AVAILABLE_BALANCE, 0, 12, 2, true, false, false);
- f94_NEW_ACCOUNT_ACTUAL_BALANCE = Field.zoned(s_NEW_ACCOUNT_ACTUAL_BALANCE, 0, 12, 2, true, false, false);
- f95_WS_ACC_REC_LEN = Field.binary(s_WS_ACC_REC_LEN, 0, 4, 0, true, false);
- f96_WS_U_TIME = Field.packed(s_WS_U_TIME, 0, 15, 0, true);
- f97_WS_ORIG_DATE = Field.alphanumeric(s_WS_ORIG_DATE, 0, 10, false);
- f98_WS_ORIG_DATE_GRP = Field.group(s_WS_ORIG_DATE, 0, 10);
- f99_WS_ORIG_DATE_DD = Field.zoned(s_WS_ORIG_DATE, 0, 2, 0, false, false, false);
- f100_FILLER = Field.alphanumeric(s_WS_ORIG_DATE, 2, 1, false);
- f101_WS_ORIG_DATE_MM = Field.zoned(s_WS_ORIG_DATE, 3, 2, 0, false, false, false);
- f102_FILLER = Field.alphanumeric(s_WS_ORIG_DATE, 5, 1, false);
- f103_WS_ORIG_DATE_YYYY = Field.zoned(s_WS_ORIG_DATE, 6, 4, 0, false, false, false);
- f104_WS_ORIG_DATE_GRP_X = Field.group(s_WS_ORIG_DATE_GRP_X, 0, 10);
- f105_WS_ORIG_DATE_DD_X = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 0, 2, false);
- f106_FILLER = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 2, 1, false);
- f107_WS_ORIG_DATE_MM_X = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 3, 2, false);
- f108_FILLER = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 5, 1, false);
- f109_WS_ORIG_DATE_YYYY_X = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 6, 4, false);
- f110_PROCTRAN_AREA = Field.group(s_PROCTRAN_AREA, 0, 99);
- f111_PROC_TRAN_DATA = Field.group(s_PROCTRAN_AREA, 0, 99);
- f112_PROC_TRAN_EYE_CATCHER = Field.alphanumeric(s_PROCTRAN_AREA, 0, 4, false);
- f113_PROC_TRAN_LOGICAL_DELETE_AREA = Field.group(s_PROCTRAN_AREA, 0, 4);
- f114_PROC_TRAN_LOGICAL_DELETE_FLAG = Field.alphanumeric(s_PROCTRAN_AREA, 0, 1, false);
- f115_FILLER = Field.alphanumeric(s_PROCTRAN_AREA, 1, 3, false);
- f116_PROC_TRAN_ID = Field.group(s_PROCTRAN_AREA, 4, 14);
- f117_PROC_TRAN_SORT_CODE = Field.zoned(s_PROCTRAN_AREA, 4, 6, 0, false, false, false);
- f118_PROC_TRAN_NUMBER = Field.zoned(s_PROCTRAN_AREA, 10, 8, 0, false, false, false);
- f119_PROC_TRAN_DATE = Field.zoned(s_PROCTRAN_AREA, 18, 8, 0, false, false, false);
- f120_PROC_TRAN_DATE_GRP = Field.group(s_PROCTRAN_AREA, 18, 8);
- f121_PROC_TRAN_DATE_GRP_YYYY = Field.zoned(s_PROCTRAN_AREA, 18, 4, 0, false, false, false);
- f122_PROC_TRAN_DATE_GRP_MM = Field.zoned(s_PROCTRAN_AREA, 22, 2, 0, false, false, false);
- f123_PROC_TRAN_DATE_GRP_DD = Field.zoned(s_PROCTRAN_AREA, 24, 2, 0, false, false, false);
- f124_PROC_TRAN_TIME = Field.zoned(s_PROCTRAN_AREA, 26, 6, 0, false, false, false);
- f125_PROC_TRAN_TIME_GRP = Field.group(s_PROCTRAN_AREA, 26, 6);
- f126_PROC_TRAN_TIME_GRP_HH = Field.zoned(s_PROCTRAN_AREA, 26, 2, 0, false, false, false);
- f127_PROC_TRAN_TIME_GRP_MM = Field.zoned(s_PROCTRAN_AREA, 28, 2, 0, false, false, false);
- f128_PROC_TRAN_TIME_GRP_SS = Field.zoned(s_PROCTRAN_AREA, 30, 2, 0, false, false, false);
- f129_PROC_TRAN_REF = Field.zoned(s_PROCTRAN_AREA, 32, 12, 0, false, false, false);
- f130_PROC_TRAN_TYPE = Field.alphanumeric(s_PROCTRAN_AREA, 44, 3, false);
- f131_PROC_TRAN_DESC = Field.alphanumeric(s_PROCTRAN_AREA, 47, 40, false);
- f132_PROC_TRAN_DESC_XFR = Field.group(s_PROCTRAN_AREA, 47, 40);
- f133_PROC_TRAN_DESC_XFR_HEADER = Field.alphanumeric(s_PROCTRAN_AREA, 47, 26, false);
- f134_PROC_TRAN_DESC_XFR_SORTCODE = Field.zoned(s_PROCTRAN_AREA, 73, 6, 0, false, false, false);
- f135_PROC_TRAN_DESC_XFR_ACCOUNT = Field.zoned(s_PROCTRAN_AREA, 79, 8, 0, false, false, false);
- f136_PROC_TRAN_DESC_DELACC = Field.group(s_PROCTRAN_AREA, 47, 40);
- f137_PROC_DESC_DELACC_CUSTOMER = Field.zoned(s_PROCTRAN_AREA, 47, 10, 0, false, false, false);
- f138_PROC_DESC_DELACC_ACCTYPE = Field.alphanumeric(s_PROCTRAN_AREA, 57, 8, false);
- f139_PROC_DESC_DELACC_LAST_DD = Field.zoned(s_PROCTRAN_AREA, 65, 2, 0, false, false, false);
- f140_PROC_DESC_DELACC_LAST_MM = Field.zoned(s_PROCTRAN_AREA, 67, 2, 0, false, false, false);
- f141_PROC_DESC_DELACC_LAST_YYYY = Field.zoned(s_PROCTRAN_AREA, 69, 4, 0, false, false, false);
- f142_PROC_DESC_DELACC_NEXT_DD = Field.zoned(s_PROCTRAN_AREA, 73, 2, 0, false, false, false);
- f143_PROC_DESC_DELACC_NEXT_MM = Field.zoned(s_PROCTRAN_AREA, 75, 2, 0, false, false, false);
- f144_PROC_DESC_DELACC_NEXT_YYYY = Field.zoned(s_PROCTRAN_AREA, 77, 4, 0, false, false, false);
- f145_PROC_DESC_DELACC_FOOTER = Field.alphanumeric(s_PROCTRAN_AREA, 81, 6, false);
- f146_PROC_TRAN_DESC_CREACC = Field.group(s_PROCTRAN_AREA, 47, 40);
- f147_PROC_DESC_CREACC_CUSTOMER = Field.zoned(s_PROCTRAN_AREA, 47, 10, 0, false, false, false);
- f148_PROC_DESC_CREACC_ACCTYPE = Field.alphanumeric(s_PROCTRAN_AREA, 57, 8, false);
- f149_PROC_DESC_CREACC_LAST_DD = Field.zoned(s_PROCTRAN_AREA, 65, 2, 0, false, false, false);
- f150_PROC_DESC_CREACC_LAST_MM = Field.zoned(s_PROCTRAN_AREA, 67, 2, 0, false, false, false);
- f151_PROC_DESC_CREACC_LAST_YYYY = Field.zoned(s_PROCTRAN_AREA, 69, 4, 0, false, false, false);
- f152_PROC_DESC_CREACC_NEXT_DD = Field.zoned(s_PROCTRAN_AREA, 73, 2, 0, false, false, false);
- f153_PROC_DESC_CREACC_NEXT_MM = Field.zoned(s_PROCTRAN_AREA, 75, 2, 0, false, false, false);
- f154_PROC_DESC_CREACC_NEXT_YYYY = Field.zoned(s_PROCTRAN_AREA, 77, 4, 0, false, false, false);
- f155_PROC_DESC_CREACC_FOOTER = Field.alphanumeric(s_PROCTRAN_AREA, 81, 6, false);
- f156_PROC_TRAN_DESC_DELCUS = Field.group(s_PROCTRAN_AREA, 47, 40);
- f157_PROC_DESC_DELCUS_SORTCODE = Field.zoned(s_PROCTRAN_AREA, 47, 6, 0, false, false, false);
- f158_PROC_DESC_DELCUS_CUSTOMER = Field.zoned(s_PROCTRAN_AREA, 53, 10, 0, false, false, false);
- f159_PROC_DESC_DELCUS_NAME = Field.alphanumeric(s_PROCTRAN_AREA, 63, 14, false);
- f160_PROC_DESC_DELCUS_DOB_YYYY = Field.zoned(s_PROCTRAN_AREA, 77, 4, 0, false, false, false);
- f161_PROC_DESC_DELCUS_FILLER = Field.alphanumeric(s_PROCTRAN_AREA, 81, 1, false);
- f162_PROC_DESC_DELCUS_DOB_MM = Field.zoned(s_PROCTRAN_AREA, 82, 2, 0, false, false, false);
- f163_PROC_DESC_DELCUS_FILLER2 = Field.alphanumeric(s_PROCTRAN_AREA, 84, 1, false);
- f164_PROC_DESC_DELCUS_DOB_DD = Field.zoned(s_PROCTRAN_AREA, 85, 2, 0, false, false, false);
- f165_PROC_TRAN_DESC_CRECUS = Field.group(s_PROCTRAN_AREA, 47, 40);
- f166_PROC_DESC_CRECUS_SORTCODE = Field.zoned(s_PROCTRAN_AREA, 47, 6, 0, false, false, false);
- f167_PROC_DESC_CRECUS_CUSTOMER = Field.zoned(s_PROCTRAN_AREA, 53, 10, 0, false, false, false);
- f168_PROC_DESC_CRECUS_NAME = Field.alphanumeric(s_PROCTRAN_AREA, 63, 14, false);
- f169_PROC_DESC_CRECUS_DOB_YYYY = Field.zoned(s_PROCTRAN_AREA, 77, 4, 0, false, false, false);
- f170_PROC_DESC_CRECUS_FILLER = Field.alphanumeric(s_PROCTRAN_AREA, 81, 1, false);
- f171_PROC_DESC_CRECUS_DOB_MM = Field.zoned(s_PROCTRAN_AREA, 82, 2, 0, false, false, false);
- f172_PROC_DESC_CRECUS_FILLER2 = Field.alphanumeric(s_PROCTRAN_AREA, 84, 1, false);
- f173_PROC_DESC_CRECUS_DOB_DD = Field.zoned(s_PROCTRAN_AREA, 85, 2, 0, false, false, false);
- f174_PROC_TRAN_AMOUNT = Field.zoned(s_PROCTRAN_AREA, 87, 12, 2, true, false, false);
- f175_WS_PASSED_DATA = Field.group(s_WS_PASSED_DATA, 0, 13);
- f176_WS_TEST_KEY = Field.alphanumeric(s_WS_PASSED_DATA, 0, 4, false);
- f177_WS_SORT_CODE = Field.zoned(s_WS_PASSED_DATA, 4, 6, 0, false, false, false);
- f178_WS_CUSTOMER_RANGE = Field.group(s_WS_PASSED_DATA, 10, 3);
- f179_WS_CUSTOMER_RANGE_TOP = Field.alphanumeric(s_WS_PASSED_DATA, 10, 1, false);
- f180_WS_CUSTOMER_RANGE_MIDDLE = Field.alphanumeric(s_WS_PASSED_DATA, 11, 1, false);
- f181_WS_CUSTOMER_RANGE_BOTTOM = Field.alphanumeric(s_WS_PASSED_DATA, 12, 1, false);
- f182_PROCTRAN_RIDFLD = Field.binary(s_PROCTRAN_RIDFLD, 0, 8, 0, true, false);
- f183_SQLCODE_DISPLAY = Field.zoned(s_SQLCODE_DISPLAY, 0, 8, 0, true, true, true);
- f184_MY_ABEND_CODE = Field.alphanumeric(s_MY_ABEND_CODE, 0, 4, false);
- f185_WS_STORM_DRAIN = Field.alphanumeric(s_WS_STORM_DRAIN, 0, 1, false);
- f186_STORM_DRAIN_CONDITION = Field.alphanumeric(s_STORM_DRAIN_CONDITION, 0, 20, false);
- f187_NUMERIC_AMOUNT_DISPLAY = Field.numericEdited(s_NUMERIC_AMOUNT_DISPLAY, 0, 14, "+9999999999.99", false);
- f188_WS_TIME_DATA = Field.group(s_WS_TIME_DATA, 0, 6);
- f189_WS_TIME_NOW = Field.zoned(s_WS_TIME_DATA, 0, 6, 0, false, false, false);
- f190_WS_TIME_NOW_GRP = Field.group(s_WS_TIME_DATA, 0, 6);
- f191_WS_TIME_NOW_GRP_HH = Field.zoned(s_WS_TIME_DATA, 0, 2, 0, false, false, false);
- f192_WS_TIME_NOW_GRP_MM = Field.zoned(s_WS_TIME_DATA, 2, 2, 0, false, false, false);
- f193_WS_TIME_NOW_GRP_SS = Field.zoned(s_WS_TIME_DATA, 4, 2, 0, false, false, false);
- f194_WS_ABEND_PGM = Field.alphanumeric(s_WS_ABEND_PGM, 0, 8, false);
- f195_ABNDINFO_REC = Field.group(s_ABNDINFO_REC, 0, 681);
- f196_ABND_VSAM_KEY = Field.group(s_ABNDINFO_REC, 0, 12);
- f197_ABND_UTIME_KEY = Field.packed(s_ABNDINFO_REC, 0, 15, 0, true);
- f198_ABND_TASKNO_KEY = Field.zoned(s_ABNDINFO_REC, 8, 4, 0, false, false, false);
- f199_ABND_APPLID = Field.alphanumeric(s_ABNDINFO_REC, 12, 8, false);
- f200_ABND_TRANID = Field.alphanumeric(s_ABNDINFO_REC, 20, 4, false);
- f201_ABND_DATE = Field.alphanumeric(s_ABNDINFO_REC, 24, 10, false);
- f202_ABND_TIME = Field.alphanumeric(s_ABNDINFO_REC, 34, 8, false);
- f203_ABND_CODE = Field.alphanumeric(s_ABNDINFO_REC, 42, 4, false);
- f204_ABND_PROGRAM = Field.alphanumeric(s_ABNDINFO_REC, 46, 8, false);
- f205_ABND_RESPCODE = Field.zoned(s_ABNDINFO_REC, 54, 8, 0, true, true, true);
- f206_ABND_RESP2CODE = Field.zoned(s_ABNDINFO_REC, 63, 8, 0, true, true, true);
- f207_ABND_SQLCODE = Field.zoned(s_ABNDINFO_REC, 72, 8, 0, true, true, true);
- f208_ABND_FREEFORM = Field.alphanumeric(s_ABNDINFO_REC, 81, 600, false);
- f209_WS_SUFFICIENT_FUNDS = Field.alphanumeric(s_WS_SUFFICIENT_FUNDS, 0, 1, false);
- f210_WS_DIFFERENCE = Field.zoned(s_WS_DIFFERENCE, 0, 12, 2, true, false, false);
- f211_DFHCOMMAREA = Field.group(s_DFHCOMMAREA, 0, 92);
- f212_COMM_ACCNO = Field.alphanumeric(s_DFHCOMMAREA, 0, 8, false);
- f213_COMM_AMT = Field.zoned(s_DFHCOMMAREA, 8, 12, 2, true, false, false);
- f214_COMM_SORTC = Field.zoned(s_DFHCOMMAREA, 20, 6, 0, false, false, false);
- f215_COMM_AV_BAL = Field.zoned(s_DFHCOMMAREA, 26, 12, 2, true, false, false);
- f216_COMM_ACT_BAL = Field.zoned(s_DFHCOMMAREA, 38, 12, 2, true, false, false);
- f217_COMM_ORIGIN = Field.group(s_DFHCOMMAREA, 50, 40);
- f218_COMM_APPLID = Field.alphanumeric(s_DFHCOMMAREA, 50, 8, false);
- f219_COMM_USERID = Field.alphanumeric(s_DFHCOMMAREA, 58, 8, false);
- f220_COMM_FACILITY_NAME = Field.alphanumeric(s_DFHCOMMAREA, 66, 8, false);
- f221_COMM_NETWRK_ID = Field.alphanumeric(s_DFHCOMMAREA, 74, 8, false);
- f222_COMM_FACILTYPE = Field.binary(s_DFHCOMMAREA, 82, 8, 0, true, false);
- f223_FILLER = Field.alphanumeric(s_DFHCOMMAREA, 86, 4, false);
- f224_COMM_SUCCESS = Field.alphanumeric(s_DFHCOMMAREA, 90, 1, false);
- f225_COMM_FAIL_CODE = Field.alphanumeric(s_DFHCOMMAREA, 91, 1, false);
- f226_DFHEIBLK = Field.group(s_DFHEIBLK, 0, 85);
- f227_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
- f228_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
- f229_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
- f230_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
- f231_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
- f232_DFHEIGDI = Field.binary(s_DFHEIBLK, 20, 4, 0, true, false);
- f233_EIBCPOSN = Field.binary(s_DFHEIBLK, 22, 4, 0, true, false);
- f234_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
- f235_EIBAID = Field.alphanumeric(s_DFHEIBLK, 26, 1, false);
- f236_EIBFN = Field.alphanumeric(s_DFHEIBLK, 27, 2, false);
- f237_EIBRCODE = Field.alphanumeric(s_DFHEIBLK, 29, 6, false);
- f238_EIBDS = Field.alphanumeric(s_DFHEIBLK, 35, 8, false);
- f239_EIBREQID = Field.alphanumeric(s_DFHEIBLK, 43, 8, false);
- f240_EIBRSRCE = Field.alphanumeric(s_DFHEIBLK, 51, 8, false);
- f241_EIBSYNC = Field.alphanumeric(s_DFHEIBLK, 59, 1, false);
- f242_EIBFREE = Field.alphanumeric(s_DFHEIBLK, 60, 1, false);
- f243_EIBRECV = Field.alphanumeric(s_DFHEIBLK, 61, 1, false);
- f244_EIBSEND = Field.alphanumeric(s_DFHEIBLK, 62, 1, false);
- f245_EIBATT = Field.alphanumeric(s_DFHEIBLK, 63, 1, false);
- f246_EIBEOC = Field.alphanumeric(s_DFHEIBLK, 64, 1, false);
- f247_EIBFMH = Field.alphanumeric(s_DFHEIBLK, 65, 1, false);
- f248_EIBCOMPL = Field.alphanumeric(s_DFHEIBLK, 66, 1, false);
- f249_EIBSIG = Field.alphanumeric(s_DFHEIBLK, 67, 1, false);
- f250_EIBCONF = Field.alphanumeric(s_DFHEIBLK, 68, 1, false);
- f251_EIBERR = Field.alphanumeric(s_DFHEIBLK, 69, 1, false);
- f252_EIBERRCD = Field.alphanumeric(s_DFHEIBLK, 70, 4, false);
- f253_EIBSYNRB = Field.alphanumeric(s_DFHEIBLK, 74, 1, false);
- f254_EIBNODAT = Field.alphanumeric(s_DFHEIBLK, 75, 1, false);
- f255_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
- f256_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
- f257_EIBRLDBK = Field.alphanumeric(s_DFHEIBLK, 84, 1, false);
- f258_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
}
- /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
- * initial storage; RETURN-CODE. */
- public int runProgram() {
- System.arraycopy(IMAGE_s_SORTCODE, 0, s_SORTCODE.bytes, 0, IMAGE_s_SORTCODE.length);
- System.arraycopy(IMAGE_s_SYSIDERR_RETRY, 0, s_SYSIDERR_RETRY.bytes, 0, IMAGE_s_SYSIDERR_RETRY.length);
+ /** WORKING-STORAGE (and every storage) as its VALUE clauses set it: each entry point starts from here. */
+ private void initialState() {
System.arraycopy(IMAGE_s_HOST_ACCOUNT_ROW, 0, s_HOST_ACCOUNT_ROW.bytes, 0, IMAGE_s_HOST_ACCOUNT_ROW.length);
System.arraycopy(IMAGE_s_HOST_PROCTRAN_ROW, 0, s_HOST_PROCTRAN_ROW.bytes, 0, IMAGE_s_HOST_PROCTRAN_ROW.length);
System.arraycopy(IMAGE_s_SQLCA, 0, s_SQLCA.bytes, 0, IMAGE_s_SQLCA.length);
@@ -876,7 +452,15 @@ public int runProgram() {
System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ f1_SORTCODE = new BigDecimal("987654");
+ f2_SYSIDERR_RETRY = new BigDecimal("0");
Cobol.moveFigurative(Figurative.ZEROS, f187_NUMERIC_AMOUNT_DISPLAY, CS);
+ }
+
+ /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
+ * initial storage; RETURN-CODE. */
+ public int runProgram() {
+ initialState();
performDepth = 0;
try {
perform(0, 23);
@@ -886,57 +470,20 @@ public int runProgram() {
return Cobol.num(f258_GG_RETURN_CODE, CS).intValue();
}
- public void executeDbcrfun() {
- runBatch(List.of(), null);
- }
-
/** One task of the program: the EIB and COMMAREA from the task, then the PROCEDURE DIVISION. */
public void runTask(CicsTask task) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
this.task = task;
DetSql.closeAll(); // a task's cursors are its own
caBack = () -> { };
handlers.clear();
heldKey.clear();
- System.arraycopy(IMAGE_s_SORTCODE, 0, s_SORTCODE.bytes, 0, IMAGE_s_SORTCODE.length);
- System.arraycopy(IMAGE_s_SYSIDERR_RETRY, 0, s_SYSIDERR_RETRY.bytes, 0, IMAGE_s_SYSIDERR_RETRY.length);
- System.arraycopy(IMAGE_s_HOST_ACCOUNT_ROW, 0, s_HOST_ACCOUNT_ROW.bytes, 0, IMAGE_s_HOST_ACCOUNT_ROW.length);
- System.arraycopy(IMAGE_s_HOST_PROCTRAN_ROW, 0, s_HOST_PROCTRAN_ROW.bytes, 0, IMAGE_s_HOST_PROCTRAN_ROW.length);
- System.arraycopy(IMAGE_s_SQLCA, 0, s_SQLCA.bytes, 0, IMAGE_s_SQLCA.length);
- System.arraycopy(IMAGE_s_WS_CICS_WORK_AREA, 0, s_WS_CICS_WORK_AREA.bytes, 0, IMAGE_s_WS_CICS_WORK_AREA.length);
- System.arraycopy(IMAGE_s_FILE_RETRY, 0, s_FILE_RETRY.bytes, 0, IMAGE_s_FILE_RETRY.length);
- System.arraycopy(IMAGE_s_WS_EXIT_RETRY_LOOP, 0, s_WS_EXIT_RETRY_LOOP.bytes, 0, IMAGE_s_WS_EXIT_RETRY_LOOP.length);
- System.arraycopy(IMAGE_s_DB2_DATE_REFORMAT, 0, s_DB2_DATE_REFORMAT.bytes, 0, IMAGE_s_DB2_DATE_REFORMAT.length);
- System.arraycopy(IMAGE_s_DATA_STORE_TYPE, 0, s_DATA_STORE_TYPE.bytes, 0, IMAGE_s_DATA_STORE_TYPE.length);
- System.arraycopy(IMAGE_s_WS_ACC_DATA, 0, s_WS_ACC_DATA.bytes, 0, IMAGE_s_WS_ACC_DATA.length);
- System.arraycopy(IMAGE_s_WS_EIBTASKN12, 0, s_WS_EIBTASKN12.bytes, 0, IMAGE_s_WS_EIBTASKN12.length);
- System.arraycopy(IMAGE_s_WS_SQLCODE_DISP, 0, s_WS_SQLCODE_DISP.bytes, 0, IMAGE_s_WS_SQLCODE_DISP.length);
- System.arraycopy(IMAGE_s_DESIRED_ACC_KEY, 0, s_DESIRED_ACC_KEY.bytes, 0, IMAGE_s_DESIRED_ACC_KEY.length);
- System.arraycopy(IMAGE_s_NEW_ACCOUNT_AVAILABLE_BALANCE, 0, s_NEW_ACCOUNT_AVAILABLE_BALANCE.bytes, 0, IMAGE_s_NEW_ACCOUNT_AVAILABLE_BALANCE.length);
- System.arraycopy(IMAGE_s_NEW_ACCOUNT_ACTUAL_BALANCE, 0, s_NEW_ACCOUNT_ACTUAL_BALANCE.bytes, 0, IMAGE_s_NEW_ACCOUNT_ACTUAL_BALANCE.length);
- System.arraycopy(IMAGE_s_WS_ACC_REC_LEN, 0, s_WS_ACC_REC_LEN.bytes, 0, IMAGE_s_WS_ACC_REC_LEN.length);
- System.arraycopy(IMAGE_s_WS_U_TIME, 0, s_WS_U_TIME.bytes, 0, IMAGE_s_WS_U_TIME.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE, 0, s_WS_ORIG_DATE.bytes, 0, IMAGE_s_WS_ORIG_DATE.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE_GRP_X, 0, s_WS_ORIG_DATE_GRP_X.bytes, 0, IMAGE_s_WS_ORIG_DATE_GRP_X.length);
- System.arraycopy(IMAGE_s_PROCTRAN_AREA, 0, s_PROCTRAN_AREA.bytes, 0, IMAGE_s_PROCTRAN_AREA.length);
- System.arraycopy(IMAGE_s_WS_PASSED_DATA, 0, s_WS_PASSED_DATA.bytes, 0, IMAGE_s_WS_PASSED_DATA.length);
- System.arraycopy(IMAGE_s_PROCTRAN_RIDFLD, 0, s_PROCTRAN_RIDFLD.bytes, 0, IMAGE_s_PROCTRAN_RIDFLD.length);
- System.arraycopy(IMAGE_s_SQLCODE_DISPLAY, 0, s_SQLCODE_DISPLAY.bytes, 0, IMAGE_s_SQLCODE_DISPLAY.length);
- System.arraycopy(IMAGE_s_MY_ABEND_CODE, 0, s_MY_ABEND_CODE.bytes, 0, IMAGE_s_MY_ABEND_CODE.length);
- System.arraycopy(IMAGE_s_WS_STORM_DRAIN, 0, s_WS_STORM_DRAIN.bytes, 0, IMAGE_s_WS_STORM_DRAIN.length);
- System.arraycopy(IMAGE_s_STORM_DRAIN_CONDITION, 0, s_STORM_DRAIN_CONDITION.bytes, 0, IMAGE_s_STORM_DRAIN_CONDITION.length);
- System.arraycopy(IMAGE_s_NUMERIC_AMOUNT_DISPLAY, 0, s_NUMERIC_AMOUNT_DISPLAY.bytes, 0, IMAGE_s_NUMERIC_AMOUNT_DISPLAY.length);
- System.arraycopy(IMAGE_s_WS_TIME_DATA, 0, s_WS_TIME_DATA.bytes, 0, IMAGE_s_WS_TIME_DATA.length);
- System.arraycopy(IMAGE_s_WS_ABEND_PGM, 0, s_WS_ABEND_PGM.bytes, 0, IMAGE_s_WS_ABEND_PGM.length);
- System.arraycopy(IMAGE_s_ABNDINFO_REC, 0, s_ABNDINFO_REC.bytes, 0, IMAGE_s_ABNDINFO_REC.length);
- System.arraycopy(IMAGE_s_WS_SUFFICIENT_FUNDS, 0, s_WS_SUFFICIENT_FUNDS.bytes, 0, IMAGE_s_WS_SUFFICIENT_FUNDS.length);
- System.arraycopy(IMAGE_s_WS_DIFFERENCE, 0, s_WS_DIFFERENCE.bytes, 0, IMAGE_s_WS_DIFFERENCE.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
- Cobol.moveFigurative(Figurative.ZEROS, f187_NUMERIC_AMOUNT_DISPLAY, CS);
+ initialState();
Cobol.move(task.transid(), f229_EIBTRNID, CS);
+ Cobol.move(task.termid() == null ? "" : task.termid(), f231_EIBTRMID, CS);
+ Cobol.store(f230_EIBTASKN, BigDecimal.valueOf(task.taskNumber()), false, CS);
java.time.LocalDateTime now = task.now();
Cobol.store(f228_EIBDATE, BigDecimal.valueOf((now.getYear() - 1900) * 1000L + now.getDayOfYear()), false, CS);
Cobol.store(f227_EIBTIME, BigDecimal.valueOf(now.getHour() * 10000L + now.getMinute() * 100L + now.getSecond()), false, CS);
@@ -945,20 +492,56 @@ public void runTask(CicsTask task) {
}
Object ca = task.hasCommarea() ? task.commarea(Object.class) : null;
int calen = 0;
- if (ca instanceof Bnk1craSubpgmParms x) {
- in_Bnk1craSubpgmParms(x, s_DFHCOMMAREA, 0);
- caBack = () -> fill_Bnk1craSubpgmParms(x, s_DFHCOMMAREA, 0);
+ if (ca instanceof DbcrfunDfhcommarea x) {
+ in_DbcrfunDfhcommarea(x, s_DFHCOMMAREA, 0);
+ caBack = () -> fill_DbcrfunDfhcommarea(x, s_DFHCOMMAREA, 0);
calen = cx(task, 92);
- } else if (ca instanceof AbndprocAbndinfoRec x) {
- in_AbndprocAbndinfoRec(x, s_DFHCOMMAREA, 0);
- caBack = () -> fill_AbndprocAbndinfoRec(x, s_DFHCOMMAREA, 0);
+ } else if (ca instanceof AbndprocDfhcommarea x) {
+ in_AbndprocDfhcommarea(x, s_DFHCOMMAREA, 0);
+ caBack = () -> fill_AbndprocDfhcommarea(x, s_DFHCOMMAREA, 0);
calen = cx(task, 681);
}
+ s_DFHCOMMAREA.beyond = null;
+ if (ca instanceof byte[] cb0) {
+ byte[] cb = DetCics.commareaIn(cb0, CS);
+ System.arraycopy(cb, 0, s_DFHCOMMAREA.bytes, 0, Math.min(cb.length, s_DFHCOMMAREA.bytes.length));
+ if (cb.length > s_DFHCOMMAREA.bytes.length) {
+ s_DFHCOMMAREA.beyond = java.util.Arrays.copyOfRange(cb, s_DFHCOMMAREA.bytes.length, cb.length);
+ }
+ calen = cx(task, cb.length);
+ }
+ byte[] raw = task.linkArea();
+ if (raw != null) {
+ System.arraycopy(raw, 0, s_DFHCOMMAREA.bytes, 0, Math.min(raw.length, s_DFHCOMMAREA.bytes.length));
+ int keep = s_DFHCOMMAREA.bytes.length;
+ s_DFHCOMMAREA.beyond = raw.length > keep ? java.util.Arrays.copyOfRange(raw, keep, raw.length) : null;
+ Runnable typed = caBack;
+ caBack = () -> { typed.run(); System.arraycopy(s_DFHCOMMAREA.bytes, 0, raw, 0, Math.min(raw.length, keep)); if (s_DFHCOMMAREA.beyond != null) { System.arraycopy(s_DFHCOMMAREA.beyond, 0, raw, keep, raw.length - keep); } };
+ }
+ byte[] caWhole = null;
+ if (task.exactCommarea() && calen < s_DFHCOMMAREA.bytes.length) {
+ caWhole = s_DFHCOMMAREA.bytes;
+ s_DFHCOMMAREA.bytes = java.util.Arrays.copyOf(caWhole, calen);
+ Runnable typed = caBack;
+ byte[] whole = caWhole;
+ caBack = () -> { caWhole(whole); typed.run(); };
+ }
Cobol.store(f234_EIBCALEN, BigDecimal.valueOf(calen), false, CS);
try {
- perform(0, 23);
- } catch (Goback g) {
- // RETURN / XCTL / an abend ended the program
+ try {
+ perform(0, 23);
+ } catch (Goback g) {
+ // RETURN / XCTL / an abend ended the program
+ }
+ } catch (IndexOutOfBoundsException e) {
+ if (caWhole == null) {
+ throw e;
+ }
+ throw new DetCics.PastFrom("COMMAREA past EIBCALEN (" + calen + " bytes): not modelled");
+ } finally {
+ if (caWhole != null) {
+ caWhole(caWhole);
+ }
}
if (!task.ended()) {
caBack.run();
@@ -966,11 +549,15 @@ public void runTask(CicsTask task) {
}
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
- public Bnk1craSubpgmParms handleLink(Bnk1craSubpgmParms request) {
- throw new UnsupportedOperationException("handleLink: this port runs as runTask");
+ public DbcrfunDfhcommarea handleLink(DbcrfunDfhcommarea request) {
+ CicsTask.Region region = CicsTask.region();
+ CicsTask task = region.linked("DBCRFUN", request);
+ region.run(task, "DBCRFUN", this::runTask);
+ return request;
}
@@ -990,45 +577,10 @@ private static Dd dd(List dds, String name) {
/** The batch entry. */
public int runBatch(List dds, String parm) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
DetSql.closeAll(); // a step's cursors are its own
- System.arraycopy(IMAGE_s_SORTCODE, 0, s_SORTCODE.bytes, 0, IMAGE_s_SORTCODE.length);
- System.arraycopy(IMAGE_s_SYSIDERR_RETRY, 0, s_SYSIDERR_RETRY.bytes, 0, IMAGE_s_SYSIDERR_RETRY.length);
- System.arraycopy(IMAGE_s_HOST_ACCOUNT_ROW, 0, s_HOST_ACCOUNT_ROW.bytes, 0, IMAGE_s_HOST_ACCOUNT_ROW.length);
- System.arraycopy(IMAGE_s_HOST_PROCTRAN_ROW, 0, s_HOST_PROCTRAN_ROW.bytes, 0, IMAGE_s_HOST_PROCTRAN_ROW.length);
- System.arraycopy(IMAGE_s_SQLCA, 0, s_SQLCA.bytes, 0, IMAGE_s_SQLCA.length);
- System.arraycopy(IMAGE_s_WS_CICS_WORK_AREA, 0, s_WS_CICS_WORK_AREA.bytes, 0, IMAGE_s_WS_CICS_WORK_AREA.length);
- System.arraycopy(IMAGE_s_FILE_RETRY, 0, s_FILE_RETRY.bytes, 0, IMAGE_s_FILE_RETRY.length);
- System.arraycopy(IMAGE_s_WS_EXIT_RETRY_LOOP, 0, s_WS_EXIT_RETRY_LOOP.bytes, 0, IMAGE_s_WS_EXIT_RETRY_LOOP.length);
- System.arraycopy(IMAGE_s_DB2_DATE_REFORMAT, 0, s_DB2_DATE_REFORMAT.bytes, 0, IMAGE_s_DB2_DATE_REFORMAT.length);
- System.arraycopy(IMAGE_s_DATA_STORE_TYPE, 0, s_DATA_STORE_TYPE.bytes, 0, IMAGE_s_DATA_STORE_TYPE.length);
- System.arraycopy(IMAGE_s_WS_ACC_DATA, 0, s_WS_ACC_DATA.bytes, 0, IMAGE_s_WS_ACC_DATA.length);
- System.arraycopy(IMAGE_s_WS_EIBTASKN12, 0, s_WS_EIBTASKN12.bytes, 0, IMAGE_s_WS_EIBTASKN12.length);
- System.arraycopy(IMAGE_s_WS_SQLCODE_DISP, 0, s_WS_SQLCODE_DISP.bytes, 0, IMAGE_s_WS_SQLCODE_DISP.length);
- System.arraycopy(IMAGE_s_DESIRED_ACC_KEY, 0, s_DESIRED_ACC_KEY.bytes, 0, IMAGE_s_DESIRED_ACC_KEY.length);
- System.arraycopy(IMAGE_s_NEW_ACCOUNT_AVAILABLE_BALANCE, 0, s_NEW_ACCOUNT_AVAILABLE_BALANCE.bytes, 0, IMAGE_s_NEW_ACCOUNT_AVAILABLE_BALANCE.length);
- System.arraycopy(IMAGE_s_NEW_ACCOUNT_ACTUAL_BALANCE, 0, s_NEW_ACCOUNT_ACTUAL_BALANCE.bytes, 0, IMAGE_s_NEW_ACCOUNT_ACTUAL_BALANCE.length);
- System.arraycopy(IMAGE_s_WS_ACC_REC_LEN, 0, s_WS_ACC_REC_LEN.bytes, 0, IMAGE_s_WS_ACC_REC_LEN.length);
- System.arraycopy(IMAGE_s_WS_U_TIME, 0, s_WS_U_TIME.bytes, 0, IMAGE_s_WS_U_TIME.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE, 0, s_WS_ORIG_DATE.bytes, 0, IMAGE_s_WS_ORIG_DATE.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE_GRP_X, 0, s_WS_ORIG_DATE_GRP_X.bytes, 0, IMAGE_s_WS_ORIG_DATE_GRP_X.length);
- System.arraycopy(IMAGE_s_PROCTRAN_AREA, 0, s_PROCTRAN_AREA.bytes, 0, IMAGE_s_PROCTRAN_AREA.length);
- System.arraycopy(IMAGE_s_WS_PASSED_DATA, 0, s_WS_PASSED_DATA.bytes, 0, IMAGE_s_WS_PASSED_DATA.length);
- System.arraycopy(IMAGE_s_PROCTRAN_RIDFLD, 0, s_PROCTRAN_RIDFLD.bytes, 0, IMAGE_s_PROCTRAN_RIDFLD.length);
- System.arraycopy(IMAGE_s_SQLCODE_DISPLAY, 0, s_SQLCODE_DISPLAY.bytes, 0, IMAGE_s_SQLCODE_DISPLAY.length);
- System.arraycopy(IMAGE_s_MY_ABEND_CODE, 0, s_MY_ABEND_CODE.bytes, 0, IMAGE_s_MY_ABEND_CODE.length);
- System.arraycopy(IMAGE_s_WS_STORM_DRAIN, 0, s_WS_STORM_DRAIN.bytes, 0, IMAGE_s_WS_STORM_DRAIN.length);
- System.arraycopy(IMAGE_s_STORM_DRAIN_CONDITION, 0, s_STORM_DRAIN_CONDITION.bytes, 0, IMAGE_s_STORM_DRAIN_CONDITION.length);
- System.arraycopy(IMAGE_s_NUMERIC_AMOUNT_DISPLAY, 0, s_NUMERIC_AMOUNT_DISPLAY.bytes, 0, IMAGE_s_NUMERIC_AMOUNT_DISPLAY.length);
- System.arraycopy(IMAGE_s_WS_TIME_DATA, 0, s_WS_TIME_DATA.bytes, 0, IMAGE_s_WS_TIME_DATA.length);
- System.arraycopy(IMAGE_s_WS_ABEND_PGM, 0, s_WS_ABEND_PGM.bytes, 0, IMAGE_s_WS_ABEND_PGM.length);
- System.arraycopy(IMAGE_s_ABNDINFO_REC, 0, s_ABNDINFO_REC.bytes, 0, IMAGE_s_ABNDINFO_REC.length);
- System.arraycopy(IMAGE_s_WS_SUFFICIENT_FUNDS, 0, s_WS_SUFFICIENT_FUNDS.bytes, 0, IMAGE_s_WS_SUFFICIENT_FUNDS.length);
- System.arraycopy(IMAGE_s_WS_DIFFERENCE, 0, s_WS_DIFFERENCE.bytes, 0, IMAGE_s_WS_DIFFERENCE.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
- Cobol.moveFigurative(Figurative.ZEROS, f187_NUMERIC_AMOUNT_DISPLAY, CS);
+ initialState();
byte[] parmText = (parm == null ? "" : parm).getBytes(CS);
s_DFHCOMMAREA.bytes[0] = (byte) (parmText.length >> 8);
s_DFHCOMMAREA.bytes[1] = (byte) parmText.length;
@@ -1041,6 +593,7 @@ public int runBatch(List dds, String parm) {
return Cobol.num(f258_GG_RETURN_CODE, CS).intValue();
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
@@ -1177,7 +730,7 @@ private int p4() {
java.util.Map sqlParams1 = new java.util.HashMap<>();
sqlParams1.put("hvAccountSortcode", DetSql.charIn(f7_HV_ACCOUNT_SORTCODE, CS));
sqlParams1.put("hvAccountAccNo", DetSql.charIn(f8_HV_ACCOUNT_ACC_NO, CS));
- java.util.Map sqlRow2 = DetSql.selectOne(f27_SQLCA, () -> accountRepository.selectL245Dbcrfun(sqlParams1), CS);
+ java.util.Map sqlRow2 = DetSql.selectOne(f27_SQLCA, "DBCRFUN:245", () -> accountRepository.selectL245Dbcrfun(sqlParams1), CS);
if (sqlRow2 != null) {
DetSql.into(f27_SQLCA, sqlRow2, "XXXXXNXNXXNN", new Field[] {f4_HV_ACCOUNT_EYECATCHER, f5_HV_ACCOUNT_CUST_NO, f7_HV_ACCOUNT_SORTCODE, f8_HV_ACCOUNT_ACC_NO, f9_HV_ACCOUNT_ACC_TYPE, f10_HV_ACCOUNT_INT_RATE, f11_HV_ACCOUNT_OPENED, f12_HV_ACCOUNT_OVERDRAFT_LIM, f13_HV_ACCOUNT_LAST_STMT, f14_HV_ACCOUNT_NEXT_STMT, f15_HV_ACCOUNT_AVAIL_BAL, f16_HV_ACCOUNT_ACTUAL_BAL}, new Field[] {null, null, null, null, null, null, null, null, null, null, null, null}, null, CS);
}
@@ -1255,7 +808,7 @@ private int p4() {
sqlParams6.put("hvAccountActualBal", DetSql.numIn(f16_HV_ACCOUNT_ACTUAL_BAL, CS));
sqlParams6.put("hvAccountSortcode", DetSql.charIn(f7_HV_ACCOUNT_SORTCODE, CS));
sqlParams6.put("hvAccountAccNo", DetSql.charIn(f8_HV_ACCOUNT_ACC_NO, CS));
- DetSql.update(f27_SQLCA, () -> accountRepository.updateL392Dbcrfun(sqlParams6), true, CS);
+ DetSql.update(f27_SQLCA, "DBCRFUN:392", () -> accountRepository.updateL392Dbcrfun(sqlParams6), true, CS);
// MOVE SQLCODE TO SQLCODE-DISPLAY
Cobol.move(f30_SQLCODE, f183_SQLCODE_DISPLAY, CS);
// MOVE HV-ACCOUNT-AVAIL-BAL TO COMM-AV-BAL
@@ -1383,7 +936,7 @@ private int p10() {
sqlParams7.put("hvProctranType", DetSql.charIn(f24_HV_PROCTRAN_TYPE, CS));
sqlParams7.put("hvProctranDesc", DetSql.charIn(f25_HV_PROCTRAN_DESC, CS));
sqlParams7.put("hvProctranAmount", DetSql.numIn(f26_HV_PROCTRAN_AMOUNT, CS));
- DetSql.update(f27_SQLCA, () -> proctranRepository.insertL524Dbcrfun(sqlParams7), false, CS);
+ DetSql.update(f27_SQLCA, "DBCRFUN:524", () -> proctranRepository.insertL524Dbcrfun(sqlParams7), false, CS);
// IF SQLCODE NOT = 0
if (!(Cobol.num(f30_SQLCODE, CS).compareTo(D0) == 0)) {
// MOVE SQLCODE TO SQLCODE-DISPLAY
@@ -1392,6 +945,10 @@ private int p10() {
Sysout.display("UNABLE TO WRITE TO PROCTRAN DB2 DATASTORE", " SQLCODE=", Cobol.displayText(f183_SQLCODE_DISPLAY, CS), "WITH THE FOLLOWING DATA:", Cobol.displayText(f17_HOST_PROCTRAN_ROW, CS));
// EXEC CICS SYNCPOINT ROLLBACK RESP(WS-CICS-RESP) RESP2(WS-CICS-RESP2) END-EXEC
task.rollback();
+ Cobol.store(f255_EIBRESP, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f256_EIBRESP2, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f50_WS_CICS_RESP, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f51_WS_CICS_RESP2, BigDecimal.valueOf(0), false, CS);
// IF WS-CICS-RESP NOT = DFHRESP(NORMAL)
if (!(Cobol.num(f50_WS_CICS_RESP, CS).compareTo(D0) == 0)) {
// INITIALIZE ABNDINFO-REC
@@ -1434,14 +991,15 @@ private int p10() {
// STRING 'WTPD010 - COULD NOT ROLL BACK, POSSIBLE DATA' DELIMITED BY SIZE, 'INTEGRITY ISSUE BETWEEN ACCOUNT AND PROCTRAN ' DELIMITED BY SIZE, 'FOR ROW:'
Cobol.string(f208_ABND_FREEFORM, null, CS, Cobol.StringPart.size("WTPD010 - COULD NOT ROLL BACK, POSSIBLE DATA", CS), Cobol.StringPart.size("INTEGRITY ISSUE BETWEEN ACCOUNT AND PROCTRAN ", CS), Cobol.StringPart.size("FOR ROW:", CS), Cobol.StringPart.size(f17_HOST_PROCTRAN_ROW), Cobol.StringPart.size("EIBRESP=", CS), Cobol.StringPart.size(f205_ABND_RESPCODE), Cobol.StringPart.size(" RESP2=", CS), Cobol.StringPart.size(f206_ABND_RESP2CODE));
// EXEC CICS LINK PROGRAM(WS-ABEND-PGM) COMMAREA(ABNDINFO-REC) END-EXEC
- AbndprocAbndinfoRec ca9 = out_AbndprocAbndinfoRec(f195_ABNDINFO_REC.storage(), f195_ABNDINFO_REC.offset());
- String lr8 = task.link(Cobol.text(f194_WS_ABEND_PGM, CS).strip(), ca9, 681);
- if ("NORMAL".equals(lr8)) in_AbndprocAbndinfoRec(ca9, f195_ABNDINFO_REC.storage(), f195_ABNDINFO_REC.offset());
- String exit10 = task.abendExit();
- if (exit10 != null) return GOTO | paragraph(exit10);
- if (task.ended()) throw new Goback();
+ Storage cw10 = Cobol.commarea(f195_ABNDINFO_REC, 681);
+ AbndprocDfhcommarea ca9 = out_AbndprocDfhcommarea(cw10, 0);
+ String lr8 = task.link(Cobol.text(f194_WS_ABEND_PGM, CS).strip(), ca9, 681, cw10.bytes);
+ if ("NORMAL".equals(lr8)) { in_AbndprocDfhcommarea(ca9, cw10, 0); Cobol.commareaBack(cw10, f195_ABNDINFO_REC); }
+ String exit11 = task.abendExit();
+ if (exit11 != null) return GOTO | paragraph(exit11);
+ if (task.ended()) throw abended();
Cobol.store(f255_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr8)), false, CS);
- Cobol.store(f256_EIBRESP2, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f256_EIBRESP2, BigDecimal.valueOf(DetCics.linkResp2(lr8)), false, CS);
if (DetCics.resp(lr8) != 0) {
int to = condition(DetCics.condition(DetCics.resp(lr8)));
if (to >= 0) return GOTO | to;
@@ -1449,9 +1007,9 @@ private int p10() {
// DISPLAY ' COULD NOT ROLL BACK, POSSIBLE DATA ' 'INTEGRITY ISSUE BETWEEN ACCOUNT AND PROCTRAN ' 'FOR ROW:' HOST-PROCTRAN-ROW 'RESP CODE=' WS-CICS-RESP
Sysout.display(" COULD NOT ROLL BACK, POSSIBLE DATA ", "INTEGRITY ISSUE BETWEEN ACCOUNT AND PROCTRAN ", "FOR ROW:", Cobol.displayText(f17_HOST_PROCTRAN_ROW, CS), "RESP CODE=", Cobol.displayText(f50_WS_CICS_RESP, CS), " RESP2 CODE=", Cobol.displayText(f51_WS_CICS_RESP2, CS));
// EXEC CICS ABEND ABCODE ('HROL') CANCEL END-EXEC
- String exit11 = task.abendCancel("HROL".strip());
- if (exit11 == null) throw new Goback();
- if (true) return GOTO | paragraph(exit11);
+ String exit12 = task.abendCancel("HROL".strip());
+ if (exit12 == null) throw abended();
+ if (true) return GOTO | paragraph(exit12);
}
// MOVE 'N' TO COMM-SUCCESS
Cobol.move("N", f224_COMM_SUCCESS, CS);
@@ -1556,6 +1114,10 @@ private int p19() {
Sysout.display("DBCRFUN: Check-For-Storm-Drain-VSAM: Storm ", "Drain condition (Abend ", Cobol.displayText(f184_MY_ABEND_CODE, CS), ") ", "has been met.");
// EXEC CICS SYNCPOINT ROLLBACK RESP(WS-CICS-RESP) RESP2(WS-CICS-RESP2) END-EXEC
task.rollback();
+ Cobol.store(f255_EIBRESP, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f256_EIBRESP2, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f50_WS_CICS_RESP, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f51_WS_CICS_RESP2, BigDecimal.valueOf(0), false, CS);
// IF WS-CICS-RESP NOT = DFHRESP(NORMAL)
if (!(Cobol.num(f50_WS_CICS_RESP, CS).compareTo(D0) == 0)) {
// INITIALIZE ABNDINFO-REC
@@ -1598,24 +1160,25 @@ private int p19() {
// STRING 'AH010 - Unable to perform Synpoint ' DELIMITED BY SIZE, 'Rollback.' DELIMITED BY SIZE, ' Possible Integrity issue following VSAM RLS ' DELIMIT
Cobol.string(f208_ABND_FREEFORM, null, CS, Cobol.StringPart.size("AH010 - Unable to perform Synpoint ", CS), Cobol.StringPart.size("Rollback.", CS), Cobol.StringPart.size(" Possible Integrity issue following VSAM RLS ", CS), Cobol.StringPart.size("abend.", CS), Cobol.StringPart.size("EIBRESP=", CS), Cobol.StringPart.size(f205_ABND_RESPCODE), Cobol.StringPart.size(" RESP2=", CS), Cobol.StringPart.size(f206_ABND_RESP2CODE));
// EXEC CICS LINK PROGRAM(WS-ABEND-PGM) COMMAREA(ABNDINFO-REC) END-EXEC
- AbndprocAbndinfoRec ca13 = out_AbndprocAbndinfoRec(f195_ABNDINFO_REC.storage(), f195_ABNDINFO_REC.offset());
- String lr12 = task.link(Cobol.text(f194_WS_ABEND_PGM, CS).strip(), ca13, 681);
- if ("NORMAL".equals(lr12)) in_AbndprocAbndinfoRec(ca13, f195_ABNDINFO_REC.storage(), f195_ABNDINFO_REC.offset());
- String exit14 = task.abendExit();
- if (exit14 != null) return GOTO | paragraph(exit14);
- if (task.ended()) throw new Goback();
- Cobol.store(f255_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr12)), false, CS);
- Cobol.store(f256_EIBRESP2, BigDecimal.valueOf(0), false, CS);
- if (DetCics.resp(lr12) != 0) {
- int to = condition(DetCics.condition(DetCics.resp(lr12)));
+ Storage cw15 = Cobol.commarea(f195_ABNDINFO_REC, 681);
+ AbndprocDfhcommarea ca14 = out_AbndprocDfhcommarea(cw15, 0);
+ String lr13 = task.link(Cobol.text(f194_WS_ABEND_PGM, CS).strip(), ca14, 681, cw15.bytes);
+ if ("NORMAL".equals(lr13)) { in_AbndprocDfhcommarea(ca14, cw15, 0); Cobol.commareaBack(cw15, f195_ABNDINFO_REC); }
+ String exit16 = task.abendExit();
+ if (exit16 != null) return GOTO | paragraph(exit16);
+ if (task.ended()) throw abended();
+ Cobol.store(f255_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr13)), false, CS);
+ Cobol.store(f256_EIBRESP2, BigDecimal.valueOf(DetCics.linkResp2(lr13)), false, CS);
+ if (DetCics.resp(lr13) != 0) {
+ int to = condition(DetCics.condition(DetCics.resp(lr13)));
if (to >= 0) return GOTO | to;
}
// DISPLAY 'DBCRFUN: Unable to perform Synpoint ' 'Rollback.' ' Possible Integrity issue following VSAM RLS' ' abend' ' RESP CODE=' WS-CICS-RESP ' RESP2
Sysout.display("DBCRFUN: Unable to perform Synpoint ", "Rollback.", " Possible Integrity issue following VSAM RLS", " abend", " RESP CODE=", Cobol.displayText(f50_WS_CICS_RESP, CS), " RESP2 CODE=", Cobol.displayText(f51_WS_CICS_RESP2, CS));
// EXEC CICS ABEND ABCODE ('HROL') CANCEL END-EXEC
- String exit15 = task.abendCancel("HROL".strip());
- if (exit15 == null) throw new Goback();
- if (true) return GOTO | paragraph(exit15);
+ String exit17 = task.abendCancel("HROL".strip());
+ if (exit17 == null) throw abended();
+ if (true) return GOTO | paragraph(exit17);
}
// MOVE 'N' TO COMM-SUCCESS
Cobol.move("N", f224_COMM_SUCCESS, CS);
@@ -1629,9 +1192,9 @@ private int p19() {
// IF WS-STORM-DRAIN = 'N'
if (Cobol.compare(f185_WS_STORM_DRAIN, "N", CS) == 0) {
// EXEC CICS ABEND ABCODE( MY-ABEND-CODE) NODUMP CANCEL END-EXEC
- String exit16 = task.abendCancel(Cobol.text(f184_MY_ABEND_CODE, CS).strip());
- if (exit16 == null) throw new Goback();
- if (true) return GOTO | paragraph(exit16);
+ String exit18 = task.abendCancel(Cobol.text(f184_MY_ABEND_CODE, CS).strip());
+ if (exit18 == null) throw abended();
+ if (true) return GOTO | paragraph(exit18);
}
return 20;
}
diff --git a/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/InqaccService.java b/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/InqaccService.java
index 071c37324..4e40d6290 100644
--- a/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/InqaccService.java
+++ b/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/InqaccService.java
@@ -52,44 +52,24 @@ public class InqaccService {
"ICAgICAgICAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIA=="));
private static final byte[] IMAGE_s_WS_CICS_WORK_AREA = Base64.getDecoder().decode(String.join("",
"AAAAAAAAAAA="));
- private static final byte[] IMAGE_s_EXIT_BROWSE_LOOP = Base64.getDecoder().decode(String.join("",
- "Tg=="));
private static final byte[] IMAGE_s_OUTPUT_DATA = Base64.getDecoder().decode(String.join("",
"ICAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAgICAgICAgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA="));
private static final byte[] IMAGE_s_RETURNED_DATA = Base64.getDecoder().decode(String.join("",
"ICAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAgICAgICAgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA="));
- private static final byte[] IMAGE_s_DESIRED_KEY = Base64.getDecoder().decode(String.join("",
- "AAAAAAAAAAA="));
private static final byte[] IMAGE_s_DB2_DATE_REFORMAT = Base64.getDecoder().decode(String.join("",
"MDAwMCAwMCAwMA=="));
- private static final byte[] IMAGE_s_DATA_STORE_TYPE = Base64.getDecoder().decode(String.join("",
- "IA=="));
- private static final byte[] IMAGE_s_DB2_EXIT_LOOP = Base64.getDecoder().decode(String.join("",
- "IA=="));
- private static final byte[] IMAGE_s_FETCH_DATA_CNT = Base64.getDecoder().decode(String.join("",
- "AAA="));
- private static final byte[] IMAGE_s_WS_CUST_ALT_KEY_LEN = Base64.getDecoder().decode(String.join("",
- "AAo="));
private static final byte[] IMAGE_s_ACCOUNT_KY = Base64.getDecoder().decode(String.join("",
"MDAwMDAwMDAwMDAwMDA="));
private static final byte[] IMAGE_s_MY_ABEND_CODE = Base64.getDecoder().decode(String.join("",
"ICAgIA=="));
- private static final byte[] IMAGE_s_WS_STORM_DRAIN = Base64.getDecoder().decode(String.join("",
- "Tg=="));
- private static final byte[] IMAGE_s_STORM_DRAIN_CONDITION = Base64.getDecoder().decode(String.join("",
- "ICAgICAgICAgICAgICAgICAgICA="));
private static final byte[] IMAGE_s_SQLCODE_DISPLAY = Base64.getDecoder().decode(String.join("",
"KzAwMDAwMDAw"));
private static final byte[] IMAGE_s_NCS_ACC_NO_STUFF = Base64.getDecoder().decode(String.join("",
"SEJOS0FDQ1QgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAwMA=="));
- private static final byte[] IMAGE_s_WS_DISP_ACC_NO_VAL = Base64.getDecoder().decode(String.join("",
- "MDAwMDAwMDAwMDAwMDAwMDAw"));
private static final byte[] IMAGE_s_ACCOUNT_KY2 = Base64.getDecoder().decode(String.join("",
"MDAwMDAwMDAwMDAwMDA="));
private static final byte[] IMAGE_s_WS_POINTER = Base64.getDecoder().decode(String.join("",
"AAAAAAAAAAA="));
- private static final byte[] IMAGE_s_WS_POINTER_NUMBER_DISPLAY = Base64.getDecoder().decode(String.join("",
- "MDAwMDAwMDA="));
private static final byte[] IMAGE_s_WS_U_TIME = Base64.getDecoder().decode(String.join("",
"AAAAAAAAAAw="));
private static final byte[] IMAGE_s_WS_ORIG_DATE = Base64.getDecoder().decode(String.join("",
@@ -98,8 +78,6 @@ public class InqaccService {
"ICAuICAuICAgIA=="));
private static final byte[] IMAGE_s_WS_TIME_DATA = Base64.getDecoder().decode(String.join("",
"MDAwMDAw"));
- private static final byte[] IMAGE_s_WS_ABEND_PGM = Base64.getDecoder().decode(String.join("",
- "QUJORFBST0M="));
private static final byte[] IMAGE_s_ABNDINFO_REC = Base64.getDecoder().decode(String.join("",
"AAAAAAAAAAwwMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKzAwMDAwMDAwKzAwMDAwMDAwKzAwMDAwMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg",
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg",
@@ -116,243 +94,147 @@ public class InqaccService {
private final Storage s_HOST_ACCOUNT_ROW = new Storage(IMAGE_s_HOST_ACCOUNT_ROW.length);
private final Storage s_SQLCA = new Storage(IMAGE_s_SQLCA.length);
private final Storage s_WS_CICS_WORK_AREA = new Storage(IMAGE_s_WS_CICS_WORK_AREA.length);
- private final Storage s_EXIT_BROWSE_LOOP = new Storage(IMAGE_s_EXIT_BROWSE_LOOP.length);
private final Storage s_OUTPUT_DATA = new Storage(IMAGE_s_OUTPUT_DATA.length);
private final Storage s_RETURNED_DATA = new Storage(IMAGE_s_RETURNED_DATA.length);
- private final Storage s_DESIRED_KEY = new Storage(IMAGE_s_DESIRED_KEY.length);
private final Storage s_DB2_DATE_REFORMAT = new Storage(IMAGE_s_DB2_DATE_REFORMAT.length);
- private final Storage s_DATA_STORE_TYPE = new Storage(IMAGE_s_DATA_STORE_TYPE.length);
- private final Storage s_DB2_EXIT_LOOP = new Storage(IMAGE_s_DB2_EXIT_LOOP.length);
- private final Storage s_FETCH_DATA_CNT = new Storage(IMAGE_s_FETCH_DATA_CNT.length);
- private final Storage s_WS_CUST_ALT_KEY_LEN = new Storage(IMAGE_s_WS_CUST_ALT_KEY_LEN.length);
private final Storage s_ACCOUNT_KY = new Storage(IMAGE_s_ACCOUNT_KY.length);
private final Storage s_MY_ABEND_CODE = new Storage(IMAGE_s_MY_ABEND_CODE.length);
- private final Storage s_WS_STORM_DRAIN = new Storage(IMAGE_s_WS_STORM_DRAIN.length);
- private final Storage s_STORM_DRAIN_CONDITION = new Storage(IMAGE_s_STORM_DRAIN_CONDITION.length);
private final Storage s_SQLCODE_DISPLAY = new Storage(IMAGE_s_SQLCODE_DISPLAY.length);
private final Storage s_NCS_ACC_NO_STUFF = new Storage(IMAGE_s_NCS_ACC_NO_STUFF.length);
- private final Storage s_WS_DISP_ACC_NO_VAL = new Storage(IMAGE_s_WS_DISP_ACC_NO_VAL.length);
private final Storage s_ACCOUNT_KY2 = new Storage(IMAGE_s_ACCOUNT_KY2.length);
private final Storage s_WS_POINTER = new Storage(IMAGE_s_WS_POINTER.length);
- private final Storage s_WS_POINTER_NUMBER_DISPLAY = new Storage(IMAGE_s_WS_POINTER_NUMBER_DISPLAY.length);
private final Storage s_WS_U_TIME = new Storage(IMAGE_s_WS_U_TIME.length);
private final Storage s_WS_ORIG_DATE = new Storage(IMAGE_s_WS_ORIG_DATE.length);
private final Storage s_WS_ORIG_DATE_GRP_X = new Storage(IMAGE_s_WS_ORIG_DATE_GRP_X.length);
private final Storage s_WS_TIME_DATA = new Storage(IMAGE_s_WS_TIME_DATA.length);
- private final Storage s_WS_ABEND_PGM = new Storage(IMAGE_s_WS_ABEND_PGM.length);
private final Storage s_ABNDINFO_REC = new Storage(IMAGE_s_ABNDINFO_REC.length);
private final Storage s_DFHCOMMAREA = new Storage(IMAGE_s_DFHCOMMAREA.length);
private final Storage s_DFHEIBLK = new Storage(IMAGE_s_DFHEIBLK.length);
private final Storage s_GG_RETURN_CODE = new Storage(IMAGE_s_GG_RETURN_CODE.length);
- private Field f100_NCS_ACC_NO_STUFF;
- private Field f101_NCS_ACC_NO_NAME;
- private Field f102_NCS_ACC_NO_ACT_NAME;
- private Field f103_NCS_ACC_NO_TEST_SORT;
- private Field f104_NCS_ACC_NO_FILL;
- private Field f105_NCS_ACC_NO_INC;
- private Field f106_NCS_ACC_NO_VALUE;
- private Field f107_NCS_ACC_NO_RESP;
- private Field f108_WS_DISP_ACC_NO_VAL;
- private Field f109_ACCOUNT_KY2;
- private Field f10_HV_ACCOUNT_OVERDRAFT_LIM;
- private Field f110_REQUIRED_SORT_CODE2;
- private Field f111_REQUIRED_ACC_NUMBER2;
- private Field f113_WS_POINTER_BYTES;
- private Field f114_WS_POINTER_NUMBER;
- private Field f115_WS_POINTER_NUMBER_DISPLAY;
- private Field f116_WS_U_TIME;
- private Field f117_WS_ORIG_DATE;
- private Field f118_WS_ORIG_DATE_GRP;
- private Field f119_WS_ORIG_DATE_DD;
- private Field f11_HV_ACCOUNT_LAST_STMT;
- private Field f120_FILLER;
- private Field f121_WS_ORIG_DATE_MM;
- private Field f122_FILLER;
- private Field f123_WS_ORIG_DATE_YYYY;
- private Field f124_WS_ORIG_DATE_GRP_X;
- private Field f125_WS_ORIG_DATE_DD_X;
- private Field f126_FILLER;
- private Field f127_WS_ORIG_DATE_MM_X;
- private Field f128_FILLER;
- private Field f129_WS_ORIG_DATE_YYYY_X;
- private Field f12_HV_ACCOUNT_NEXT_STMT;
- private Field f130_WS_TIME_DATA;
- private Field f131_WS_TIME_NOW;
- private Field f132_WS_TIME_NOW_GRP;
- private Field f133_WS_TIME_NOW_GRP_HH;
- private Field f134_WS_TIME_NOW_GRP_MM;
- private Field f135_WS_TIME_NOW_GRP_SS;
- private Field f136_WS_ABEND_PGM;
- private Field f137_ABNDINFO_REC;
- private Field f138_ABND_VSAM_KEY;
- private Field f139_ABND_UTIME_KEY;
- private Field f13_HV_ACCOUNT_AVAIL_BAL;
- private Field f140_ABND_TASKNO_KEY;
- private Field f141_ABND_APPLID;
- private Field f142_ABND_TRANID;
- private Field f143_ABND_DATE;
- private Field f144_ABND_TIME;
- private Field f145_ABND_CODE;
- private Field f146_ABND_PROGRAM;
- private Field f147_ABND_RESPCODE;
- private Field f148_ABND_RESP2CODE;
- private Field f149_ABND_SQLCODE;
- private Field f14_HV_ACCOUNT_ACTUAL_BAL;
- private Field f150_ABND_FREEFORM;
- private Field f151_DFHCOMMAREA;
- private Field f152_INQACC_EYE;
- private Field f153_INQACC_CUSTNO;
- private Field f154_INQACC_SCODE;
- private Field f155_INQACC_ACCNO;
- private Field f156_INQACC_ACC_TYPE;
- private Field f157_INQACC_INT_RATE;
- private Field f158_INQACC_OPENED;
- private Field f159_INQACC_OPENED_GROUP;
- private Field f15_SQLCA;
- private Field f160_INQACC_OPENED_DAY;
- private Field f161_INQACC_OPENED_MONTH;
- private Field f162_INQACC_OPENED_YEAR;
- private Field f163_INQACC_OVERDRAFT;
- private Field f164_INQACC_LAST_STMT_DT;
- private Field f165_INQACC_LAST_STMT_GROUP;
- private Field f166_INQACC_LAST_STMT_DAY;
- private Field f167_INQACC_LAST_STMT_MONTH;
- private Field f168_INQACC_LAST_STMT_YEAR;
- private Field f169_INQACC_NEXT_STMT_DT;
- private Field f16_SQLCAID;
- private Field f170_INQACC_NEXT_STMT_GROUP;
- private Field f171_INQACC_NEXT_STMT_DAY;
- private Field f172_INQACC_NEXT_STMT_MONTH;
- private Field f173_INQACC_NEXT_STMT_YEAR;
- private Field f174_INQACC_AVAIL_BAL;
- private Field f175_INQACC_ACTUAL_BAL;
- private Field f176_INQACC_SUCCESS;
- private Field f178_DFHEIBLK;
- private Field f179_EIBTIME;
- private Field f17_SQLCABC;
- private Field f180_EIBDATE;
- private Field f181_EIBTRNID;
- private Field f182_EIBTASKN;
- private Field f183_EIBTRMID;
- private Field f184_DFHEIGDI;
- private Field f185_EIBCPOSN;
- private Field f186_EIBCALEN;
- private Field f187_EIBAID;
- private Field f188_EIBFN;
- private Field f189_EIBRCODE;
- private Field f18_SQLCODE;
- private Field f190_EIBDS;
- private Field f191_EIBREQID;
- private Field f192_EIBRSRCE;
- private Field f193_EIBSYNC;
- private Field f194_EIBFREE;
- private Field f195_EIBRECV;
- private Field f196_EIBSEND;
- private Field f197_EIBATT;
- private Field f198_EIBEOC;
- private Field f199_EIBFMH;
- private Field f19_SQLERRM;
- private Field f1_SORTCODE;
- private Field f200_EIBCOMPL;
- private Field f201_EIBSIG;
- private Field f202_EIBCONF;
- private Field f203_EIBERR;
- private Field f204_EIBERRCD;
- private Field f205_EIBSYNRB;
- private Field f206_EIBNODAT;
- private Field f207_EIBRESP;
- private Field f208_EIBRESP2;
- private Field f209_EIBRLDBK;
- private Field f20_SQLERRML;
- private Field f210_GG_RETURN_CODE;
- private Field f21_SQLERRMC;
- private Field f22_SQLERRP;
- private Field f23_SQLERRD;
- private Field f24_SQLWARN;
- private Field f25_SQLWARN0;
- private Field f26_SQLWARN1;
- private Field f27_SQLWARN2;
- private Field f28_SQLWARN3;
- private Field f29_SQLWARN4;
- private Field f2_HOST_ACCOUNT_ROW;
- private Field f30_SQLWARN5;
- private Field f31_SQLWARN6;
- private Field f32_SQLWARN7;
- private Field f33_SQLWARN8;
- private Field f34_SQLWARN9;
- private Field f35_SQLWARNA;
- private Field f36_SQLSTATE;
- private Field f37_WS_CICS_WORK_AREA;
- private Field f38_WS_CICS_RESP;
- private Field f39_WS_CICS_RESP2;
- private Field f3_HV_ACCOUNT_EYECATCHER;
- private Field f40_EXIT_BROWSE_LOOP;
- private Field f41_OUTPUT_DATA;
- private Field f42_ACCOUNT_DATA;
- private Field f43_ACCOUNT_EYE_CATCHER;
- private Field f44_ACCOUNT_CUST_NO;
- private Field f45_ACCOUNT_KEY;
- private Field f46_ACCOUNT_SORT_CODE;
- private Field f47_ACCOUNT_NUMBER;
- private Field f48_ACCOUNT_TYPE;
- private Field f49_ACCOUNT_INTEREST_RATE;
- private Field f4_HV_ACCOUNT_CUST_NO;
- private Field f50_ACCOUNT_OPENED;
- private Field f51_ACCOUNT_OPENED_GROUP;
- private Field f52_ACCOUNT_OPENED_DAY;
- private Field f53_ACCOUNT_OPENED_MONTH;
- private Field f54_ACCOUNT_OPENED_YEAR;
- private Field f55_ACCOUNT_OVERDRAFT_LIMIT;
- private Field f56_ACCOUNT_LAST_STMT_DATE;
- private Field f57_ACCOUNT_LAST_STMT_GROUP;
- private Field f58_ACCOUNT_LAST_STMT_DAY;
- private Field f59_ACCOUNT_LAST_STMT_MONTH;
- private Field f5_HV_ACCOUNT_SORTCODE;
- private Field f60_ACCOUNT_LAST_STMT_YEAR;
- private Field f61_ACCOUNT_NEXT_STMT_DATE;
- private Field f62_ACCOUNT_NEXT_STMT_GROUP;
- private Field f63_ACCOUNT_NEXT_STMT_DAY;
- private Field f64_ACCOUNT_NEXT_STMT_MONTH;
- private Field f65_ACCOUNT_NEXT_STMT_YEAR;
- private Field f66_ACCOUNT_AVAILABLE_BALANCE;
- private Field f67_ACCOUNT_ACTUAL_BALANCE;
- private Field f68_RETURNED_DATA;
- private Field f69_RETURNED_EYE_CATCHER;
- private Field f6_HV_ACCOUNT_ACC_NO;
- private Field f70_RETURNED_CUST_NO;
- private Field f71_RETURNED_KEY;
- private Field f72_RETURNED_SORT_CODE;
- private Field f73_RETURNED_NUMBER;
- private Field f74_RETURNED_TYPE;
- private Field f75_RETURNED_INTEREST_RATE;
- private Field f76_RETURNED_OPENED;
- private Field f77_RETURNED_OVERDRAFT_LIMIT;
- private Field f78_RETURNED_LAST_STMT_DATE;
- private Field f79_RETURNED_NEXT_STMT_DATE;
- private Field f7_HV_ACCOUNT_ACC_TYPE;
- private Field f80_RETURNED_AVAILABLE_BALANCE;
- private Field f81_RETURNED_ACTUAL_BALANCE;
- private Field f82_DESIRED_KEY;
- private Field f83_DB2_DATE_REFORMAT;
- private Field f84_DB2_DATE_REF_YR;
- private Field f85_FILLER;
- private Field f86_DB2_DATE_REF_MNTH;
- private Field f87_FILLER;
- private Field f88_DB2_DATE_REF_DAY;
- private Field f89_DATA_STORE_TYPE;
- private Field f8_HV_ACCOUNT_INT_RATE;
- private Field f90_DB2_EXIT_LOOP;
- private Field f91_FETCH_DATA_CNT;
- private Field f92_WS_CUST_ALT_KEY_LEN;
- private Field f93_ACCOUNT_KY;
- private Field f94_REQUIRED_SORT_CODE;
- private Field f95_REQUIRED_ACC_NUM;
- private Field f96_MY_ABEND_CODE;
- private Field f97_WS_STORM_DRAIN;
- private Field f98_STORM_DRAIN_CONDITION;
- private Field f99_SQLCODE_DISPLAY;
- private Field f9_HV_ACCOUNT_OPENED;
+ private final Field f1_SORTCODE = Field.zoned(s_SORTCODE, 0, 6, 0, false, false, false);
+ private final Field f3_HV_ACCOUNT_EYECATCHER = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 0, 4, false);
+ private final Field f4_HV_ACCOUNT_CUST_NO = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 4, 10, false);
+ private final Field f5_HV_ACCOUNT_SORTCODE = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 14, 6, false);
+ private final Field f6_HV_ACCOUNT_ACC_NO = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 20, 8, false);
+ private final Field f7_HV_ACCOUNT_ACC_TYPE = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 28, 8, false);
+ private final Field f8_HV_ACCOUNT_INT_RATE = Field.packed(s_HOST_ACCOUNT_ROW, 36, 6, 2, true);
+ private final Field f9_HV_ACCOUNT_OPENED = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 40, 10, false);
+ private final Field f10_HV_ACCOUNT_OVERDRAFT_LIM = Field.binary(s_HOST_ACCOUNT_ROW, 50, 9, 0, true, false);
+ private final Field f11_HV_ACCOUNT_LAST_STMT = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 54, 10, false);
+ private final Field f12_HV_ACCOUNT_NEXT_STMT = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 64, 10, false);
+ private final Field f13_HV_ACCOUNT_AVAIL_BAL = Field.packed(s_HOST_ACCOUNT_ROW, 74, 12, 2, true);
+ private final Field f14_HV_ACCOUNT_ACTUAL_BAL = Field.packed(s_HOST_ACCOUNT_ROW, 81, 12, 2, true);
+ private final Field f15_SQLCA = Field.group(s_SQLCA, 0, 136);
+ private final Field f18_SQLCODE = Field.binary(s_SQLCA, 12, 9, 0, true, true);
+ private final Field f20_SQLERRML = Field.binary(s_SQLCA, 16, 4, 0, true, true);
+ private final Field f21_SQLERRMC = Field.alphanumeric(s_SQLCA, 18, 70, false);
+ private final Field f23_SQLERRD = Field.binary(s_SQLCA, 96, 9, 0, true, true);
+ private final Field f36_SQLSTATE = Field.alphanumeric(s_SQLCA, 131, 5, false);
+ private final Field f38_WS_CICS_RESP = Field.binary(s_WS_CICS_WORK_AREA, 0, 8, 0, true, false);
+ private final Field f39_WS_CICS_RESP2 = Field.binary(s_WS_CICS_WORK_AREA, 4, 8, 0, true, false);
+ private final Field f41_OUTPUT_DATA = Field.group(s_OUTPUT_DATA, 0, 98);
+ private final Field f43_ACCOUNT_EYE_CATCHER = Field.alphanumeric(s_OUTPUT_DATA, 0, 4, false);
+ private final Field f44_ACCOUNT_CUST_NO = Field.zoned(s_OUTPUT_DATA, 4, 10, 0, false, false, false);
+ private final Field f46_ACCOUNT_SORT_CODE = Field.zoned(s_OUTPUT_DATA, 14, 6, 0, false, false, false);
+ private final Field f47_ACCOUNT_NUMBER = Field.zoned(s_OUTPUT_DATA, 20, 8, 0, false, false, false);
+ private final Field f48_ACCOUNT_TYPE = Field.alphanumeric(s_OUTPUT_DATA, 28, 8, false);
+ private final Field f49_ACCOUNT_INTEREST_RATE = Field.zoned(s_OUTPUT_DATA, 36, 6, 2, false, false, false);
+ private final Field f50_ACCOUNT_OPENED = Field.zoned(s_OUTPUT_DATA, 42, 8, 0, false, false, false);
+ private final Field f52_ACCOUNT_OPENED_DAY = Field.zoned(s_OUTPUT_DATA, 42, 2, 0, false, false, false);
+ private final Field f53_ACCOUNT_OPENED_MONTH = Field.zoned(s_OUTPUT_DATA, 44, 2, 0, false, false, false);
+ private final Field f54_ACCOUNT_OPENED_YEAR = Field.zoned(s_OUTPUT_DATA, 46, 4, 0, false, false, false);
+ private final Field f55_ACCOUNT_OVERDRAFT_LIMIT = Field.zoned(s_OUTPUT_DATA, 50, 8, 0, false, false, false);
+ private final Field f56_ACCOUNT_LAST_STMT_DATE = Field.zoned(s_OUTPUT_DATA, 58, 8, 0, false, false, false);
+ private final Field f58_ACCOUNT_LAST_STMT_DAY = Field.zoned(s_OUTPUT_DATA, 58, 2, 0, false, false, false);
+ private final Field f59_ACCOUNT_LAST_STMT_MONTH = Field.zoned(s_OUTPUT_DATA, 60, 2, 0, false, false, false);
+ private final Field f60_ACCOUNT_LAST_STMT_YEAR = Field.zoned(s_OUTPUT_DATA, 62, 4, 0, false, false, false);
+ private final Field f61_ACCOUNT_NEXT_STMT_DATE = Field.zoned(s_OUTPUT_DATA, 66, 8, 0, false, false, false);
+ private final Field f63_ACCOUNT_NEXT_STMT_DAY = Field.zoned(s_OUTPUT_DATA, 66, 2, 0, false, false, false);
+ private final Field f64_ACCOUNT_NEXT_STMT_MONTH = Field.zoned(s_OUTPUT_DATA, 68, 2, 0, false, false, false);
+ private final Field f65_ACCOUNT_NEXT_STMT_YEAR = Field.zoned(s_OUTPUT_DATA, 70, 4, 0, false, false, false);
+ private final Field f66_ACCOUNT_AVAILABLE_BALANCE = Field.zoned(s_OUTPUT_DATA, 74, 12, 2, true, false, false);
+ private final Field f67_ACCOUNT_ACTUAL_BALANCE = Field.zoned(s_OUTPUT_DATA, 86, 12, 2, true, false, false);
+ private final Field f83_DB2_DATE_REFORMAT = Field.group(s_DB2_DATE_REFORMAT, 0, 10);
+ private final Field f84_DB2_DATE_REF_YR = Field.zoned(s_DB2_DATE_REFORMAT, 0, 4, 0, false, false, false);
+ private final Field f86_DB2_DATE_REF_MNTH = Field.zoned(s_DB2_DATE_REFORMAT, 5, 2, 0, false, false, false);
+ private final Field f88_DB2_DATE_REF_DAY = Field.zoned(s_DB2_DATE_REFORMAT, 8, 2, 0, false, false, false);
+ private final Field f94_REQUIRED_SORT_CODE = Field.zoned(s_ACCOUNT_KY, 0, 6, 0, false, false, false);
+ private final Field f96_MY_ABEND_CODE = Field.alphanumeric(s_MY_ABEND_CODE, 0, 4, false);
+ private final Field f99_SQLCODE_DISPLAY = Field.zoned(s_SQLCODE_DISPLAY, 0, 8, 0, true, true, true);
+ private final Field f101_NCS_ACC_NO_NAME = Field.group(s_NCS_ACC_NO_STUFF, 0, 16);
+ private final Field f106_NCS_ACC_NO_VALUE = Field.binary(s_NCS_ACC_NO_STUFF, 24, 16, 0, false, false);
+ private final Field f111_REQUIRED_ACC_NUMBER2 = Field.zoned(s_ACCOUNT_KY2, 6, 8, 0, false, false, false);
+ private final Field f116_WS_U_TIME = Field.packed(s_WS_U_TIME, 0, 15, 0, true);
+ private final Field f117_WS_ORIG_DATE = Field.alphanumeric(s_WS_ORIG_DATE, 0, 10, false);
+ private final Field f131_WS_TIME_NOW = Field.zoned(s_WS_TIME_DATA, 0, 6, 0, false, false, false);
+ private final Field f133_WS_TIME_NOW_GRP_HH = Field.zoned(s_WS_TIME_DATA, 0, 2, 0, false, false, false);
+ private final Field f134_WS_TIME_NOW_GRP_MM = Field.zoned(s_WS_TIME_DATA, 2, 2, 0, false, false, false);
+ private final Field f137_ABNDINFO_REC = Field.group(s_ABNDINFO_REC, 0, 681);
+ private final Field f139_ABND_UTIME_KEY = Field.packed(s_ABNDINFO_REC, 0, 15, 0, true);
+ private final Field f140_ABND_TASKNO_KEY = Field.zoned(s_ABNDINFO_REC, 8, 4, 0, false, false, false);
+ private final Field f141_ABND_APPLID = Field.alphanumeric(s_ABNDINFO_REC, 12, 8, false);
+ private final Field f142_ABND_TRANID = Field.alphanumeric(s_ABNDINFO_REC, 20, 4, false);
+ private final Field f143_ABND_DATE = Field.alphanumeric(s_ABNDINFO_REC, 24, 10, false);
+ private final Field f144_ABND_TIME = Field.alphanumeric(s_ABNDINFO_REC, 34, 8, false);
+ private final Field f145_ABND_CODE = Field.alphanumeric(s_ABNDINFO_REC, 42, 4, false);
+ private final Field f146_ABND_PROGRAM = Field.alphanumeric(s_ABNDINFO_REC, 46, 8, false);
+ private final Field f147_ABND_RESPCODE = Field.zoned(s_ABNDINFO_REC, 54, 8, 0, true, true, true);
+ private final Field f148_ABND_RESP2CODE = Field.zoned(s_ABNDINFO_REC, 63, 8, 0, true, true, true);
+ private final Field f149_ABND_SQLCODE = Field.zoned(s_ABNDINFO_REC, 72, 8, 0, true, true, true);
+ private final Field f150_ABND_FREEFORM = Field.alphanumeric(s_ABNDINFO_REC, 81, 600, false);
+ private final Field f152_INQACC_EYE = Field.alphanumeric(s_DFHCOMMAREA, 0, 4, false);
+ private final Field f153_INQACC_CUSTNO = Field.zoned(s_DFHCOMMAREA, 4, 10, 0, false, false, false);
+ private final Field f154_INQACC_SCODE = Field.zoned(s_DFHCOMMAREA, 14, 6, 0, false, false, false);
+ private final Field f155_INQACC_ACCNO = Field.zoned(s_DFHCOMMAREA, 20, 8, 0, false, false, false);
+ private final Field f156_INQACC_ACC_TYPE = Field.alphanumeric(s_DFHCOMMAREA, 28, 8, false);
+ private final Field f157_INQACC_INT_RATE = Field.zoned(s_DFHCOMMAREA, 36, 6, 2, false, false, false);
+ private final Field f158_INQACC_OPENED = Field.zoned(s_DFHCOMMAREA, 42, 8, 0, false, false, false);
+ private final Field f163_INQACC_OVERDRAFT = Field.zoned(s_DFHCOMMAREA, 50, 8, 0, false, false, false);
+ private final Field f164_INQACC_LAST_STMT_DT = Field.zoned(s_DFHCOMMAREA, 58, 8, 0, false, false, false);
+ private final Field f169_INQACC_NEXT_STMT_DT = Field.zoned(s_DFHCOMMAREA, 66, 8, 0, false, false, false);
+ private final Field f174_INQACC_AVAIL_BAL = Field.zoned(s_DFHCOMMAREA, 74, 12, 2, true, false, false);
+ private final Field f175_INQACC_ACTUAL_BAL = Field.zoned(s_DFHCOMMAREA, 86, 12, 2, true, false, false);
+ private final Field f176_INQACC_SUCCESS = Field.alphanumeric(s_DFHCOMMAREA, 98, 1, false);
+ private final Field f179_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
+ private final Field f180_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
+ private final Field f181_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
+ private final Field f182_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
+ private final Field f183_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
+ private final Field f186_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
+ private final Field f207_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
+ private final Field f208_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
+ private final Field f210_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
+ private String f40_EXIT_BROWSE_LOOP; // EXIT-BROWSE-LOOP PIC X
+ private String f69_RETURNED_EYE_CATCHER; // RETURNED-EYE-CATCHER PIC X(4)
+ private BigDecimal f70_RETURNED_CUST_NO; // RETURNED-CUST-NO PIC 9(10) DISPLAY
+ private BigDecimal f72_RETURNED_SORT_CODE; // RETURNED-SORT-CODE PIC 9(6) DISPLAY
+ private BigDecimal f73_RETURNED_NUMBER; // RETURNED-NUMBER PIC 9(8) DISPLAY
+ private String f74_RETURNED_TYPE; // RETURNED-TYPE PIC X(8)
+ private BigDecimal f75_RETURNED_INTEREST_RATE; // RETURNED-INTEREST-RATE PIC 9(4)V99 DISPLAY
+ private BigDecimal f76_RETURNED_OPENED; // RETURNED-OPENED PIC 9(8) DISPLAY
+ private BigDecimal f77_RETURNED_OVERDRAFT_LIMIT; // RETURNED-OVERDRAFT-LIMIT PIC 9(8) DISPLAY
+ private BigDecimal f78_RETURNED_LAST_STMT_DATE; // RETURNED-LAST-STMT-DATE PIC 9(8) DISPLAY
+ private BigDecimal f79_RETURNED_NEXT_STMT_DATE; // RETURNED-NEXT-STMT-DATE PIC 9(8) DISPLAY
+ private BigDecimal f80_RETURNED_AVAILABLE_BALANCE; // RETURNED-AVAILABLE-BALANCE PIC S9(10)V99 DISPLAY
+ private BigDecimal f81_RETURNED_ACTUAL_BALANCE; // RETURNED-ACTUAL-BALANCE PIC S9(10)V99 DISPLAY
+ private long f82_DESIRED_KEY; // DESIRED-KEY PIC 9(10) BINARY
+ private String f89_DATA_STORE_TYPE; // DATA-STORE-TYPE PIC X
+ private String f90_DB2_EXIT_LOOP; // DB2-EXIT-LOOP PIC X
+ private long f91_FETCH_DATA_CNT; // FETCH-DATA-CNT PIC 9(4) BINARY
+ private long f92_WS_CUST_ALT_KEY_LEN; // WS-CUST-ALT-KEY-LEN PIC S9(4) BINARY
+ private BigDecimal f95_REQUIRED_ACC_NUM; // REQUIRED-ACC-NUM PIC 9(8) DISPLAY
+ private String f97_WS_STORM_DRAIN; // WS-STORM-DRAIN PIC X
+ private String f98_STORM_DRAIN_CONDITION; // STORM-DRAIN-CONDITION PIC X(20)
+ private long f105_NCS_ACC_NO_INC; // NCS-ACC-NO-INC PIC 9(16) BINARY
+ private String f107_NCS_ACC_NO_RESP; // NCS-ACC-NO-RESP PIC XX
+ private BigDecimal f108_WS_DISP_ACC_NO_VAL; // WS-DISP-ACC-NO-VAL PIC S9(18) DISPLAY
+ private BigDecimal f110_REQUIRED_SORT_CODE2; // REQUIRED-SORT-CODE2 PIC 9(6) DISPLAY
+ private BigDecimal f115_WS_POINTER_NUMBER_DISPLAY; // WS-POINTER-NUMBER-DISPLAY PIC 9(8) DISPLAY
+ private String f125_WS_ORIG_DATE_DD_X; // WS-ORIG-DATE-DD-X PIC XX
+ private String f127_WS_ORIG_DATE_MM_X; // WS-ORIG-DATE-MM-X PIC XX
+ private String f129_WS_ORIG_DATE_YYYY_X; // WS-ORIG-DATE-YYYY-X PIC X(4)
+ private String f136_WS_ABEND_PGM; // WS-ABEND-PGM PIC X(8)
private CicsTask task;
private final java.util.Map handlers = new java.util.HashMap<>();
@@ -361,6 +243,14 @@ public class InqaccService {
/** Writes the COMMAREA's bytes back into the object the task carries (a LINKed program's is its caller's). */
private Runnable caBack = () -> { };
+ /** The program ends because of an abend: a LINKed program's COMMAREA writes stay its caller's. */
+ private Goback abended() {
+ if (task.level() > 1) {
+ caBack.run();
+ }
+ return new Goback();
+ }
+
@SuppressWarnings("unchecked")
private DetCics.Store store(String name) {
throw new Hole("CICS file " + name + ": the program names no file the generated project stores");
@@ -404,16 +294,26 @@ private static int paragraph(String name) {
return i;
}
- /** A condition the command neither returned in RESP nor ignored: its HANDLE CONDITION label, or CICS's
- * default action -- an abend, to this program's HANDLE ABEND exit or ending the task. */
+ /** A condition the command did not return in RESP: its HANDLE CONDITION label, or -1 (go on) when IGNOREd
+ * (#4414); else CICS's default action -- -1 for one whose default is to ignore it (#4413: EOC); else the
+ * ERROR label (#4502: IBM, HANDLE CONDITION: "if the default action for such a condition terminates the
+ * task abnormally, and the condition ERROR has been specified, the action for ERROR is taken"); else an
+ * abend, to this program's HANDLE ABEND exit or ending the task. */
private int condition(String cond) {
Integer h = handlers.get(cond);
if (h != null) {
return h;
}
+ if (DetCics.ignoredByDefault(cond)) {
+ return -1;
+ }
+ Integer error = handlers.get("ERROR");
+ if (error != null) {
+ return error;
+ }
String label = task.abendOnCondition(cond);
if (label == null) {
- throw new Goback();
+ throw abended();
}
return paragraph(label);
}
@@ -422,7 +322,7 @@ private static int cx(CicsTask task, int whole) {
return task.eibcalen() == null ? whole : task.eibcalen();
}
- private void in_AbndprocAbndinfoRec(AbndprocAbndinfoRec d, Storage s, int base) {
+ private void in_AbndprocDfhcommarea(AbndprocDfhcommarea d, Storage s, int base) {
if (d == null) {
return;
}
@@ -440,7 +340,7 @@ private void in_AbndprocAbndinfoRec(AbndprocAbndinfoRec d, Storage s, int base)
Cobol.move(d.getAbndFreeform() == null ? "" : d.getAbndFreeform(), Field.alphanumeric(s, base + 81, 600, false), CS);
}
- private void fill_AbndprocAbndinfoRec(AbndprocAbndinfoRec d, Storage s, int base) {
+ private void fill_AbndprocDfhcommarea(AbndprocDfhcommarea d, Storage s, int base) {
d.setAbndUtimeKey(Cobol.num(Field.packed(s, base + 0, 15, 0, true), CS).longValue());
d.setAbndTasknoKey(Cobol.num(Field.zoned(s, base + 8, 4, 0, false, false, false), CS).intValue());
d.setAbndApplid(Cobol.text(Field.alphanumeric(s, base + 12, 8, false), CS));
@@ -455,13 +355,13 @@ private void fill_AbndprocAbndinfoRec(AbndprocAbndinfoRec d, Storage s, int base
d.setAbndFreeform(Cobol.text(Field.alphanumeric(s, base + 81, 600, false), CS));
}
- private AbndprocAbndinfoRec out_AbndprocAbndinfoRec(Storage s, int base) {
- AbndprocAbndinfoRec d = new AbndprocAbndinfoRec();
- fill_AbndprocAbndinfoRec(d, s, base);
+ private AbndprocDfhcommarea out_AbndprocDfhcommarea(Storage s, int base) {
+ AbndprocDfhcommarea d = new AbndprocDfhcommarea();
+ fill_AbndprocDfhcommarea(d, s, base);
return d;
}
- private void in_InqaccCommarea(InqaccCommarea d, Storage s, int base) {
+ private void in_InqaccDfhcommarea(InqaccDfhcommarea d, Storage s, int base) {
if (d == null) {
return;
}
@@ -481,7 +381,7 @@ private void in_InqaccCommarea(InqaccCommarea d, Storage s, int base) {
DetCics.pointerIn(d.getInqaccPcb1Pointer(), s, base + 99, 8);
}
- private void fill_InqaccCommarea(InqaccCommarea d, Storage s, int base) {
+ private void fill_InqaccDfhcommarea(InqaccDfhcommarea d, Storage s, int base) {
d.setInqaccEye(Cobol.text(Field.alphanumeric(s, base + 0, 4, false), CS));
d.setInqaccCustno(Cobol.num(Field.zoned(s, base + 4, 10, 0, false, false, false), CS).longValue());
d.setInqaccScode(Cobol.num(Field.zoned(s, base + 14, 6, 0, false, false, false), CS).intValue());
@@ -498,12 +398,20 @@ private void fill_InqaccCommarea(InqaccCommarea d, Storage s, int base) {
d.setInqaccPcb1Pointer(DetCics.pointerOut(s, base + 99, 8));
}
- private InqaccCommarea out_InqaccCommarea(Storage s, int base) {
- InqaccCommarea d = new InqaccCommarea();
- fill_InqaccCommarea(d, s, base);
+ private InqaccDfhcommarea out_InqaccDfhcommarea(Storage s, int base) {
+ InqaccDfhcommarea d = new InqaccDfhcommarea();
+ fill_InqaccDfhcommarea(d, s, base);
return d;
}
+ /** #4270 (X23): DFHCOMMAREA's whole record again, with what the task left in its EIBCALEN bytes. */
+ private void caWhole(byte[] whole) {
+ if (s_DFHCOMMAREA.bytes != whole) {
+ System.arraycopy(s_DFHCOMMAREA.bytes, 0, whole, 0, s_DFHCOMMAREA.bytes.length);
+ s_DFHCOMMAREA.bytes = whole;
+ }
+ }
+
private final AccountRepository accountRepository;
private final DatasetResolver datasets;
@@ -515,255 +423,67 @@ public InqaccService(AccountRepository accountRepository, DatasetResolver datase
this.datasets = datasets;
this.files = files;
this.clock = clock;
- fields0();
- }
-
- private void fields0() {
- f1_SORTCODE = Field.zoned(s_SORTCODE, 0, 6, 0, false, false, false);
- f2_HOST_ACCOUNT_ROW = Field.group(s_HOST_ACCOUNT_ROW, 0, 88);
- f3_HV_ACCOUNT_EYECATCHER = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 0, 4, false);
- f4_HV_ACCOUNT_CUST_NO = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 4, 10, false);
- f5_HV_ACCOUNT_SORTCODE = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 14, 6, false);
- f6_HV_ACCOUNT_ACC_NO = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 20, 8, false);
- f7_HV_ACCOUNT_ACC_TYPE = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 28, 8, false);
- f8_HV_ACCOUNT_INT_RATE = Field.packed(s_HOST_ACCOUNT_ROW, 36, 6, 2, true);
- f9_HV_ACCOUNT_OPENED = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 40, 10, false);
- f10_HV_ACCOUNT_OVERDRAFT_LIM = Field.binary(s_HOST_ACCOUNT_ROW, 50, 9, 0, true, false);
- f11_HV_ACCOUNT_LAST_STMT = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 54, 10, false);
- f12_HV_ACCOUNT_NEXT_STMT = Field.alphanumeric(s_HOST_ACCOUNT_ROW, 64, 10, false);
- f13_HV_ACCOUNT_AVAIL_BAL = Field.packed(s_HOST_ACCOUNT_ROW, 74, 12, 2, true);
- f14_HV_ACCOUNT_ACTUAL_BAL = Field.packed(s_HOST_ACCOUNT_ROW, 81, 12, 2, true);
- f15_SQLCA = Field.group(s_SQLCA, 0, 136);
- f16_SQLCAID = Field.alphanumeric(s_SQLCA, 0, 8, false);
- f17_SQLCABC = Field.binary(s_SQLCA, 8, 9, 0, true, true);
- f18_SQLCODE = Field.binary(s_SQLCA, 12, 9, 0, true, true);
- f19_SQLERRM = Field.group(s_SQLCA, 16, 72);
- f20_SQLERRML = Field.binary(s_SQLCA, 16, 4, 0, true, true);
- f21_SQLERRMC = Field.alphanumeric(s_SQLCA, 18, 70, false);
- f22_SQLERRP = Field.alphanumeric(s_SQLCA, 88, 8, false);
- f23_SQLERRD = Field.binary(s_SQLCA, 96, 9, 0, true, true);
- f24_SQLWARN = Field.group(s_SQLCA, 120, 11);
- f25_SQLWARN0 = Field.alphanumeric(s_SQLCA, 120, 1, false);
- f26_SQLWARN1 = Field.alphanumeric(s_SQLCA, 121, 1, false);
- f27_SQLWARN2 = Field.alphanumeric(s_SQLCA, 122, 1, false);
- f28_SQLWARN3 = Field.alphanumeric(s_SQLCA, 123, 1, false);
- f29_SQLWARN4 = Field.alphanumeric(s_SQLCA, 124, 1, false);
- f30_SQLWARN5 = Field.alphanumeric(s_SQLCA, 125, 1, false);
- f31_SQLWARN6 = Field.alphanumeric(s_SQLCA, 126, 1, false);
- f32_SQLWARN7 = Field.alphanumeric(s_SQLCA, 127, 1, false);
- f33_SQLWARN8 = Field.alphanumeric(s_SQLCA, 128, 1, false);
- f34_SQLWARN9 = Field.alphanumeric(s_SQLCA, 129, 1, false);
- f35_SQLWARNA = Field.alphanumeric(s_SQLCA, 130, 1, false);
- f36_SQLSTATE = Field.alphanumeric(s_SQLCA, 131, 5, false);
- f37_WS_CICS_WORK_AREA = Field.group(s_WS_CICS_WORK_AREA, 0, 8);
- f38_WS_CICS_RESP = Field.binary(s_WS_CICS_WORK_AREA, 0, 8, 0, true, false);
- f39_WS_CICS_RESP2 = Field.binary(s_WS_CICS_WORK_AREA, 4, 8, 0, true, false);
- f40_EXIT_BROWSE_LOOP = Field.alphanumeric(s_EXIT_BROWSE_LOOP, 0, 1, false);
- f41_OUTPUT_DATA = Field.group(s_OUTPUT_DATA, 0, 98);
- f42_ACCOUNT_DATA = Field.group(s_OUTPUT_DATA, 0, 98);
- f43_ACCOUNT_EYE_CATCHER = Field.alphanumeric(s_OUTPUT_DATA, 0, 4, false);
- f44_ACCOUNT_CUST_NO = Field.zoned(s_OUTPUT_DATA, 4, 10, 0, false, false, false);
- f45_ACCOUNT_KEY = Field.group(s_OUTPUT_DATA, 14, 14);
- f46_ACCOUNT_SORT_CODE = Field.zoned(s_OUTPUT_DATA, 14, 6, 0, false, false, false);
- f47_ACCOUNT_NUMBER = Field.zoned(s_OUTPUT_DATA, 20, 8, 0, false, false, false);
- f48_ACCOUNT_TYPE = Field.alphanumeric(s_OUTPUT_DATA, 28, 8, false);
- f49_ACCOUNT_INTEREST_RATE = Field.zoned(s_OUTPUT_DATA, 36, 6, 2, false, false, false);
- f50_ACCOUNT_OPENED = Field.zoned(s_OUTPUT_DATA, 42, 8, 0, false, false, false);
- f51_ACCOUNT_OPENED_GROUP = Field.group(s_OUTPUT_DATA, 42, 8);
- f52_ACCOUNT_OPENED_DAY = Field.zoned(s_OUTPUT_DATA, 42, 2, 0, false, false, false);
- f53_ACCOUNT_OPENED_MONTH = Field.zoned(s_OUTPUT_DATA, 44, 2, 0, false, false, false);
- f54_ACCOUNT_OPENED_YEAR = Field.zoned(s_OUTPUT_DATA, 46, 4, 0, false, false, false);
- f55_ACCOUNT_OVERDRAFT_LIMIT = Field.zoned(s_OUTPUT_DATA, 50, 8, 0, false, false, false);
- f56_ACCOUNT_LAST_STMT_DATE = Field.zoned(s_OUTPUT_DATA, 58, 8, 0, false, false, false);
- f57_ACCOUNT_LAST_STMT_GROUP = Field.group(s_OUTPUT_DATA, 58, 8);
- f58_ACCOUNT_LAST_STMT_DAY = Field.zoned(s_OUTPUT_DATA, 58, 2, 0, false, false, false);
- f59_ACCOUNT_LAST_STMT_MONTH = Field.zoned(s_OUTPUT_DATA, 60, 2, 0, false, false, false);
- f60_ACCOUNT_LAST_STMT_YEAR = Field.zoned(s_OUTPUT_DATA, 62, 4, 0, false, false, false);
- f61_ACCOUNT_NEXT_STMT_DATE = Field.zoned(s_OUTPUT_DATA, 66, 8, 0, false, false, false);
- f62_ACCOUNT_NEXT_STMT_GROUP = Field.group(s_OUTPUT_DATA, 66, 8);
- f63_ACCOUNT_NEXT_STMT_DAY = Field.zoned(s_OUTPUT_DATA, 66, 2, 0, false, false, false);
- f64_ACCOUNT_NEXT_STMT_MONTH = Field.zoned(s_OUTPUT_DATA, 68, 2, 0, false, false, false);
- f65_ACCOUNT_NEXT_STMT_YEAR = Field.zoned(s_OUTPUT_DATA, 70, 4, 0, false, false, false);
- f66_ACCOUNT_AVAILABLE_BALANCE = Field.zoned(s_OUTPUT_DATA, 74, 12, 2, true, false, false);
- f67_ACCOUNT_ACTUAL_BALANCE = Field.zoned(s_OUTPUT_DATA, 86, 12, 2, true, false, false);
- f68_RETURNED_DATA = Field.group(s_RETURNED_DATA, 0, 98);
- f69_RETURNED_EYE_CATCHER = Field.alphanumeric(s_RETURNED_DATA, 0, 4, false);
- f70_RETURNED_CUST_NO = Field.zoned(s_RETURNED_DATA, 4, 10, 0, false, false, false);
- f71_RETURNED_KEY = Field.group(s_RETURNED_DATA, 14, 14);
- f72_RETURNED_SORT_CODE = Field.zoned(s_RETURNED_DATA, 14, 6, 0, false, false, false);
- f73_RETURNED_NUMBER = Field.zoned(s_RETURNED_DATA, 20, 8, 0, false, false, false);
- f74_RETURNED_TYPE = Field.alphanumeric(s_RETURNED_DATA, 28, 8, false);
- f75_RETURNED_INTEREST_RATE = Field.zoned(s_RETURNED_DATA, 36, 6, 2, false, false, false);
- f76_RETURNED_OPENED = Field.zoned(s_RETURNED_DATA, 42, 8, 0, false, false, false);
- f77_RETURNED_OVERDRAFT_LIMIT = Field.zoned(s_RETURNED_DATA, 50, 8, 0, false, false, false);
- f78_RETURNED_LAST_STMT_DATE = Field.zoned(s_RETURNED_DATA, 58, 8, 0, false, false, false);
- f79_RETURNED_NEXT_STMT_DATE = Field.zoned(s_RETURNED_DATA, 66, 8, 0, false, false, false);
- f80_RETURNED_AVAILABLE_BALANCE = Field.zoned(s_RETURNED_DATA, 74, 12, 2, true, false, false);
- f81_RETURNED_ACTUAL_BALANCE = Field.zoned(s_RETURNED_DATA, 86, 12, 2, true, false, false);
- f82_DESIRED_KEY = Field.binary(s_DESIRED_KEY, 0, 10, 0, false, false);
- f83_DB2_DATE_REFORMAT = Field.group(s_DB2_DATE_REFORMAT, 0, 10);
- f84_DB2_DATE_REF_YR = Field.zoned(s_DB2_DATE_REFORMAT, 0, 4, 0, false, false, false);
- f85_FILLER = Field.alphanumeric(s_DB2_DATE_REFORMAT, 4, 1, false);
- f86_DB2_DATE_REF_MNTH = Field.zoned(s_DB2_DATE_REFORMAT, 5, 2, 0, false, false, false);
- f87_FILLER = Field.alphanumeric(s_DB2_DATE_REFORMAT, 7, 1, false);
- f88_DB2_DATE_REF_DAY = Field.zoned(s_DB2_DATE_REFORMAT, 8, 2, 0, false, false, false);
- f89_DATA_STORE_TYPE = Field.alphanumeric(s_DATA_STORE_TYPE, 0, 1, false);
- f90_DB2_EXIT_LOOP = Field.alphanumeric(s_DB2_EXIT_LOOP, 0, 1, false);
- f91_FETCH_DATA_CNT = Field.binary(s_FETCH_DATA_CNT, 0, 4, 0, false, false);
- f92_WS_CUST_ALT_KEY_LEN = Field.binary(s_WS_CUST_ALT_KEY_LEN, 0, 4, 0, true, false);
- f93_ACCOUNT_KY = Field.group(s_ACCOUNT_KY, 0, 14);
- f94_REQUIRED_SORT_CODE = Field.zoned(s_ACCOUNT_KY, 0, 6, 0, false, false, false);
- f95_REQUIRED_ACC_NUM = Field.zoned(s_ACCOUNT_KY, 6, 8, 0, false, false, false);
- f96_MY_ABEND_CODE = Field.alphanumeric(s_MY_ABEND_CODE, 0, 4, false);
- f97_WS_STORM_DRAIN = Field.alphanumeric(s_WS_STORM_DRAIN, 0, 1, false);
- f98_STORM_DRAIN_CONDITION = Field.alphanumeric(s_STORM_DRAIN_CONDITION, 0, 20, false);
- f99_SQLCODE_DISPLAY = Field.zoned(s_SQLCODE_DISPLAY, 0, 8, 0, true, true, true);
- f100_NCS_ACC_NO_STUFF = Field.group(s_NCS_ACC_NO_STUFF, 0, 34);
- f101_NCS_ACC_NO_NAME = Field.group(s_NCS_ACC_NO_STUFF, 0, 16);
- f102_NCS_ACC_NO_ACT_NAME = Field.alphanumeric(s_NCS_ACC_NO_STUFF, 0, 8, false);
- f103_NCS_ACC_NO_TEST_SORT = Field.alphanumeric(s_NCS_ACC_NO_STUFF, 8, 6, false);
- f104_NCS_ACC_NO_FILL = Field.alphanumeric(s_NCS_ACC_NO_STUFF, 14, 2, false);
- f105_NCS_ACC_NO_INC = Field.binary(s_NCS_ACC_NO_STUFF, 16, 16, 0, false, false);
- f106_NCS_ACC_NO_VALUE = Field.binary(s_NCS_ACC_NO_STUFF, 24, 16, 0, false, false);
- f107_NCS_ACC_NO_RESP = Field.alphanumeric(s_NCS_ACC_NO_STUFF, 32, 2, false);
- f108_WS_DISP_ACC_NO_VAL = Field.zoned(s_WS_DISP_ACC_NO_VAL, 0, 18, 0, true, false, false);
- f109_ACCOUNT_KY2 = Field.group(s_ACCOUNT_KY2, 0, 14);
- f110_REQUIRED_SORT_CODE2 = Field.zoned(s_ACCOUNT_KY2, 0, 6, 0, false, false, false);
- f111_REQUIRED_ACC_NUMBER2 = Field.zoned(s_ACCOUNT_KY2, 6, 8, 0, false, false, false);
- f113_WS_POINTER_BYTES = Field.alphanumeric(s_WS_POINTER, 0, 8, false);
- f114_WS_POINTER_NUMBER = Field.binary(s_WS_POINTER, 0, 8, 0, false, false);
- f115_WS_POINTER_NUMBER_DISPLAY = Field.zoned(s_WS_POINTER_NUMBER_DISPLAY, 0, 8, 0, false, false, false);
- f116_WS_U_TIME = Field.packed(s_WS_U_TIME, 0, 15, 0, true);
- f117_WS_ORIG_DATE = Field.alphanumeric(s_WS_ORIG_DATE, 0, 10, false);
- f118_WS_ORIG_DATE_GRP = Field.group(s_WS_ORIG_DATE, 0, 10);
- f119_WS_ORIG_DATE_DD = Field.zoned(s_WS_ORIG_DATE, 0, 2, 0, false, false, false);
- f120_FILLER = Field.alphanumeric(s_WS_ORIG_DATE, 2, 1, false);
- f121_WS_ORIG_DATE_MM = Field.zoned(s_WS_ORIG_DATE, 3, 2, 0, false, false, false);
- f122_FILLER = Field.alphanumeric(s_WS_ORIG_DATE, 5, 1, false);
- f123_WS_ORIG_DATE_YYYY = Field.zoned(s_WS_ORIG_DATE, 6, 4, 0, false, false, false);
- f124_WS_ORIG_DATE_GRP_X = Field.group(s_WS_ORIG_DATE_GRP_X, 0, 10);
- f125_WS_ORIG_DATE_DD_X = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 0, 2, false);
- f126_FILLER = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 2, 1, false);
- f127_WS_ORIG_DATE_MM_X = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 3, 2, false);
- f128_FILLER = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 5, 1, false);
- f129_WS_ORIG_DATE_YYYY_X = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 6, 4, false);
- f130_WS_TIME_DATA = Field.group(s_WS_TIME_DATA, 0, 6);
- f131_WS_TIME_NOW = Field.zoned(s_WS_TIME_DATA, 0, 6, 0, false, false, false);
- f132_WS_TIME_NOW_GRP = Field.group(s_WS_TIME_DATA, 0, 6);
- f133_WS_TIME_NOW_GRP_HH = Field.zoned(s_WS_TIME_DATA, 0, 2, 0, false, false, false);
- f134_WS_TIME_NOW_GRP_MM = Field.zoned(s_WS_TIME_DATA, 2, 2, 0, false, false, false);
- f135_WS_TIME_NOW_GRP_SS = Field.zoned(s_WS_TIME_DATA, 4, 2, 0, false, false, false);
- f136_WS_ABEND_PGM = Field.alphanumeric(s_WS_ABEND_PGM, 0, 8, false);
- f137_ABNDINFO_REC = Field.group(s_ABNDINFO_REC, 0, 681);
- f138_ABND_VSAM_KEY = Field.group(s_ABNDINFO_REC, 0, 12);
- f139_ABND_UTIME_KEY = Field.packed(s_ABNDINFO_REC, 0, 15, 0, true);
- f140_ABND_TASKNO_KEY = Field.zoned(s_ABNDINFO_REC, 8, 4, 0, false, false, false);
- f141_ABND_APPLID = Field.alphanumeric(s_ABNDINFO_REC, 12, 8, false);
- f142_ABND_TRANID = Field.alphanumeric(s_ABNDINFO_REC, 20, 4, false);
- f143_ABND_DATE = Field.alphanumeric(s_ABNDINFO_REC, 24, 10, false);
- f144_ABND_TIME = Field.alphanumeric(s_ABNDINFO_REC, 34, 8, false);
- f145_ABND_CODE = Field.alphanumeric(s_ABNDINFO_REC, 42, 4, false);
- f146_ABND_PROGRAM = Field.alphanumeric(s_ABNDINFO_REC, 46, 8, false);
- f147_ABND_RESPCODE = Field.zoned(s_ABNDINFO_REC, 54, 8, 0, true, true, true);
- f148_ABND_RESP2CODE = Field.zoned(s_ABNDINFO_REC, 63, 8, 0, true, true, true);
- f149_ABND_SQLCODE = Field.zoned(s_ABNDINFO_REC, 72, 8, 0, true, true, true);
- f150_ABND_FREEFORM = Field.alphanumeric(s_ABNDINFO_REC, 81, 600, false);
- f151_DFHCOMMAREA = Field.group(s_DFHCOMMAREA, 0, 107);
- f152_INQACC_EYE = Field.alphanumeric(s_DFHCOMMAREA, 0, 4, false);
- f153_INQACC_CUSTNO = Field.zoned(s_DFHCOMMAREA, 4, 10, 0, false, false, false);
- f154_INQACC_SCODE = Field.zoned(s_DFHCOMMAREA, 14, 6, 0, false, false, false);
- f155_INQACC_ACCNO = Field.zoned(s_DFHCOMMAREA, 20, 8, 0, false, false, false);
- f156_INQACC_ACC_TYPE = Field.alphanumeric(s_DFHCOMMAREA, 28, 8, false);
- f157_INQACC_INT_RATE = Field.zoned(s_DFHCOMMAREA, 36, 6, 2, false, false, false);
- f158_INQACC_OPENED = Field.zoned(s_DFHCOMMAREA, 42, 8, 0, false, false, false);
- f159_INQACC_OPENED_GROUP = Field.group(s_DFHCOMMAREA, 42, 8);
- f160_INQACC_OPENED_DAY = Field.zoned(s_DFHCOMMAREA, 42, 2, 0, false, false, false);
- f161_INQACC_OPENED_MONTH = Field.zoned(s_DFHCOMMAREA, 44, 2, 0, false, false, false);
- f162_INQACC_OPENED_YEAR = Field.zoned(s_DFHCOMMAREA, 46, 4, 0, false, false, false);
- f163_INQACC_OVERDRAFT = Field.zoned(s_DFHCOMMAREA, 50, 8, 0, false, false, false);
- f164_INQACC_LAST_STMT_DT = Field.zoned(s_DFHCOMMAREA, 58, 8, 0, false, false, false);
- f165_INQACC_LAST_STMT_GROUP = Field.group(s_DFHCOMMAREA, 58, 8);
- f166_INQACC_LAST_STMT_DAY = Field.zoned(s_DFHCOMMAREA, 58, 2, 0, false, false, false);
- f167_INQACC_LAST_STMT_MONTH = Field.zoned(s_DFHCOMMAREA, 60, 2, 0, false, false, false);
- f168_INQACC_LAST_STMT_YEAR = Field.zoned(s_DFHCOMMAREA, 62, 4, 0, false, false, false);
- f169_INQACC_NEXT_STMT_DT = Field.zoned(s_DFHCOMMAREA, 66, 8, 0, false, false, false);
- f170_INQACC_NEXT_STMT_GROUP = Field.group(s_DFHCOMMAREA, 66, 8);
- f171_INQACC_NEXT_STMT_DAY = Field.zoned(s_DFHCOMMAREA, 66, 2, 0, false, false, false);
- f172_INQACC_NEXT_STMT_MONTH = Field.zoned(s_DFHCOMMAREA, 68, 2, 0, false, false, false);
- f173_INQACC_NEXT_STMT_YEAR = Field.zoned(s_DFHCOMMAREA, 70, 4, 0, false, false, false);
- f174_INQACC_AVAIL_BAL = Field.zoned(s_DFHCOMMAREA, 74, 12, 2, true, false, false);
- f175_INQACC_ACTUAL_BAL = Field.zoned(s_DFHCOMMAREA, 86, 12, 2, true, false, false);
- f176_INQACC_SUCCESS = Field.alphanumeric(s_DFHCOMMAREA, 98, 1, false);
- f178_DFHEIBLK = Field.group(s_DFHEIBLK, 0, 85);
- f179_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
- f180_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
- f181_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
- f182_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
- f183_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
- f184_DFHEIGDI = Field.binary(s_DFHEIBLK, 20, 4, 0, true, false);
- f185_EIBCPOSN = Field.binary(s_DFHEIBLK, 22, 4, 0, true, false);
- f186_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
- f187_EIBAID = Field.alphanumeric(s_DFHEIBLK, 26, 1, false);
- f188_EIBFN = Field.alphanumeric(s_DFHEIBLK, 27, 2, false);
- f189_EIBRCODE = Field.alphanumeric(s_DFHEIBLK, 29, 6, false);
- f190_EIBDS = Field.alphanumeric(s_DFHEIBLK, 35, 8, false);
- f191_EIBREQID = Field.alphanumeric(s_DFHEIBLK, 43, 8, false);
- f192_EIBRSRCE = Field.alphanumeric(s_DFHEIBLK, 51, 8, false);
- f193_EIBSYNC = Field.alphanumeric(s_DFHEIBLK, 59, 1, false);
- f194_EIBFREE = Field.alphanumeric(s_DFHEIBLK, 60, 1, false);
- f195_EIBRECV = Field.alphanumeric(s_DFHEIBLK, 61, 1, false);
- f196_EIBSEND = Field.alphanumeric(s_DFHEIBLK, 62, 1, false);
- f197_EIBATT = Field.alphanumeric(s_DFHEIBLK, 63, 1, false);
- f198_EIBEOC = Field.alphanumeric(s_DFHEIBLK, 64, 1, false);
- f199_EIBFMH = Field.alphanumeric(s_DFHEIBLK, 65, 1, false);
- f200_EIBCOMPL = Field.alphanumeric(s_DFHEIBLK, 66, 1, false);
- f201_EIBSIG = Field.alphanumeric(s_DFHEIBLK, 67, 1, false);
- f202_EIBCONF = Field.alphanumeric(s_DFHEIBLK, 68, 1, false);
- f203_EIBERR = Field.alphanumeric(s_DFHEIBLK, 69, 1, false);
- f204_EIBERRCD = Field.alphanumeric(s_DFHEIBLK, 70, 4, false);
- f205_EIBSYNRB = Field.alphanumeric(s_DFHEIBLK, 74, 1, false);
- f206_EIBNODAT = Field.alphanumeric(s_DFHEIBLK, 75, 1, false);
- f207_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
- f208_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
- f209_EIBRLDBK = Field.alphanumeric(s_DFHEIBLK, 84, 1, false);
- f210_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
}
- /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
- * initial storage; RETURN-CODE. */
- public int runProgram() {
+ /** WORKING-STORAGE (and every storage) as its VALUE clauses set it: each entry point starts from here. */
+ private void initialState() {
System.arraycopy(IMAGE_s_SORTCODE, 0, s_SORTCODE.bytes, 0, IMAGE_s_SORTCODE.length);
System.arraycopy(IMAGE_s_HOST_ACCOUNT_ROW, 0, s_HOST_ACCOUNT_ROW.bytes, 0, IMAGE_s_HOST_ACCOUNT_ROW.length);
System.arraycopy(IMAGE_s_SQLCA, 0, s_SQLCA.bytes, 0, IMAGE_s_SQLCA.length);
System.arraycopy(IMAGE_s_WS_CICS_WORK_AREA, 0, s_WS_CICS_WORK_AREA.bytes, 0, IMAGE_s_WS_CICS_WORK_AREA.length);
- System.arraycopy(IMAGE_s_EXIT_BROWSE_LOOP, 0, s_EXIT_BROWSE_LOOP.bytes, 0, IMAGE_s_EXIT_BROWSE_LOOP.length);
System.arraycopy(IMAGE_s_OUTPUT_DATA, 0, s_OUTPUT_DATA.bytes, 0, IMAGE_s_OUTPUT_DATA.length);
System.arraycopy(IMAGE_s_RETURNED_DATA, 0, s_RETURNED_DATA.bytes, 0, IMAGE_s_RETURNED_DATA.length);
- System.arraycopy(IMAGE_s_DESIRED_KEY, 0, s_DESIRED_KEY.bytes, 0, IMAGE_s_DESIRED_KEY.length);
System.arraycopy(IMAGE_s_DB2_DATE_REFORMAT, 0, s_DB2_DATE_REFORMAT.bytes, 0, IMAGE_s_DB2_DATE_REFORMAT.length);
- System.arraycopy(IMAGE_s_DATA_STORE_TYPE, 0, s_DATA_STORE_TYPE.bytes, 0, IMAGE_s_DATA_STORE_TYPE.length);
- System.arraycopy(IMAGE_s_DB2_EXIT_LOOP, 0, s_DB2_EXIT_LOOP.bytes, 0, IMAGE_s_DB2_EXIT_LOOP.length);
- System.arraycopy(IMAGE_s_FETCH_DATA_CNT, 0, s_FETCH_DATA_CNT.bytes, 0, IMAGE_s_FETCH_DATA_CNT.length);
- System.arraycopy(IMAGE_s_WS_CUST_ALT_KEY_LEN, 0, s_WS_CUST_ALT_KEY_LEN.bytes, 0, IMAGE_s_WS_CUST_ALT_KEY_LEN.length);
System.arraycopy(IMAGE_s_ACCOUNT_KY, 0, s_ACCOUNT_KY.bytes, 0, IMAGE_s_ACCOUNT_KY.length);
System.arraycopy(IMAGE_s_MY_ABEND_CODE, 0, s_MY_ABEND_CODE.bytes, 0, IMAGE_s_MY_ABEND_CODE.length);
- System.arraycopy(IMAGE_s_WS_STORM_DRAIN, 0, s_WS_STORM_DRAIN.bytes, 0, IMAGE_s_WS_STORM_DRAIN.length);
- System.arraycopy(IMAGE_s_STORM_DRAIN_CONDITION, 0, s_STORM_DRAIN_CONDITION.bytes, 0, IMAGE_s_STORM_DRAIN_CONDITION.length);
System.arraycopy(IMAGE_s_SQLCODE_DISPLAY, 0, s_SQLCODE_DISPLAY.bytes, 0, IMAGE_s_SQLCODE_DISPLAY.length);
System.arraycopy(IMAGE_s_NCS_ACC_NO_STUFF, 0, s_NCS_ACC_NO_STUFF.bytes, 0, IMAGE_s_NCS_ACC_NO_STUFF.length);
- System.arraycopy(IMAGE_s_WS_DISP_ACC_NO_VAL, 0, s_WS_DISP_ACC_NO_VAL.bytes, 0, IMAGE_s_WS_DISP_ACC_NO_VAL.length);
System.arraycopy(IMAGE_s_ACCOUNT_KY2, 0, s_ACCOUNT_KY2.bytes, 0, IMAGE_s_ACCOUNT_KY2.length);
System.arraycopy(IMAGE_s_WS_POINTER, 0, s_WS_POINTER.bytes, 0, IMAGE_s_WS_POINTER.length);
- System.arraycopy(IMAGE_s_WS_POINTER_NUMBER_DISPLAY, 0, s_WS_POINTER_NUMBER_DISPLAY.bytes, 0, IMAGE_s_WS_POINTER_NUMBER_DISPLAY.length);
System.arraycopy(IMAGE_s_WS_U_TIME, 0, s_WS_U_TIME.bytes, 0, IMAGE_s_WS_U_TIME.length);
System.arraycopy(IMAGE_s_WS_ORIG_DATE, 0, s_WS_ORIG_DATE.bytes, 0, IMAGE_s_WS_ORIG_DATE.length);
System.arraycopy(IMAGE_s_WS_ORIG_DATE_GRP_X, 0, s_WS_ORIG_DATE_GRP_X.bytes, 0, IMAGE_s_WS_ORIG_DATE_GRP_X.length);
System.arraycopy(IMAGE_s_WS_TIME_DATA, 0, s_WS_TIME_DATA.bytes, 0, IMAGE_s_WS_TIME_DATA.length);
- System.arraycopy(IMAGE_s_WS_ABEND_PGM, 0, s_WS_ABEND_PGM.bytes, 0, IMAGE_s_WS_ABEND_PGM.length);
System.arraycopy(IMAGE_s_ABNDINFO_REC, 0, s_ABNDINFO_REC.bytes, 0, IMAGE_s_ABNDINFO_REC.length);
System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ f40_EXIT_BROWSE_LOOP = "N";
+ f69_RETURNED_EYE_CATCHER = " ";
+ f70_RETURNED_CUST_NO = new BigDecimal("0");
+ f72_RETURNED_SORT_CODE = new BigDecimal("0");
+ f73_RETURNED_NUMBER = new BigDecimal("0");
+ f74_RETURNED_TYPE = " ";
+ f75_RETURNED_INTEREST_RATE = new BigDecimal("0");
+ f76_RETURNED_OPENED = new BigDecimal("0");
+ f77_RETURNED_OVERDRAFT_LIMIT = new BigDecimal("0");
+ f78_RETURNED_LAST_STMT_DATE = new BigDecimal("0");
+ f79_RETURNED_NEXT_STMT_DATE = new BigDecimal("0");
+ f80_RETURNED_AVAILABLE_BALANCE = new BigDecimal("0");
+ f81_RETURNED_ACTUAL_BALANCE = new BigDecimal("0");
+ f82_DESIRED_KEY = 0L;
+ f89_DATA_STORE_TYPE = " ";
+ f90_DB2_EXIT_LOOP = " ";
+ f91_FETCH_DATA_CNT = 0L;
+ f92_WS_CUST_ALT_KEY_LEN = 10L;
+ f95_REQUIRED_ACC_NUM = new BigDecimal("0");
+ f97_WS_STORM_DRAIN = "N";
+ f98_STORM_DRAIN_CONDITION = " ";
+ f105_NCS_ACC_NO_INC = 0L;
+ f107_NCS_ACC_NO_RESP = "00";
+ f108_WS_DISP_ACC_NO_VAL = new BigDecimal("0");
+ f110_REQUIRED_SORT_CODE2 = new BigDecimal("0");
+ f115_WS_POINTER_NUMBER_DISPLAY = new BigDecimal("0");
+ f125_WS_ORIG_DATE_DD_X = " ";
+ f127_WS_ORIG_DATE_MM_X = " ";
+ f129_WS_ORIG_DATE_YYYY_X = " ";
+ f136_WS_ABEND_PGM = "ABNDPROC";
+ }
+
+ /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
+ * initial storage; RETURN-CODE. */
+ public int runProgram() {
+ initialState();
performDepth = 0;
try {
perform(0, 26);
@@ -773,52 +493,20 @@ public int runProgram() {
return Cobol.num(f210_GG_RETURN_CODE, CS).intValue();
}
- public void executeInqacc() {
- runBatch(List.of(), null);
- }
-
/** One task of the program: the EIB and COMMAREA from the task, then the PROCEDURE DIVISION. */
public void runTask(CicsTask task) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
this.task = task;
DetSql.closeAll(); // a task's cursors are its own
caBack = () -> { };
handlers.clear();
heldKey.clear();
- System.arraycopy(IMAGE_s_SORTCODE, 0, s_SORTCODE.bytes, 0, IMAGE_s_SORTCODE.length);
- System.arraycopy(IMAGE_s_HOST_ACCOUNT_ROW, 0, s_HOST_ACCOUNT_ROW.bytes, 0, IMAGE_s_HOST_ACCOUNT_ROW.length);
- System.arraycopy(IMAGE_s_SQLCA, 0, s_SQLCA.bytes, 0, IMAGE_s_SQLCA.length);
- System.arraycopy(IMAGE_s_WS_CICS_WORK_AREA, 0, s_WS_CICS_WORK_AREA.bytes, 0, IMAGE_s_WS_CICS_WORK_AREA.length);
- System.arraycopy(IMAGE_s_EXIT_BROWSE_LOOP, 0, s_EXIT_BROWSE_LOOP.bytes, 0, IMAGE_s_EXIT_BROWSE_LOOP.length);
- System.arraycopy(IMAGE_s_OUTPUT_DATA, 0, s_OUTPUT_DATA.bytes, 0, IMAGE_s_OUTPUT_DATA.length);
- System.arraycopy(IMAGE_s_RETURNED_DATA, 0, s_RETURNED_DATA.bytes, 0, IMAGE_s_RETURNED_DATA.length);
- System.arraycopy(IMAGE_s_DESIRED_KEY, 0, s_DESIRED_KEY.bytes, 0, IMAGE_s_DESIRED_KEY.length);
- System.arraycopy(IMAGE_s_DB2_DATE_REFORMAT, 0, s_DB2_DATE_REFORMAT.bytes, 0, IMAGE_s_DB2_DATE_REFORMAT.length);
- System.arraycopy(IMAGE_s_DATA_STORE_TYPE, 0, s_DATA_STORE_TYPE.bytes, 0, IMAGE_s_DATA_STORE_TYPE.length);
- System.arraycopy(IMAGE_s_DB2_EXIT_LOOP, 0, s_DB2_EXIT_LOOP.bytes, 0, IMAGE_s_DB2_EXIT_LOOP.length);
- System.arraycopy(IMAGE_s_FETCH_DATA_CNT, 0, s_FETCH_DATA_CNT.bytes, 0, IMAGE_s_FETCH_DATA_CNT.length);
- System.arraycopy(IMAGE_s_WS_CUST_ALT_KEY_LEN, 0, s_WS_CUST_ALT_KEY_LEN.bytes, 0, IMAGE_s_WS_CUST_ALT_KEY_LEN.length);
- System.arraycopy(IMAGE_s_ACCOUNT_KY, 0, s_ACCOUNT_KY.bytes, 0, IMAGE_s_ACCOUNT_KY.length);
- System.arraycopy(IMAGE_s_MY_ABEND_CODE, 0, s_MY_ABEND_CODE.bytes, 0, IMAGE_s_MY_ABEND_CODE.length);
- System.arraycopy(IMAGE_s_WS_STORM_DRAIN, 0, s_WS_STORM_DRAIN.bytes, 0, IMAGE_s_WS_STORM_DRAIN.length);
- System.arraycopy(IMAGE_s_STORM_DRAIN_CONDITION, 0, s_STORM_DRAIN_CONDITION.bytes, 0, IMAGE_s_STORM_DRAIN_CONDITION.length);
- System.arraycopy(IMAGE_s_SQLCODE_DISPLAY, 0, s_SQLCODE_DISPLAY.bytes, 0, IMAGE_s_SQLCODE_DISPLAY.length);
- System.arraycopy(IMAGE_s_NCS_ACC_NO_STUFF, 0, s_NCS_ACC_NO_STUFF.bytes, 0, IMAGE_s_NCS_ACC_NO_STUFF.length);
- System.arraycopy(IMAGE_s_WS_DISP_ACC_NO_VAL, 0, s_WS_DISP_ACC_NO_VAL.bytes, 0, IMAGE_s_WS_DISP_ACC_NO_VAL.length);
- System.arraycopy(IMAGE_s_ACCOUNT_KY2, 0, s_ACCOUNT_KY2.bytes, 0, IMAGE_s_ACCOUNT_KY2.length);
- System.arraycopy(IMAGE_s_WS_POINTER, 0, s_WS_POINTER.bytes, 0, IMAGE_s_WS_POINTER.length);
- System.arraycopy(IMAGE_s_WS_POINTER_NUMBER_DISPLAY, 0, s_WS_POINTER_NUMBER_DISPLAY.bytes, 0, IMAGE_s_WS_POINTER_NUMBER_DISPLAY.length);
- System.arraycopy(IMAGE_s_WS_U_TIME, 0, s_WS_U_TIME.bytes, 0, IMAGE_s_WS_U_TIME.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE, 0, s_WS_ORIG_DATE.bytes, 0, IMAGE_s_WS_ORIG_DATE.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE_GRP_X, 0, s_WS_ORIG_DATE_GRP_X.bytes, 0, IMAGE_s_WS_ORIG_DATE_GRP_X.length);
- System.arraycopy(IMAGE_s_WS_TIME_DATA, 0, s_WS_TIME_DATA.bytes, 0, IMAGE_s_WS_TIME_DATA.length);
- System.arraycopy(IMAGE_s_WS_ABEND_PGM, 0, s_WS_ABEND_PGM.bytes, 0, IMAGE_s_WS_ABEND_PGM.length);
- System.arraycopy(IMAGE_s_ABNDINFO_REC, 0, s_ABNDINFO_REC.bytes, 0, IMAGE_s_ABNDINFO_REC.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
Cobol.move(task.transid(), f181_EIBTRNID, CS);
+ Cobol.move(task.termid() == null ? "" : task.termid(), f183_EIBTRMID, CS);
+ Cobol.store(f182_EIBTASKN, BigDecimal.valueOf(task.taskNumber()), false, CS);
java.time.LocalDateTime now = task.now();
Cobol.store(f180_EIBDATE, BigDecimal.valueOf((now.getYear() - 1900) * 1000L + now.getDayOfYear()), false, CS);
Cobol.store(f179_EIBTIME, BigDecimal.valueOf(now.getHour() * 10000L + now.getMinute() * 100L + now.getSecond()), false, CS);
@@ -827,20 +515,56 @@ public void runTask(CicsTask task) {
}
Object ca = task.hasCommarea() ? task.commarea(Object.class) : null;
int calen = 0;
- if (ca instanceof InqaccCommarea x) {
- in_InqaccCommarea(x, s_DFHCOMMAREA, 0);
- caBack = () -> fill_InqaccCommarea(x, s_DFHCOMMAREA, 0);
+ if (ca instanceof InqaccDfhcommarea x) {
+ in_InqaccDfhcommarea(x, s_DFHCOMMAREA, 0);
+ caBack = () -> fill_InqaccDfhcommarea(x, s_DFHCOMMAREA, 0);
calen = cx(task, 103);
- } else if (ca instanceof AbndprocAbndinfoRec x) {
- in_AbndprocAbndinfoRec(x, s_DFHCOMMAREA, 0);
- caBack = () -> fill_AbndprocAbndinfoRec(x, s_DFHCOMMAREA, 0);
+ } else if (ca instanceof AbndprocDfhcommarea x) {
+ in_AbndprocDfhcommarea(x, s_DFHCOMMAREA, 0);
+ caBack = () -> fill_AbndprocDfhcommarea(x, s_DFHCOMMAREA, 0);
calen = cx(task, 681);
}
+ s_DFHCOMMAREA.beyond = null;
+ if (ca instanceof byte[] cb0) {
+ byte[] cb = DetCics.commareaIn(cb0, CS);
+ System.arraycopy(cb, 0, s_DFHCOMMAREA.bytes, 0, Math.min(cb.length, s_DFHCOMMAREA.bytes.length));
+ if (cb.length > s_DFHCOMMAREA.bytes.length) {
+ s_DFHCOMMAREA.beyond = java.util.Arrays.copyOfRange(cb, s_DFHCOMMAREA.bytes.length, cb.length);
+ }
+ calen = cx(task, cb.length);
+ }
+ byte[] raw = task.linkArea();
+ if (raw != null) {
+ System.arraycopy(raw, 0, s_DFHCOMMAREA.bytes, 0, Math.min(raw.length, s_DFHCOMMAREA.bytes.length));
+ int keep = s_DFHCOMMAREA.bytes.length;
+ s_DFHCOMMAREA.beyond = raw.length > keep ? java.util.Arrays.copyOfRange(raw, keep, raw.length) : null;
+ Runnable typed = caBack;
+ caBack = () -> { typed.run(); System.arraycopy(s_DFHCOMMAREA.bytes, 0, raw, 0, Math.min(raw.length, keep)); if (s_DFHCOMMAREA.beyond != null) { System.arraycopy(s_DFHCOMMAREA.beyond, 0, raw, keep, raw.length - keep); } };
+ }
+ byte[] caWhole = null;
+ if (task.exactCommarea() && calen < s_DFHCOMMAREA.bytes.length) {
+ caWhole = s_DFHCOMMAREA.bytes;
+ s_DFHCOMMAREA.bytes = java.util.Arrays.copyOf(caWhole, calen);
+ Runnable typed = caBack;
+ byte[] whole = caWhole;
+ caBack = () -> { caWhole(whole); typed.run(); };
+ }
Cobol.store(f186_EIBCALEN, BigDecimal.valueOf(calen), false, CS);
try {
- perform(0, 26);
- } catch (Goback g) {
- // RETURN / XCTL / an abend ended the program
+ try {
+ perform(0, 26);
+ } catch (Goback g) {
+ // RETURN / XCTL / an abend ended the program
+ }
+ } catch (IndexOutOfBoundsException e) {
+ if (caWhole == null) {
+ throw e;
+ }
+ throw new DetCics.PastFrom("COMMAREA past EIBCALEN (" + calen + " bytes): not modelled");
+ } finally {
+ if (caWhole != null) {
+ caWhole(caWhole);
+ }
}
if (!task.ended()) {
caBack.run();
@@ -848,11 +572,15 @@ public void runTask(CicsTask task) {
}
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
- public InqaccCommarea handleLink(InqaccCommarea request) {
- throw new UnsupportedOperationException("handleLink: this port runs as runTask");
+ public InqaccDfhcommarea handleLink(InqaccDfhcommarea request) {
+ CicsTask.Region region = CicsTask.region();
+ CicsTask task = region.linked("INQACC", request);
+ region.run(task, "INQACC", this::runTask);
+ return request;
}
@@ -872,40 +600,10 @@ private static Dd dd(List dds, String name) {
/** The batch entry. */
public int runBatch(List dds, String parm) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
DetSql.closeAll(); // a step's cursors are its own
- System.arraycopy(IMAGE_s_SORTCODE, 0, s_SORTCODE.bytes, 0, IMAGE_s_SORTCODE.length);
- System.arraycopy(IMAGE_s_HOST_ACCOUNT_ROW, 0, s_HOST_ACCOUNT_ROW.bytes, 0, IMAGE_s_HOST_ACCOUNT_ROW.length);
- System.arraycopy(IMAGE_s_SQLCA, 0, s_SQLCA.bytes, 0, IMAGE_s_SQLCA.length);
- System.arraycopy(IMAGE_s_WS_CICS_WORK_AREA, 0, s_WS_CICS_WORK_AREA.bytes, 0, IMAGE_s_WS_CICS_WORK_AREA.length);
- System.arraycopy(IMAGE_s_EXIT_BROWSE_LOOP, 0, s_EXIT_BROWSE_LOOP.bytes, 0, IMAGE_s_EXIT_BROWSE_LOOP.length);
- System.arraycopy(IMAGE_s_OUTPUT_DATA, 0, s_OUTPUT_DATA.bytes, 0, IMAGE_s_OUTPUT_DATA.length);
- System.arraycopy(IMAGE_s_RETURNED_DATA, 0, s_RETURNED_DATA.bytes, 0, IMAGE_s_RETURNED_DATA.length);
- System.arraycopy(IMAGE_s_DESIRED_KEY, 0, s_DESIRED_KEY.bytes, 0, IMAGE_s_DESIRED_KEY.length);
- System.arraycopy(IMAGE_s_DB2_DATE_REFORMAT, 0, s_DB2_DATE_REFORMAT.bytes, 0, IMAGE_s_DB2_DATE_REFORMAT.length);
- System.arraycopy(IMAGE_s_DATA_STORE_TYPE, 0, s_DATA_STORE_TYPE.bytes, 0, IMAGE_s_DATA_STORE_TYPE.length);
- System.arraycopy(IMAGE_s_DB2_EXIT_LOOP, 0, s_DB2_EXIT_LOOP.bytes, 0, IMAGE_s_DB2_EXIT_LOOP.length);
- System.arraycopy(IMAGE_s_FETCH_DATA_CNT, 0, s_FETCH_DATA_CNT.bytes, 0, IMAGE_s_FETCH_DATA_CNT.length);
- System.arraycopy(IMAGE_s_WS_CUST_ALT_KEY_LEN, 0, s_WS_CUST_ALT_KEY_LEN.bytes, 0, IMAGE_s_WS_CUST_ALT_KEY_LEN.length);
- System.arraycopy(IMAGE_s_ACCOUNT_KY, 0, s_ACCOUNT_KY.bytes, 0, IMAGE_s_ACCOUNT_KY.length);
- System.arraycopy(IMAGE_s_MY_ABEND_CODE, 0, s_MY_ABEND_CODE.bytes, 0, IMAGE_s_MY_ABEND_CODE.length);
- System.arraycopy(IMAGE_s_WS_STORM_DRAIN, 0, s_WS_STORM_DRAIN.bytes, 0, IMAGE_s_WS_STORM_DRAIN.length);
- System.arraycopy(IMAGE_s_STORM_DRAIN_CONDITION, 0, s_STORM_DRAIN_CONDITION.bytes, 0, IMAGE_s_STORM_DRAIN_CONDITION.length);
- System.arraycopy(IMAGE_s_SQLCODE_DISPLAY, 0, s_SQLCODE_DISPLAY.bytes, 0, IMAGE_s_SQLCODE_DISPLAY.length);
- System.arraycopy(IMAGE_s_NCS_ACC_NO_STUFF, 0, s_NCS_ACC_NO_STUFF.bytes, 0, IMAGE_s_NCS_ACC_NO_STUFF.length);
- System.arraycopy(IMAGE_s_WS_DISP_ACC_NO_VAL, 0, s_WS_DISP_ACC_NO_VAL.bytes, 0, IMAGE_s_WS_DISP_ACC_NO_VAL.length);
- System.arraycopy(IMAGE_s_ACCOUNT_KY2, 0, s_ACCOUNT_KY2.bytes, 0, IMAGE_s_ACCOUNT_KY2.length);
- System.arraycopy(IMAGE_s_WS_POINTER, 0, s_WS_POINTER.bytes, 0, IMAGE_s_WS_POINTER.length);
- System.arraycopy(IMAGE_s_WS_POINTER_NUMBER_DISPLAY, 0, s_WS_POINTER_NUMBER_DISPLAY.bytes, 0, IMAGE_s_WS_POINTER_NUMBER_DISPLAY.length);
- System.arraycopy(IMAGE_s_WS_U_TIME, 0, s_WS_U_TIME.bytes, 0, IMAGE_s_WS_U_TIME.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE, 0, s_WS_ORIG_DATE.bytes, 0, IMAGE_s_WS_ORIG_DATE.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE_GRP_X, 0, s_WS_ORIG_DATE_GRP_X.bytes, 0, IMAGE_s_WS_ORIG_DATE_GRP_X.length);
- System.arraycopy(IMAGE_s_WS_TIME_DATA, 0, s_WS_TIME_DATA.bytes, 0, IMAGE_s_WS_TIME_DATA.length);
- System.arraycopy(IMAGE_s_WS_ABEND_PGM, 0, s_WS_ABEND_PGM.bytes, 0, IMAGE_s_WS_ABEND_PGM.length);
- System.arraycopy(IMAGE_s_ABNDINFO_REC, 0, s_ABNDINFO_REC.bytes, 0, IMAGE_s_ABNDINFO_REC.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
byte[] parmText = (parm == null ? "" : parm).getBytes(CS);
s_DFHCOMMAREA.bytes[0] = (byte) (parmText.length >> 8);
s_DFHCOMMAREA.bytes[1] = (byte) parmText.length;
@@ -918,6 +616,7 @@ public int runBatch(List dds, String parm) {
return Cobol.num(f210_GG_RETURN_CODE, CS).intValue();
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
@@ -1100,7 +799,7 @@ private int p4() {
java.util.Map sqlParams1 = new java.util.HashMap<>();
sqlParams1.put("hvAccountAccNo", DetSql.charIn(f6_HV_ACCOUNT_ACC_NO, CS));
sqlParams1.put("hvAccountSortcode", DetSql.charIn(f5_HV_ACCOUNT_SORTCODE, CS));
- DetSql.open(f15_SQLCA, "ACC-CURSOR", () -> accountRepository.cursorAccCursorL66Inqacc(sqlParams1), CS);
+ DetSql.open(f15_SQLCA, "INQACC:270", "ACC-CURSOR", () -> accountRepository.cursorAccCursorL66Inqacc(sqlParams1), CS);
// IF SQLCODE NOT = 0
if (!(Cobol.num(f18_SQLCODE, CS).compareTo(D0) == 0)) {
// MOVE SQLCODE TO SQLCODE-DISPLAY
@@ -1145,14 +844,15 @@ private int p4() {
// STRING 'RAD010 -Failure when attempting to OPEN DB2 ' DELIMITED BY SIZE, 'CURSOR. Check SQLCODE. ' DELIMITED BY SIZE, 'SQLCODE=' DELIMITED BY SIZE, SQ
Cobol.string(f150_ABND_FREEFORM, null, CS, Cobol.StringPart.size("RAD010 -Failure when attempting to OPEN DB2 ", CS), Cobol.StringPart.size("CURSOR. Check SQLCODE. ", CS), Cobol.StringPart.size("SQLCODE=", CS), Cobol.StringPart.size(f99_SQLCODE_DISPLAY));
// EXEC CICS LINK PROGRAM(WS-ABEND-PGM) COMMAREA(ABNDINFO-REC) END-EXEC
- AbndprocAbndinfoRec ca3 = out_AbndprocAbndinfoRec(f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset());
- String lr2 = task.link(Cobol.text(f136_WS_ABEND_PGM, CS).strip(), ca3, 681);
- if ("NORMAL".equals(lr2)) in_AbndprocAbndinfoRec(ca3, f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset());
- String exit4 = task.abendExit();
- if (exit4 != null) return GOTO | paragraph(exit4);
- if (task.ended()) throw new Goback();
+ Storage cw4 = Cobol.commarea(f137_ABNDINFO_REC, 681);
+ AbndprocDfhcommarea ca3 = out_AbndprocDfhcommarea(cw4, 0);
+ String lr2 = task.link(f136_WS_ABEND_PGM.strip(), ca3, 681, cw4.bytes);
+ if ("NORMAL".equals(lr2)) { in_AbndprocDfhcommarea(ca3, cw4, 0); Cobol.commareaBack(cw4, f137_ABNDINFO_REC); }
+ String exit5 = task.abendExit();
+ if (exit5 != null) return GOTO | paragraph(exit5);
+ if (task.ended()) throw abended();
Cobol.store(f207_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr2)), false, CS);
- Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(DetCics.linkResp2(lr2)), false, CS);
if (DetCics.resp(lr2) != 0) {
int to = condition(DetCics.condition(DetCics.resp(lr2)));
if (to >= 0) return GOTO | to;
@@ -1162,14 +862,14 @@ private int p4() {
// PERFORM CHECK-FOR-STORM-DRAIN-DB2
perform(12, 14);
// EXEC CICS ABEND ABCODE('HRAC') CANCEL NODUMP END-EXEC
- String exit5 = task.abendCancel("HRAC".strip());
- if (exit5 == null) throw new Goback();
- if (true) return GOTO | paragraph(exit5);
+ String exit6 = task.abendCancel("HRAC".strip());
+ if (exit6 == null) throw abended();
+ if (true) return GOTO | paragraph(exit6);
}
// PERFORM FETCH-DATA
perform(6, 8);
// EXEC SQL CLOSE ACC-CURSOR END-EXEC
- DetSql.close(f15_SQLCA, "ACC-CURSOR", CS);
+ DetSql.close(f15_SQLCA, "INQACC:350", "ACC-CURSOR", CS);
// IF SQLCODE NOT = 0
if (!(Cobol.num(f18_SQLCODE, CS).compareTo(D0) == 0)) {
// MOVE SQLCODE TO SQLCODE-DISPLAY
@@ -1214,16 +914,17 @@ private int p4() {
// STRING 'RAD010 -Failure when attempting to CLOSE DB2 ' DELIMITED BY SIZE, 'CURSOR (ACC-CUSOR). Check SQLCODE' DELIMITED BY SIZE, 'SQLCODE=' DELIMITED
Cobol.string(f150_ABND_FREEFORM, null, CS, Cobol.StringPart.size("RAD010 -Failure when attempting to CLOSE DB2 ", CS), Cobol.StringPart.size("CURSOR (ACC-CUSOR). Check SQLCODE", CS), Cobol.StringPart.size("SQLCODE=", CS), Cobol.StringPart.size(f99_SQLCODE_DISPLAY));
// EXEC CICS LINK PROGRAM(WS-ABEND-PGM) COMMAREA(ABNDINFO-REC) END-EXEC
- AbndprocAbndinfoRec ca8 = out_AbndprocAbndinfoRec(f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset());
- String lr7 = task.link(Cobol.text(f136_WS_ABEND_PGM, CS).strip(), ca8, 681);
- if ("NORMAL".equals(lr7)) in_AbndprocAbndinfoRec(ca8, f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset());
- String exit9 = task.abendExit();
- if (exit9 != null) return GOTO | paragraph(exit9);
- if (task.ended()) throw new Goback();
- Cobol.store(f207_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr7)), false, CS);
- Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(0), false, CS);
- if (DetCics.resp(lr7) != 0) {
- int to = condition(DetCics.condition(DetCics.resp(lr7)));
+ Storage cw10 = Cobol.commarea(f137_ABNDINFO_REC, 681);
+ AbndprocDfhcommarea ca9 = out_AbndprocDfhcommarea(cw10, 0);
+ String lr8 = task.link(f136_WS_ABEND_PGM.strip(), ca9, 681, cw10.bytes);
+ if ("NORMAL".equals(lr8)) { in_AbndprocDfhcommarea(ca9, cw10, 0); Cobol.commareaBack(cw10, f137_ABNDINFO_REC); }
+ String exit11 = task.abendExit();
+ if (exit11 != null) return GOTO | paragraph(exit11);
+ if (task.ended()) throw abended();
+ Cobol.store(f207_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr8)), false, CS);
+ Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(DetCics.linkResp2(lr8)), false, CS);
+ if (DetCics.resp(lr8) != 0) {
+ int to = condition(DetCics.condition(DetCics.resp(lr8)));
if (to >= 0) return GOTO | to;
}
// DISPLAY 'Failure when attempting to close the DB2 CURSOR' ' ACC-CURSOR. With SQL code=' SQLCODE-DISPLAY
@@ -1231,9 +932,9 @@ private int p4() {
// PERFORM CHECK-FOR-STORM-DRAIN-DB2
perform(12, 14);
// EXEC CICS ABEND ABCODE('HRAC') CANCEL NODUMP END-EXEC
- String exit10 = task.abendCancel("HRAC".strip());
- if (exit10 == null) throw new Goback();
- if (true) return GOTO | paragraph(exit10);
+ String exit12 = task.abendCancel("HRAC".strip());
+ if (exit12 == null) throw abended();
+ if (true) return GOTO | paragraph(exit12);
}
return 5;
}
@@ -1253,9 +954,9 @@ private int p6() {
/** FD010. */
private int p7() {
// EXEC SQL FETCH FROM ACC-CURSOR INTO :HV-ACCOUNT-EYECATCHER, :HV-ACCOUNT-CUST-NO, :HV-ACCOUNT-SORTCODE, :HV-ACCOUNT-ACC-NO, :HV-ACCOUNT-ACC-TYPE, :HV-A
- java.util.Map sqlRow12 = DetSql.fetch(f15_SQLCA, "ACC-CURSOR", CS);
- if (sqlRow12 != null) {
- DetSql.into(f15_SQLCA, sqlRow12, "XXXXXNXNXXNN", new Field[] {f3_HV_ACCOUNT_EYECATCHER, f4_HV_ACCOUNT_CUST_NO, f5_HV_ACCOUNT_SORTCODE, f6_HV_ACCOUNT_ACC_NO, f7_HV_ACCOUNT_ACC_TYPE, f8_HV_ACCOUNT_INT_RATE, f9_HV_ACCOUNT_OPENED, f10_HV_ACCOUNT_OVERDRAFT_LIM, f11_HV_ACCOUNT_LAST_STMT, f12_HV_ACCOUNT_NEXT_STMT, f13_HV_ACCOUNT_AVAIL_BAL, f14_HV_ACCOUNT_ACTUAL_BAL}, new Field[] {null, null, null, null, null, null, null, null, null, null, null, null}, null, CS);
+ java.util.Map sqlRow14 = DetSql.fetch(f15_SQLCA, "INQACC:431", "ACC-CURSOR", CS);
+ if (sqlRow14 != null) {
+ DetSql.into(f15_SQLCA, sqlRow14, "XXXXXNXNXXNN", new Field[] {f3_HV_ACCOUNT_EYECATCHER, f4_HV_ACCOUNT_CUST_NO, f5_HV_ACCOUNT_SORTCODE, f6_HV_ACCOUNT_ACC_NO, f7_HV_ACCOUNT_ACC_TYPE, f8_HV_ACCOUNT_INT_RATE, f9_HV_ACCOUNT_OPENED, f10_HV_ACCOUNT_OVERDRAFT_LIM, f11_HV_ACCOUNT_LAST_STMT, f12_HV_ACCOUNT_NEXT_STMT, f13_HV_ACCOUNT_AVAIL_BAL, f14_HV_ACCOUNT_ACTUAL_BAL}, new Field[] {null, null, null, null, null, null, null, null, null, null, null, null}, null, CS);
}
// IF SQLCODE = +100
if (Cobol.num(f18_SQLCODE, CS).compareTo(D100) == 0) {
@@ -1325,24 +1026,25 @@ private int p7() {
// STRING 'FD010 -Failure when attempting to FETCH from ' DELIMITED BY SIZE, 'DB2 CURSOR (ACC-CURSOR). Check SQLCODE' DELIMITED BY SIZE, 'SQLCODE=' DELIM
Cobol.string(f150_ABND_FREEFORM, null, CS, Cobol.StringPart.size("FD010 -Failure when attempting to FETCH from ", CS), Cobol.StringPart.size("DB2 CURSOR (ACC-CURSOR). Check SQLCODE", CS), Cobol.StringPart.size("SQLCODE=", CS), Cobol.StringPart.size(f99_SQLCODE_DISPLAY));
// EXEC CICS LINK PROGRAM(WS-ABEND-PGM) COMMAREA(ABNDINFO-REC) END-EXEC
- AbndprocAbndinfoRec ca14 = out_AbndprocAbndinfoRec(f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset());
- String lr13 = task.link(Cobol.text(f136_WS_ABEND_PGM, CS).strip(), ca14, 681);
- if ("NORMAL".equals(lr13)) in_AbndprocAbndinfoRec(ca14, f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset());
- String exit15 = task.abendExit();
- if (exit15 != null) return GOTO | paragraph(exit15);
- if (task.ended()) throw new Goback();
- Cobol.store(f207_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr13)), false, CS);
- Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(0), false, CS);
- if (DetCics.resp(lr13) != 0) {
- int to = condition(DetCics.condition(DetCics.resp(lr13)));
+ Storage cw17 = Cobol.commarea(f137_ABNDINFO_REC, 681);
+ AbndprocDfhcommarea ca16 = out_AbndprocDfhcommarea(cw17, 0);
+ String lr15 = task.link(f136_WS_ABEND_PGM.strip(), ca16, 681, cw17.bytes);
+ if ("NORMAL".equals(lr15)) { in_AbndprocDfhcommarea(ca16, cw17, 0); Cobol.commareaBack(cw17, f137_ABNDINFO_REC); }
+ String exit18 = task.abendExit();
+ if (exit18 != null) return GOTO | paragraph(exit18);
+ if (task.ended()) throw abended();
+ Cobol.store(f207_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr15)), false, CS);
+ Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(DetCics.linkResp2(lr15)), false, CS);
+ if (DetCics.resp(lr15) != 0) {
+ int to = condition(DetCics.condition(DetCics.resp(lr15)));
if (to >= 0) return GOTO | to;
}
// DISPLAY 'Failure when attempting to FETCH from the DB2 ' 'CURSOR ACC-CURSOR. With SQL code=' SQLCODE-DISPLAY
Sysout.display("Failure when attempting to FETCH from the DB2 ", "CURSOR ACC-CURSOR. With SQL code=", Cobol.displayText(f99_SQLCODE_DISPLAY, CS));
// EXEC CICS ABEND ABCODE('HRAC') CANCEL NODUMP END-EXEC
- String exit16 = task.abendCancel("HRAC".strip());
- if (exit16 == null) throw new Goback();
- if (true) return GOTO | paragraph(exit16);
+ String exit19 = task.abendCancel("HRAC".strip());
+ if (exit19 == null) throw abended();
+ if (true) return GOTO | paragraph(exit19);
}
// MOVE HV-ACCOUNT-EYECATCHER TO ACCOUNT-EYE-CATCHER OF OUTPUT-DATA
Cobol.move(f3_HV_ACCOUNT_EYECATCHER, f43_ACCOUNT_EYE_CATCHER, CS);
@@ -1429,17 +1131,17 @@ private int p13() {
// EVALUATE SQLCODE
if ((Cobol.num(f18_SQLCODE, CS).compareTo(D923) == 0)) {
// MOVE 'DB2 Connection lost ' TO STORM-DRAIN-CONDITION
- Cobol.move("DB2 Connection lost ", f98_STORM_DRAIN_CONDITION, CS);
+ f98_STORM_DRAIN_CONDITION = "DB2 Connection lost ";
} else if (true) {
// MOVE 'Not Storm Drain ' TO STORM-DRAIN-CONDITION
- Cobol.move("Not Storm Drain ", f98_STORM_DRAIN_CONDITION, CS);
+ f98_STORM_DRAIN_CONDITION = "Not Storm Drain ";
}
// MOVE SQLCODE TO SQLCODE-DISPLAY
Cobol.move(f18_SQLCODE, f99_SQLCODE_DISPLAY, CS);
// IF STORM-DRAIN-CONDITION NOT EQUAL 'Not Storm Drain '
- if (!(Cobol.compare(f98_STORM_DRAIN_CONDITION, "Not Storm Drain ", CS) == 0)) {
+ if (!(f98_STORM_DRAIN_CONDITION.equals("Not Storm Drain "))) {
// DISPLAY 'INQACC: Check-For-Storm-Drain-DB2: Storm ' 'Drain condition (' STORM-DRAIN-CONDITION ') ' 'has been met (' SQLCODE-DISPLAY ').'
- Sysout.display("INQACC: Check-For-Storm-Drain-DB2: Storm ", "Drain condition (", Cobol.displayText(f98_STORM_DRAIN_CONDITION, CS), ") ", "has been met (", Cobol.displayText(f99_SQLCODE_DISPLAY, CS), ").");
+ Sysout.display("INQACC: Check-For-Storm-Drain-DB2: Storm ", "Drain condition (", f98_STORM_DRAIN_CONDITION, ") ", "has been met (", Cobol.displayText(f99_SQLCODE_DISPLAY, CS), ").");
} else {
// CONTINUE
}
@@ -1474,11 +1176,15 @@ private int p16() {
Sysout.display("SQLSTATE=", Cobol.displayText(f36_SQLSTATE, CS), ",SQLERRMC=", Cobol.displayText(f21_SQLERRMC.ref(1, Integer.valueOf(Cobol.num(f20_SQLERRML, CS).intValue())), CS), ",SQLERRD(1)=", Cobol.displayText(f23_SQLERRD.at(1, 4), CS), ",SQLERRD(2)=", Cobol.displayText(f23_SQLERRD.at(2, 4), CS), ",SQLERRD(3)=", Cobol.displayText(f23_SQLERRD.at(3, 4), CS), ",SQLERRD(4)=", Cobol.displayText(f23_SQLERRD.at(4, 4), CS), ",SQLERRD(5)=", Cobol.displayText(f23_SQLERRD.at(5, 4), CS), ",SQLERRD(6)=", Cobol.displayText(f23_SQLERRD.at(6, 4), CS));
} else if ((Cobol.compare(f96_MY_ABEND_CODE, "AFCR", CS) == 0) || (Cobol.compare(f96_MY_ABEND_CODE, "AFCS", CS) == 0) || (Cobol.compare(f96_MY_ABEND_CODE, "AFCT", CS) == 0)) {
// MOVE 'Y' TO WS-STORM-DRAIN
- Cobol.move("Y", f97_WS_STORM_DRAIN, CS);
+ f97_WS_STORM_DRAIN = "Y";
// DISPLAY 'INQACC: Check-For-Storm-Drain-VSAM: Storm ' 'Drain condition (Abend ' MY-ABEND-CODE ') ' 'has been met.'
Sysout.display("INQACC: Check-For-Storm-Drain-VSAM: Storm ", "Drain condition (Abend ", Cobol.displayText(f96_MY_ABEND_CODE, CS), ") ", "has been met.");
// EXEC CICS SYNCPOINT ROLLBACK RESP(WS-CICS-RESP) RESP2(WS-CICS-RESP2) END-EXEC
task.rollback();
+ Cobol.store(f207_EIBRESP, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f38_WS_CICS_RESP, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f39_WS_CICS_RESP2, BigDecimal.valueOf(0), false, CS);
// IF WS-CICS-RESP NOT = DFHRESP(NORMAL)
if (!(Cobol.num(f38_WS_CICS_RESP, CS).compareTo(D0) == 0)) {
// INITIALIZE ABNDINFO-REC
@@ -1521,24 +1227,25 @@ private int p16() {
// STRING 'AH010 -Unable to perform SYNCPOINT ROLLBACK.' DELIMITED BY SIZE, ' Possible integrity issue following VSAM RLS ' DELIMITED BY SIZE, ' abend.'
Cobol.string(f150_ABND_FREEFORM, null, CS, Cobol.StringPart.size("AH010 -Unable to perform SYNCPOINT ROLLBACK.", CS), Cobol.StringPart.size(" Possible integrity issue following VSAM RLS ", CS), Cobol.StringPart.size(" abend.", CS), Cobol.StringPart.size(" EIBRESP=", CS), Cobol.StringPart.size(f147_ABND_RESPCODE), Cobol.StringPart.size(" RESP2=", CS), Cobol.StringPart.size(f148_ABND_RESP2CODE));
// EXEC CICS LINK PROGRAM(WS-ABEND-PGM) COMMAREA(ABNDINFO-REC) END-EXEC
- AbndprocAbndinfoRec ca18 = out_AbndprocAbndinfoRec(f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset());
- String lr17 = task.link(Cobol.text(f136_WS_ABEND_PGM, CS).strip(), ca18, 681);
- if ("NORMAL".equals(lr17)) in_AbndprocAbndinfoRec(ca18, f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset());
- String exit19 = task.abendExit();
- if (exit19 != null) return GOTO | paragraph(exit19);
- if (task.ended()) throw new Goback();
- Cobol.store(f207_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr17)), false, CS);
- Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(0), false, CS);
- if (DetCics.resp(lr17) != 0) {
- int to = condition(DetCics.condition(DetCics.resp(lr17)));
+ Storage cw22 = Cobol.commarea(f137_ABNDINFO_REC, 681);
+ AbndprocDfhcommarea ca21 = out_AbndprocDfhcommarea(cw22, 0);
+ String lr20 = task.link(f136_WS_ABEND_PGM.strip(), ca21, 681, cw22.bytes);
+ if ("NORMAL".equals(lr20)) { in_AbndprocDfhcommarea(ca21, cw22, 0); Cobol.commareaBack(cw22, f137_ABNDINFO_REC); }
+ String exit23 = task.abendExit();
+ if (exit23 != null) return GOTO | paragraph(exit23);
+ if (task.ended()) throw abended();
+ Cobol.store(f207_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr20)), false, CS);
+ Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(DetCics.linkResp2(lr20)), false, CS);
+ if (DetCics.resp(lr20) != 0) {
+ int to = condition(DetCics.condition(DetCics.resp(lr20)));
if (to >= 0) return GOTO | to;
}
// DISPLAY 'INQACC: Unable to perform Syncpoint ' 'Rollback. Possible Integrity issue ' ' following VSAM RLS abend. ' ' RESP CODE=' WS-CICS-RESP ' RESP2
Sysout.display("INQACC: Unable to perform Syncpoint ", "Rollback. Possible Integrity issue ", " following VSAM RLS abend. ", " RESP CODE=", Cobol.displayText(f38_WS_CICS_RESP, CS), " RESP2 CODE=", Cobol.displayText(f39_WS_CICS_RESP2, CS));
// EXEC CICS ABEND ABCODE ('HROL') NODUMP CANCEL END-EXEC
- String exit20 = task.abendCancel("HROL".strip());
- if (exit20 == null) throw new Goback();
- if (true) return GOTO | paragraph(exit20);
+ String exit24 = task.abendCancel("HROL".strip());
+ if (exit24 == null) throw abended();
+ if (true) return GOTO | paragraph(exit24);
}
// MOVE 'N' TO INQACC-SUCCESS
Cobol.move("N", f176_INQACC_SUCCESS, CS);
@@ -1548,7 +1255,7 @@ private int p16() {
if (true) throw new Goback();
}
// IF WS-STORM-DRAIN = 'N'
- if (Cobol.compare(f97_WS_STORM_DRAIN, "N", CS) == 0) {
+ if (f97_WS_STORM_DRAIN.equals("N")) {
// INITIALIZE ABNDINFO-REC
Cobol.moveFigurative(Figurative.ZEROS, Field.packed(f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset() + 0, 15, 0, true), CS);
Cobol.moveFigurative(Figurative.ZEROS, Field.zoned(f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset() + 8, 4, 0, false, false, false), CS);
@@ -1589,22 +1296,23 @@ private int p16() {
// STRING 'AH010 -WVS-STORM-DRAIN=N' DELIMITED BY SIZE, ' EIBRESP=' DELIMITED BY SIZE, ABND-RESPCODE DELIMITED BY SIZE, ' RESP2=' DELIMITED BY SIZE, ABND
Cobol.string(f150_ABND_FREEFORM, null, CS, Cobol.StringPart.size("AH010 -WVS-STORM-DRAIN=N", CS), Cobol.StringPart.size(" EIBRESP=", CS), Cobol.StringPart.size(f147_ABND_RESPCODE), Cobol.StringPart.size(" RESP2=", CS), Cobol.StringPart.size(f148_ABND_RESP2CODE));
// EXEC CICS LINK PROGRAM(WS-ABEND-PGM) COMMAREA(ABNDINFO-REC) END-EXEC
- AbndprocAbndinfoRec ca22 = out_AbndprocAbndinfoRec(f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset());
- String lr21 = task.link(Cobol.text(f136_WS_ABEND_PGM, CS).strip(), ca22, 681);
- if ("NORMAL".equals(lr21)) in_AbndprocAbndinfoRec(ca22, f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset());
- String exit23 = task.abendExit();
- if (exit23 != null) return GOTO | paragraph(exit23);
- if (task.ended()) throw new Goback();
- Cobol.store(f207_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr21)), false, CS);
- Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(0), false, CS);
- if (DetCics.resp(lr21) != 0) {
- int to = condition(DetCics.condition(DetCics.resp(lr21)));
+ Storage cw27 = Cobol.commarea(f137_ABNDINFO_REC, 681);
+ AbndprocDfhcommarea ca26 = out_AbndprocDfhcommarea(cw27, 0);
+ String lr25 = task.link(f136_WS_ABEND_PGM.strip(), ca26, 681, cw27.bytes);
+ if ("NORMAL".equals(lr25)) { in_AbndprocDfhcommarea(ca26, cw27, 0); Cobol.commareaBack(cw27, f137_ABNDINFO_REC); }
+ String exit28 = task.abendExit();
+ if (exit28 != null) return GOTO | paragraph(exit28);
+ if (task.ended()) throw abended();
+ Cobol.store(f207_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr25)), false, CS);
+ Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(DetCics.linkResp2(lr25)), false, CS);
+ if (DetCics.resp(lr25) != 0) {
+ int to = condition(DetCics.condition(DetCics.resp(lr25)));
if (to >= 0) return GOTO | to;
}
// EXEC CICS ABEND ABCODE( MY-ABEND-CODE) NODUMP CANCEL END-EXEC
- String exit24 = task.abendCancel(Cobol.text(f96_MY_ABEND_CODE, CS).strip());
- if (exit24 == null) throw new Goback();
- if (true) return GOTO | paragraph(exit24);
+ String exit29 = task.abendCancel(Cobol.text(f96_MY_ABEND_CODE, CS).strip());
+ if (exit29 == null) throw abended();
+ if (true) return GOTO | paragraph(exit29);
}
return 17;
}
@@ -1664,11 +1372,11 @@ private int p22() {
// MOVE SORTCODE TO HV-ACCOUNT-SORTCODE
Cobol.move(f1_SORTCODE, f5_HV_ACCOUNT_SORTCODE, CS);
// EXEC SQL SELECT ACCOUNT_EYECATCHER, ACCOUNT_CUSTOMER_NUMBER, ACCOUNT_SORTCODE, ACCOUNT_NUMBER, ACCOUNT_TYPE, ACCOUNT_INTEREST_RATE, ACCOUNT_OPENED, AC
- java.util.Map sqlParams25 = new java.util.HashMap<>();
- sqlParams25.put("hvAccountSortcode", DetSql.charIn(f5_HV_ACCOUNT_SORTCODE, CS));
- java.util.Map sqlRow26 = DetSql.selectOne(f15_SQLCA, () -> accountRepository.selectL843Inqacc(sqlParams25), CS);
- if (sqlRow26 != null) {
- DetSql.into(f15_SQLCA, sqlRow26, "XXXXXNXNXXNN", new Field[] {f3_HV_ACCOUNT_EYECATCHER, f4_HV_ACCOUNT_CUST_NO, f5_HV_ACCOUNT_SORTCODE, f6_HV_ACCOUNT_ACC_NO, f7_HV_ACCOUNT_ACC_TYPE, f8_HV_ACCOUNT_INT_RATE, f9_HV_ACCOUNT_OPENED, f10_HV_ACCOUNT_OVERDRAFT_LIM, f11_HV_ACCOUNT_LAST_STMT, f12_HV_ACCOUNT_NEXT_STMT, f13_HV_ACCOUNT_AVAIL_BAL, f14_HV_ACCOUNT_ACTUAL_BAL}, new Field[] {null, null, null, null, null, null, null, null, null, null, null, null}, null, CS);
+ java.util.Map sqlParams30 = new java.util.HashMap<>();
+ sqlParams30.put("hvAccountSortcode", DetSql.charIn(f5_HV_ACCOUNT_SORTCODE, CS));
+ java.util.Map sqlRow31 = DetSql.selectOne(f15_SQLCA, "INQACC:843", () -> accountRepository.selectL843Inqacc(sqlParams30), CS);
+ if (sqlRow31 != null) {
+ DetSql.into(f15_SQLCA, sqlRow31, "XXXXXNXNXXNN", new Field[] {f3_HV_ACCOUNT_EYECATCHER, f4_HV_ACCOUNT_CUST_NO, f5_HV_ACCOUNT_SORTCODE, f6_HV_ACCOUNT_ACC_NO, f7_HV_ACCOUNT_ACC_TYPE, f8_HV_ACCOUNT_INT_RATE, f9_HV_ACCOUNT_OPENED, f10_HV_ACCOUNT_OVERDRAFT_LIM, f11_HV_ACCOUNT_LAST_STMT, f12_HV_ACCOUNT_NEXT_STMT, f13_HV_ACCOUNT_AVAIL_BAL, f14_HV_ACCOUNT_ACTUAL_BAL}, new Field[] {null, null, null, null, null, null, null, null, null, null, null, null}, null, CS);
}
// IF SQLCODE IS NOT EQUAL TO ZERO
if (!(Cobol.num(f18_SQLCODE, CS).compareTo(BigDecimal.ZERO) == 0)) {
@@ -1714,24 +1422,25 @@ private int p22() {
// STRING 'GLAD010 -ACCOUNT NCS ' DELIMITED BY SIZE, NCS-ACC-NO-NAME DELIMITED BY SIZE, ' CANNOT be accessed and DB2 ' DELIMITED BY SIZE, ' SELECT failed
Cobol.string(f150_ABND_FREEFORM, null, CS, Cobol.StringPart.size("GLAD010 -ACCOUNT NCS ", CS), Cobol.StringPart.size(f101_NCS_ACC_NO_NAME), Cobol.StringPart.size(" CANNOT be accessed and DB2 ", CS), Cobol.StringPart.size(" SELECT failed. SQLCODE=", CS), Cobol.StringPart.size(f99_SQLCODE_DISPLAY));
// EXEC CICS LINK PROGRAM(WS-ABEND-PGM) COMMAREA(ABNDINFO-REC) END-EXEC
- AbndprocAbndinfoRec ca28 = out_AbndprocAbndinfoRec(f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset());
- String lr27 = task.link(Cobol.text(f136_WS_ABEND_PGM, CS).strip(), ca28, 681);
- if ("NORMAL".equals(lr27)) in_AbndprocAbndinfoRec(ca28, f137_ABNDINFO_REC.storage(), f137_ABNDINFO_REC.offset());
- String exit29 = task.abendExit();
- if (exit29 != null) return GOTO | paragraph(exit29);
- if (task.ended()) throw new Goback();
- Cobol.store(f207_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr27)), false, CS);
- Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(0), false, CS);
- if (DetCics.resp(lr27) != 0) {
- int to = condition(DetCics.condition(DetCics.resp(lr27)));
+ Storage cw34 = Cobol.commarea(f137_ABNDINFO_REC, 681);
+ AbndprocDfhcommarea ca33 = out_AbndprocDfhcommarea(cw34, 0);
+ String lr32 = task.link(f136_WS_ABEND_PGM.strip(), ca33, 681, cw34.bytes);
+ if ("NORMAL".equals(lr32)) { in_AbndprocDfhcommarea(ca33, cw34, 0); Cobol.commareaBack(cw34, f137_ABNDINFO_REC); }
+ String exit35 = task.abendExit();
+ if (exit35 != null) return GOTO | paragraph(exit35);
+ if (task.ended()) throw abended();
+ Cobol.store(f207_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr32)), false, CS);
+ Cobol.store(f208_EIBRESP2, BigDecimal.valueOf(DetCics.linkResp2(lr32)), false, CS);
+ if (DetCics.resp(lr32) != 0) {
+ int to = condition(DetCics.condition(DetCics.resp(lr32)));
if (to >= 0) return GOTO | to;
}
// DISPLAY 'INQACC - ACCOUNT NCS ' NCS-ACC-NO-NAME ' CANNOT BE ACCESSED AND DB2 SELECT FAILED. SQLCODE=' SQLCODE-DISPLAY
Sysout.display("INQACC - ACCOUNT NCS ", Cobol.displayText(f101_NCS_ACC_NO_NAME, CS), " CANNOT BE ACCESSED AND DB2 SELECT FAILED. SQLCODE=", Cobol.displayText(f99_SQLCODE_DISPLAY, CS));
// EXEC CICS ABEND ABCODE('HNCS') NODUMP CANCEL END-EXEC
- String exit30 = task.abendCancel("HNCS".strip());
- if (exit30 == null) throw new Goback();
- if (true) return GOTO | paragraph(exit30);
+ String exit36 = task.abendCancel("HNCS".strip());
+ if (exit36 == null) throw abended();
+ if (true) return GOTO | paragraph(exit36);
} else {
// MOVE HV-ACCOUNT-EYECATCHER TO ACCOUNT-EYE-CATCHER OF OUTPUT-DATA
Cobol.move(f3_HV_ACCOUNT_EYECATCHER, f43_ACCOUNT_EYE_CATCHER, CS);
diff --git a/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/UpdcustService.java b/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/UpdcustService.java
index ef9a49371..fbf9939aa 100644
--- a/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/UpdcustService.java
+++ b/tests/cobol_mainframe/port_invariance/cics-banking-sample-application-cbsa/java/UpdcustService.java
@@ -38,13 +38,9 @@ public class UpdcustService {
private static final Charset CS = CobolRecords.charset();
private static final int GOTO = 1 << 20;
- private static final BigDecimal D0 = new BigDecimal("0");
- private static final BigDecimal D13 = new BigDecimal("13");
private static final byte[] IMAGE_s_SORTCODE = Base64.getDecoder().decode(String.join("",
"OTg3NjU0"));
- private static final byte[] IMAGE_s_SYSIDERR_RETRY = Base64.getDecoder().decode(String.join("",
- "MDAw"));
private static final byte[] IMAGE_s_WS_CICS_WORK_AREA = Base64.getDecoder().decode(String.join("",
"AAAAAAAAAAA="));
private static final byte[] IMAGE_s_DB2_DATE_REFORMAT = Base64.getDecoder().decode(String.join("",
@@ -96,7 +92,6 @@ public class UpdcustService {
private static final byte[] IMAGE_s_GG_RETURN_CODE = Base64.getDecoder().decode(String.join("",
"AAA="));
private final Storage s_SORTCODE = new Storage(IMAGE_s_SORTCODE.length);
- private final Storage s_SYSIDERR_RETRY = new Storage(IMAGE_s_SYSIDERR_RETRY.length);
private final Storage s_WS_CICS_WORK_AREA = new Storage(IMAGE_s_WS_CICS_WORK_AREA.length);
private final Storage s_DB2_DATE_REFORMAT = new Storage(IMAGE_s_DB2_DATE_REFORMAT.length);
private final Storage s_WS_CUST_DATA = new Storage(IMAGE_s_WS_CUST_DATA.length);
@@ -121,147 +116,47 @@ public class UpdcustService {
private final Storage s_DFHEIBLK = new Storage(IMAGE_s_DFHEIBLK.length);
private final Storage s_GG_RETURN_CODE = new Storage(IMAGE_s_GG_RETURN_CODE.length);
- private Field f100_COMM_BIRTH_YEAR;
- private Field f101_COMM_CREDIT_SCORE;
- private Field f102_COMM_CS_REVIEW_DATE;
- private Field f103_COMM_CS_GROUP;
- private Field f104_COMM_CS_DAY;
- private Field f105_COMM_CS_MONTH;
- private Field f106_COMM_CS_YEAR;
- private Field f107_COMM_UPD_SUCCESS;
- private Field f108_COMM_UPD_FAIL_CD;
- private Field f109_DFHEIBLK;
- private Field f10_FILLER;
- private Field f110_EIBTIME;
- private Field f111_EIBDATE;
- private Field f112_EIBTRNID;
- private Field f113_EIBTASKN;
- private Field f114_EIBTRMID;
- private Field f115_DFHEIGDI;
- private Field f116_EIBCPOSN;
- private Field f117_EIBCALEN;
- private Field f118_EIBAID;
- private Field f119_EIBFN;
- private Field f11_DB2_DATE_REF_DAY;
- private Field f120_EIBRCODE;
- private Field f121_EIBDS;
- private Field f122_EIBREQID;
- private Field f123_EIBRSRCE;
- private Field f124_EIBSYNC;
- private Field f125_EIBFREE;
- private Field f126_EIBRECV;
- private Field f127_EIBSEND;
- private Field f128_EIBATT;
- private Field f129_EIBEOC;
- private Field f12_WS_CUST_DATA;
- private Field f130_EIBFMH;
- private Field f131_EIBCOMPL;
- private Field f132_EIBSIG;
- private Field f133_EIBCONF;
- private Field f134_EIBERR;
- private Field f135_EIBERRCD;
- private Field f136_EIBSYNRB;
- private Field f137_EIBNODAT;
- private Field f138_EIBRESP;
- private Field f139_EIBRESP2;
- private Field f13_CUSTOMER_RECORD;
- private Field f140_EIBRLDBK;
- private Field f141_GG_RETURN_CODE;
- private Field f14_CUSTOMER_EYECATCHER;
- private Field f15_CUSTOMER_KEY;
- private Field f16_CUSTOMER_SORTCODE;
- private Field f17_CUSTOMER_NUMBER;
- private Field f18_CUSTOMER_NAME;
- private Field f19_CUSTOMER_ADDRESS;
- private Field f1_SORTCODE;
- private Field f20_CUSTOMER_DATE_OF_BIRTH;
- private Field f21_CUSTOMER_DOB_GROUP;
- private Field f22_CUSTOMER_BIRTH_DAY;
- private Field f23_CUSTOMER_BIRTH_MONTH;
- private Field f24_CUSTOMER_BIRTH_YEAR;
- private Field f25_CUSTOMER_CREDIT_SCORE;
- private Field f26_CUSTOMER_CS_REVIEW_DATE;
- private Field f27_CUSTOMER_CS_GROUP;
- private Field f28_CUSTOMER_CS_REVIEW_DAY;
- private Field f29_CUSTOMER_CS_REVIEW_MONTH;
- private Field f2_SYSIDERR_RETRY;
- private Field f30_CUSTOMER_CS_REVIEW_YEAR;
- private Field f31_WS_EIBTASKN12;
- private Field f32_WS_SQLCODE_DISP;
- private Field f33_DESIRED_CUST_KEY;
- private Field f34_DESIRED_SORT_CODE;
- private Field f35_DESIRED_CUSTNO;
- private Field f36_WS_CUST_REC_LEN;
- private Field f37_WS_U_TIME;
- private Field f38_WS_ORIG_DATE;
- private Field f39_WS_ORIG_DATE_GRP;
- private Field f3_WS_CICS_WORK_AREA;
- private Field f40_WS_ORIG_DATE_DD;
- private Field f41_FILLER;
- private Field f42_WS_ORIG_DATE_MM;
- private Field f43_FILLER;
- private Field f44_WS_ORIG_DATE_YYYY;
- private Field f45_WS_ORIG_DATE_GRP_X;
- private Field f46_WS_ORIG_DATE_DD_X;
- private Field f47_FILLER;
- private Field f48_WS_ORIG_DATE_MM_X;
- private Field f49_FILLER;
- private Field f4_WS_CICS_RESP;
- private Field f50_WS_ORIG_DATE_YYYY_X;
- private Field f51_REJ_REASON;
- private Field f52_WS_PASSED_DATA;
- private Field f53_WS_TEST_KEY;
- private Field f54_WS_SORT_CODE;
- private Field f55_WS_CUSTOMER_RANGE;
- private Field f56_WS_CUSTOMER_RANGE_TOP;
- private Field f57_WS_CUSTOMER_RANGE_MIDDLE;
- private Field f58_WS_CUSTOMER_RANGE_BOTTOM;
- private Field f59_WS_SORT_DIV;
- private Field f5_WS_CICS_RESP2;
- private Field f60_WS_SORT_DIV1;
- private Field f61_WS_SORT_DIV2;
- private Field f62_WS_SORT_DIV3;
- private Field f63_CUSTOMER_KY;
- private Field f64_REQUIRED_SORT_CODE;
- private Field f65_REQUIRED_ACC_NUM;
- private Field f66_STORM_DRAIN_CONDITION;
- private Field f67_WS_UNSTR_TITLE;
- private Field f68_WS_TITLE_VALID;
- private Field f69_WS_TIME_DATA;
- private Field f6_DB2_DATE_REFORMAT;
- private Field f70_WS_TIME_NOW;
- private Field f71_WS_TIME_NOW_GRP;
- private Field f72_WS_TIME_NOW_GRP_HH;
- private Field f73_WS_TIME_NOW_GRP_MM;
- private Field f74_WS_TIME_NOW_GRP_SS;
- private Field f75_WS_ABEND_PGM;
- private Field f76_ABNDINFO_REC;
- private Field f77_ABND_VSAM_KEY;
- private Field f78_ABND_UTIME_KEY;
- private Field f79_ABND_TASKNO_KEY;
- private Field f7_DB2_DATE_REF_YR;
- private Field f80_ABND_APPLID;
- private Field f81_ABND_TRANID;
- private Field f82_ABND_DATE;
- private Field f83_ABND_TIME;
- private Field f84_ABND_CODE;
- private Field f85_ABND_PROGRAM;
- private Field f86_ABND_RESPCODE;
- private Field f87_ABND_RESP2CODE;
- private Field f88_ABND_SQLCODE;
- private Field f89_ABND_FREEFORM;
- private Field f8_FILLER;
- private Field f90_DFHCOMMAREA;
- private Field f91_COMM_EYE;
- private Field f92_COMM_SCODE;
- private Field f93_COMM_CUSTNO;
- private Field f94_COMM_NAME;
- private Field f95_COMM_ADDR;
- private Field f96_COMM_DOB;
- private Field f97_COMM_DOB_GROUP;
- private Field f98_COMM_BIRTH_DAY;
- private Field f99_COMM_BIRTH_MONTH;
- private Field f9_DB2_DATE_REF_MNTH;
+ private final Field f1_SORTCODE = Field.zoned(s_SORTCODE, 0, 6, 0, false, false, false);
+ private final Field f12_WS_CUST_DATA = Field.group(s_WS_CUST_DATA, 0, 259);
+ private final Field f14_CUSTOMER_EYECATCHER = Field.alphanumeric(s_WS_CUST_DATA, 0, 4, false);
+ private final Field f16_CUSTOMER_SORTCODE = Field.zoned(s_WS_CUST_DATA, 4, 6, 0, false, false, false);
+ private final Field f17_CUSTOMER_NUMBER = Field.zoned(s_WS_CUST_DATA, 10, 10, 0, false, false, false);
+ private final Field f18_CUSTOMER_NAME = Field.alphanumeric(s_WS_CUST_DATA, 20, 60, false);
+ private final Field f19_CUSTOMER_ADDRESS = Field.alphanumeric(s_WS_CUST_DATA, 80, 160, false);
+ private final Field f20_CUSTOMER_DATE_OF_BIRTH = Field.zoned(s_WS_CUST_DATA, 240, 8, 0, false, false, false);
+ private final Field f25_CUSTOMER_CREDIT_SCORE = Field.zoned(s_WS_CUST_DATA, 248, 3, 0, false, false, false);
+ private final Field f26_CUSTOMER_CS_REVIEW_DATE = Field.zoned(s_WS_CUST_DATA, 251, 8, 0, false, false, false);
+ private final Field f33_DESIRED_CUST_KEY = Field.group(s_DESIRED_CUST_KEY, 0, 16);
+ private final Field f34_DESIRED_SORT_CODE = Field.zoned(s_DESIRED_CUST_KEY, 0, 6, 0, false, false, false);
+ private final Field f35_DESIRED_CUSTNO = Field.zoned(s_DESIRED_CUST_KEY, 6, 10, 0, false, false, false);
+ private final Field f36_WS_CUST_REC_LEN = Field.binary(s_WS_CUST_REC_LEN, 0, 4, 0, true, false);
+ private final Field f37_WS_U_TIME = Field.packed(s_WS_U_TIME, 0, 15, 0, true);
+ private final Field f38_WS_ORIG_DATE = Field.alphanumeric(s_WS_ORIG_DATE, 0, 10, false);
+ private final Field f67_WS_UNSTR_TITLE = Field.alphanumeric(s_WS_UNSTR_TITLE, 0, 9, false);
+ private final Field f68_WS_TITLE_VALID = Field.alphanumeric(s_WS_TITLE_VALID, 0, 1, false);
+ private final Field f70_WS_TIME_NOW = Field.zoned(s_WS_TIME_DATA, 0, 6, 0, false, false, false);
+ private final Field f91_COMM_EYE = Field.alphanumeric(s_DFHCOMMAREA, 0, 4, false);
+ private final Field f92_COMM_SCODE = Field.alphanumeric(s_DFHCOMMAREA, 4, 6, false);
+ private final Field f93_COMM_CUSTNO = Field.alphanumeric(s_DFHCOMMAREA, 10, 10, false);
+ private final Field f94_COMM_NAME = Field.alphanumeric(s_DFHCOMMAREA, 20, 60, false);
+ private final Field f95_COMM_ADDR = Field.alphanumeric(s_DFHCOMMAREA, 80, 160, false);
+ private final Field f96_COMM_DOB = Field.zoned(s_DFHCOMMAREA, 240, 8, 0, false, false, false);
+ private final Field f101_COMM_CREDIT_SCORE = Field.zoned(s_DFHCOMMAREA, 248, 3, 0, false, false, false);
+ private final Field f102_COMM_CS_REVIEW_DATE = Field.zoned(s_DFHCOMMAREA, 251, 8, 0, false, false, false);
+ private final Field f107_COMM_UPD_SUCCESS = Field.alphanumeric(s_DFHCOMMAREA, 259, 1, false);
+ private final Field f108_COMM_UPD_FAIL_CD = Field.alphanumeric(s_DFHCOMMAREA, 260, 1, false);
+ private final Field f110_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
+ private final Field f111_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
+ private final Field f112_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
+ private final Field f113_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
+ private final Field f114_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
+ private final Field f117_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
+ private final Field f138_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
+ private final Field f139_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
+ private final Field f141_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
+ private BigDecimal f2_SYSIDERR_RETRY; // SYSIDERR-RETRY PIC 999 DISPLAY
+ private long f4_WS_CICS_RESP; // WS-CICS-RESP PIC S9(8) BINARY
+ private long f5_WS_CICS_RESP2; // WS-CICS-RESP2 PIC S9(8) BINARY
private static OutputDataKey id_OutputData(byte[] rec) {
Storage s = Storage.of(rec);
@@ -278,6 +173,14 @@ private static OutputDataKey id_OutputData(byte[] rec) {
/** Writes the COMMAREA's bytes back into the object the task carries (a LINKed program's is its caller's). */
private Runnable caBack = () -> { };
+ /** The program ends because of an abend: a LINKed program's COMMAREA writes stay its caller's. */
+ private Goback abended() {
+ if (task.level() > 1) {
+ caBack.run();
+ }
+ return new Goback();
+ }
+
@SuppressWarnings("unchecked")
private DetCics.Store store(String name) {
return (DetCics.Store) stores.computeIfAbsent(name, n -> switch (n) {
@@ -309,16 +212,26 @@ private static int paragraph(String name) {
return i;
}
- /** A condition the command neither returned in RESP nor ignored: its HANDLE CONDITION label, or CICS's
- * default action -- an abend, to this program's HANDLE ABEND exit or ending the task. */
+ /** A condition the command did not return in RESP: its HANDLE CONDITION label, or -1 (go on) when IGNOREd
+ * (#4414); else CICS's default action -- -1 for one whose default is to ignore it (#4413: EOC); else the
+ * ERROR label (#4502: IBM, HANDLE CONDITION: "if the default action for such a condition terminates the
+ * task abnormally, and the condition ERROR has been specified, the action for ERROR is taken"); else an
+ * abend, to this program's HANDLE ABEND exit or ending the task. */
private int condition(String cond) {
Integer h = handlers.get(cond);
if (h != null) {
return h;
}
+ if (DetCics.ignoredByDefault(cond)) {
+ return -1;
+ }
+ Integer error = handlers.get("ERROR");
+ if (error != null) {
+ return error;
+ }
String label = task.abendOnCondition(cond);
if (label == null) {
- throw new Goback();
+ throw abended();
}
return paragraph(label);
}
@@ -327,7 +240,7 @@ private static int cx(CicsTask task, int whole) {
return task.eibcalen() == null ? whole : task.eibcalen();
}
- private void in_UpdcustUpdcustCommarea(UpdcustUpdcustCommarea d, Storage s, int base) {
+ private void in_UpdcustDfhcommarea(UpdcustDfhcommarea d, Storage s, int base) {
if (d == null) {
return;
}
@@ -343,7 +256,7 @@ private void in_UpdcustUpdcustCommarea(UpdcustUpdcustCommarea d, Storage s, int
Cobol.move(d.getCommUpdFailCd() == null ? "" : d.getCommUpdFailCd(), Field.alphanumeric(s, base + 260, 1, false), CS);
}
- private void fill_UpdcustUpdcustCommarea(UpdcustUpdcustCommarea d, Storage s, int base) {
+ private void fill_UpdcustDfhcommarea(UpdcustDfhcommarea d, Storage s, int base) {
d.setCommEye(Cobol.text(Field.alphanumeric(s, base + 0, 4, false), CS));
d.setCommScode(Cobol.text(Field.alphanumeric(s, base + 4, 6, false), CS));
d.setCommCustno(Cobol.text(Field.alphanumeric(s, base + 10, 10, false), CS));
@@ -356,12 +269,20 @@ private void fill_UpdcustUpdcustCommarea(UpdcustUpdcustCommarea d, Storage s, in
d.setCommUpdFailCd(Cobol.text(Field.alphanumeric(s, base + 260, 1, false), CS));
}
- private UpdcustUpdcustCommarea out_UpdcustUpdcustCommarea(Storage s, int base) {
- UpdcustUpdcustCommarea d = new UpdcustUpdcustCommarea();
- fill_UpdcustUpdcustCommarea(d, s, base);
+ private UpdcustDfhcommarea out_UpdcustDfhcommarea(Storage s, int base) {
+ UpdcustDfhcommarea d = new UpdcustDfhcommarea();
+ fill_UpdcustDfhcommarea(d, s, base);
return d;
}
+ /** #4270 (X23): DFHCOMMAREA's whole record again, with what the task left in its EIBCALEN bytes. */
+ private void caWhole(byte[] whole) {
+ if (s_DFHCOMMAREA.bytes != whole) {
+ System.arraycopy(s_DFHCOMMAREA.bytes, 0, whole, 0, s_DFHCOMMAREA.bytes.length);
+ s_DFHCOMMAREA.bytes = whole;
+ }
+ }
+
private final OutputDataRepository outputDataRepository;
private final DatasetResolver datasets;
@@ -373,158 +294,11 @@ public UpdcustService(OutputDataRepository outputDataRepository, DatasetResolver
this.datasets = datasets;
this.files = files;
this.clock = clock;
- fields0();
- }
-
- private void fields0() {
- f1_SORTCODE = Field.zoned(s_SORTCODE, 0, 6, 0, false, false, false);
- f2_SYSIDERR_RETRY = Field.zoned(s_SYSIDERR_RETRY, 0, 3, 0, false, false, false);
- f3_WS_CICS_WORK_AREA = Field.group(s_WS_CICS_WORK_AREA, 0, 8);
- f4_WS_CICS_RESP = Field.binary(s_WS_CICS_WORK_AREA, 0, 8, 0, true, false);
- f5_WS_CICS_RESP2 = Field.binary(s_WS_CICS_WORK_AREA, 4, 8, 0, true, false);
- f6_DB2_DATE_REFORMAT = Field.group(s_DB2_DATE_REFORMAT, 0, 10);
- f7_DB2_DATE_REF_YR = Field.zoned(s_DB2_DATE_REFORMAT, 0, 4, 0, false, false, false);
- f8_FILLER = Field.alphanumeric(s_DB2_DATE_REFORMAT, 4, 1, false);
- f9_DB2_DATE_REF_MNTH = Field.zoned(s_DB2_DATE_REFORMAT, 5, 2, 0, false, false, false);
- f10_FILLER = Field.alphanumeric(s_DB2_DATE_REFORMAT, 7, 1, false);
- f11_DB2_DATE_REF_DAY = Field.zoned(s_DB2_DATE_REFORMAT, 8, 2, 0, false, false, false);
- f12_WS_CUST_DATA = Field.group(s_WS_CUST_DATA, 0, 259);
- f13_CUSTOMER_RECORD = Field.group(s_WS_CUST_DATA, 0, 259);
- f14_CUSTOMER_EYECATCHER = Field.alphanumeric(s_WS_CUST_DATA, 0, 4, false);
- f15_CUSTOMER_KEY = Field.group(s_WS_CUST_DATA, 4, 16);
- f16_CUSTOMER_SORTCODE = Field.zoned(s_WS_CUST_DATA, 4, 6, 0, false, false, false);
- f17_CUSTOMER_NUMBER = Field.zoned(s_WS_CUST_DATA, 10, 10, 0, false, false, false);
- f18_CUSTOMER_NAME = Field.alphanumeric(s_WS_CUST_DATA, 20, 60, false);
- f19_CUSTOMER_ADDRESS = Field.alphanumeric(s_WS_CUST_DATA, 80, 160, false);
- f20_CUSTOMER_DATE_OF_BIRTH = Field.zoned(s_WS_CUST_DATA, 240, 8, 0, false, false, false);
- f21_CUSTOMER_DOB_GROUP = Field.group(s_WS_CUST_DATA, 240, 8);
- f22_CUSTOMER_BIRTH_DAY = Field.zoned(s_WS_CUST_DATA, 240, 2, 0, false, false, false);
- f23_CUSTOMER_BIRTH_MONTH = Field.zoned(s_WS_CUST_DATA, 242, 2, 0, false, false, false);
- f24_CUSTOMER_BIRTH_YEAR = Field.zoned(s_WS_CUST_DATA, 244, 4, 0, false, false, false);
- f25_CUSTOMER_CREDIT_SCORE = Field.zoned(s_WS_CUST_DATA, 248, 3, 0, false, false, false);
- f26_CUSTOMER_CS_REVIEW_DATE = Field.zoned(s_WS_CUST_DATA, 251, 8, 0, false, false, false);
- f27_CUSTOMER_CS_GROUP = Field.group(s_WS_CUST_DATA, 251, 8);
- f28_CUSTOMER_CS_REVIEW_DAY = Field.zoned(s_WS_CUST_DATA, 251, 2, 0, false, false, false);
- f29_CUSTOMER_CS_REVIEW_MONTH = Field.zoned(s_WS_CUST_DATA, 253, 2, 0, false, false, false);
- f30_CUSTOMER_CS_REVIEW_YEAR = Field.zoned(s_WS_CUST_DATA, 255, 4, 0, false, false, false);
- f31_WS_EIBTASKN12 = Field.zoned(s_WS_EIBTASKN12, 0, 12, 0, false, false, false);
- f32_WS_SQLCODE_DISP = Field.zoned(s_WS_SQLCODE_DISP, 0, 9, 0, false, false, false);
- f33_DESIRED_CUST_KEY = Field.group(s_DESIRED_CUST_KEY, 0, 16);
- f34_DESIRED_SORT_CODE = Field.zoned(s_DESIRED_CUST_KEY, 0, 6, 0, false, false, false);
- f35_DESIRED_CUSTNO = Field.zoned(s_DESIRED_CUST_KEY, 6, 10, 0, false, false, false);
- f36_WS_CUST_REC_LEN = Field.binary(s_WS_CUST_REC_LEN, 0, 4, 0, true, false);
- f37_WS_U_TIME = Field.packed(s_WS_U_TIME, 0, 15, 0, true);
- f38_WS_ORIG_DATE = Field.alphanumeric(s_WS_ORIG_DATE, 0, 10, false);
- f39_WS_ORIG_DATE_GRP = Field.group(s_WS_ORIG_DATE, 0, 10);
- f40_WS_ORIG_DATE_DD = Field.zoned(s_WS_ORIG_DATE, 0, 2, 0, false, false, false);
- f41_FILLER = Field.alphanumeric(s_WS_ORIG_DATE, 2, 1, false);
- f42_WS_ORIG_DATE_MM = Field.zoned(s_WS_ORIG_DATE, 3, 2, 0, false, false, false);
- f43_FILLER = Field.alphanumeric(s_WS_ORIG_DATE, 5, 1, false);
- f44_WS_ORIG_DATE_YYYY = Field.zoned(s_WS_ORIG_DATE, 6, 4, 0, false, false, false);
- f45_WS_ORIG_DATE_GRP_X = Field.group(s_WS_ORIG_DATE_GRP_X, 0, 10);
- f46_WS_ORIG_DATE_DD_X = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 0, 2, false);
- f47_FILLER = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 2, 1, false);
- f48_WS_ORIG_DATE_MM_X = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 3, 2, false);
- f49_FILLER = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 5, 1, false);
- f50_WS_ORIG_DATE_YYYY_X = Field.alphanumeric(s_WS_ORIG_DATE_GRP_X, 6, 4, false);
- f51_REJ_REASON = Field.alphanumeric(s_REJ_REASON, 0, 2, false);
- f52_WS_PASSED_DATA = Field.group(s_WS_PASSED_DATA, 0, 13);
- f53_WS_TEST_KEY = Field.alphanumeric(s_WS_PASSED_DATA, 0, 4, false);
- f54_WS_SORT_CODE = Field.zoned(s_WS_PASSED_DATA, 4, 6, 0, false, false, false);
- f55_WS_CUSTOMER_RANGE = Field.group(s_WS_PASSED_DATA, 10, 3);
- f56_WS_CUSTOMER_RANGE_TOP = Field.alphanumeric(s_WS_PASSED_DATA, 10, 1, false);
- f57_WS_CUSTOMER_RANGE_MIDDLE = Field.alphanumeric(s_WS_PASSED_DATA, 11, 1, false);
- f58_WS_CUSTOMER_RANGE_BOTTOM = Field.alphanumeric(s_WS_PASSED_DATA, 12, 1, false);
- f59_WS_SORT_DIV = Field.group(s_WS_SORT_DIV, 0, 6);
- f60_WS_SORT_DIV1 = Field.alphanumeric(s_WS_SORT_DIV, 0, 2, false);
- f61_WS_SORT_DIV2 = Field.alphanumeric(s_WS_SORT_DIV, 2, 2, false);
- f62_WS_SORT_DIV3 = Field.alphanumeric(s_WS_SORT_DIV, 4, 2, false);
- f63_CUSTOMER_KY = Field.group(s_CUSTOMER_KY, 0, 14);
- f64_REQUIRED_SORT_CODE = Field.zoned(s_CUSTOMER_KY, 0, 6, 0, false, false, false);
- f65_REQUIRED_ACC_NUM = Field.zoned(s_CUSTOMER_KY, 6, 8, 0, false, false, false);
- f66_STORM_DRAIN_CONDITION = Field.alphanumeric(s_STORM_DRAIN_CONDITION, 0, 20, false);
- f67_WS_UNSTR_TITLE = Field.alphanumeric(s_WS_UNSTR_TITLE, 0, 9, false);
- f68_WS_TITLE_VALID = Field.alphanumeric(s_WS_TITLE_VALID, 0, 1, false);
- f69_WS_TIME_DATA = Field.group(s_WS_TIME_DATA, 0, 6);
- f70_WS_TIME_NOW = Field.zoned(s_WS_TIME_DATA, 0, 6, 0, false, false, false);
- f71_WS_TIME_NOW_GRP = Field.group(s_WS_TIME_DATA, 0, 6);
- f72_WS_TIME_NOW_GRP_HH = Field.zoned(s_WS_TIME_DATA, 0, 2, 0, false, false, false);
- f73_WS_TIME_NOW_GRP_MM = Field.zoned(s_WS_TIME_DATA, 2, 2, 0, false, false, false);
- f74_WS_TIME_NOW_GRP_SS = Field.zoned(s_WS_TIME_DATA, 4, 2, 0, false, false, false);
- f75_WS_ABEND_PGM = Field.alphanumeric(s_WS_ABEND_PGM, 0, 8, false);
- f76_ABNDINFO_REC = Field.group(s_ABNDINFO_REC, 0, 681);
- f77_ABND_VSAM_KEY = Field.group(s_ABNDINFO_REC, 0, 12);
- f78_ABND_UTIME_KEY = Field.packed(s_ABNDINFO_REC, 0, 15, 0, true);
- f79_ABND_TASKNO_KEY = Field.zoned(s_ABNDINFO_REC, 8, 4, 0, false, false, false);
- f80_ABND_APPLID = Field.alphanumeric(s_ABNDINFO_REC, 12, 8, false);
- f81_ABND_TRANID = Field.alphanumeric(s_ABNDINFO_REC, 20, 4, false);
- f82_ABND_DATE = Field.alphanumeric(s_ABNDINFO_REC, 24, 10, false);
- f83_ABND_TIME = Field.alphanumeric(s_ABNDINFO_REC, 34, 8, false);
- f84_ABND_CODE = Field.alphanumeric(s_ABNDINFO_REC, 42, 4, false);
- f85_ABND_PROGRAM = Field.alphanumeric(s_ABNDINFO_REC, 46, 8, false);
- f86_ABND_RESPCODE = Field.zoned(s_ABNDINFO_REC, 54, 8, 0, true, true, true);
- f87_ABND_RESP2CODE = Field.zoned(s_ABNDINFO_REC, 63, 8, 0, true, true, true);
- f88_ABND_SQLCODE = Field.zoned(s_ABNDINFO_REC, 72, 8, 0, true, true, true);
- f89_ABND_FREEFORM = Field.alphanumeric(s_ABNDINFO_REC, 81, 600, false);
- f90_DFHCOMMAREA = Field.group(s_DFHCOMMAREA, 0, 261);
- f91_COMM_EYE = Field.alphanumeric(s_DFHCOMMAREA, 0, 4, false);
- f92_COMM_SCODE = Field.alphanumeric(s_DFHCOMMAREA, 4, 6, false);
- f93_COMM_CUSTNO = Field.alphanumeric(s_DFHCOMMAREA, 10, 10, false);
- f94_COMM_NAME = Field.alphanumeric(s_DFHCOMMAREA, 20, 60, false);
- f95_COMM_ADDR = Field.alphanumeric(s_DFHCOMMAREA, 80, 160, false);
- f96_COMM_DOB = Field.zoned(s_DFHCOMMAREA, 240, 8, 0, false, false, false);
- f97_COMM_DOB_GROUP = Field.group(s_DFHCOMMAREA, 240, 8);
- f98_COMM_BIRTH_DAY = Field.zoned(s_DFHCOMMAREA, 240, 2, 0, false, false, false);
- f99_COMM_BIRTH_MONTH = Field.zoned(s_DFHCOMMAREA, 242, 2, 0, false, false, false);
- f100_COMM_BIRTH_YEAR = Field.zoned(s_DFHCOMMAREA, 244, 4, 0, false, false, false);
- f101_COMM_CREDIT_SCORE = Field.zoned(s_DFHCOMMAREA, 248, 3, 0, false, false, false);
- f102_COMM_CS_REVIEW_DATE = Field.zoned(s_DFHCOMMAREA, 251, 8, 0, false, false, false);
- f103_COMM_CS_GROUP = Field.group(s_DFHCOMMAREA, 251, 8);
- f104_COMM_CS_DAY = Field.zoned(s_DFHCOMMAREA, 251, 2, 0, false, false, false);
- f105_COMM_CS_MONTH = Field.zoned(s_DFHCOMMAREA, 253, 2, 0, false, false, false);
- f106_COMM_CS_YEAR = Field.zoned(s_DFHCOMMAREA, 255, 4, 0, false, false, false);
- f107_COMM_UPD_SUCCESS = Field.alphanumeric(s_DFHCOMMAREA, 259, 1, false);
- f108_COMM_UPD_FAIL_CD = Field.alphanumeric(s_DFHCOMMAREA, 260, 1, false);
- f109_DFHEIBLK = Field.group(s_DFHEIBLK, 0, 85);
- f110_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
- f111_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
- f112_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
- f113_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
- f114_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
- f115_DFHEIGDI = Field.binary(s_DFHEIBLK, 20, 4, 0, true, false);
- f116_EIBCPOSN = Field.binary(s_DFHEIBLK, 22, 4, 0, true, false);
- f117_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
- f118_EIBAID = Field.alphanumeric(s_DFHEIBLK, 26, 1, false);
- f119_EIBFN = Field.alphanumeric(s_DFHEIBLK, 27, 2, false);
- f120_EIBRCODE = Field.alphanumeric(s_DFHEIBLK, 29, 6, false);
- f121_EIBDS = Field.alphanumeric(s_DFHEIBLK, 35, 8, false);
- f122_EIBREQID = Field.alphanumeric(s_DFHEIBLK, 43, 8, false);
- f123_EIBRSRCE = Field.alphanumeric(s_DFHEIBLK, 51, 8, false);
- f124_EIBSYNC = Field.alphanumeric(s_DFHEIBLK, 59, 1, false);
- f125_EIBFREE = Field.alphanumeric(s_DFHEIBLK, 60, 1, false);
- f126_EIBRECV = Field.alphanumeric(s_DFHEIBLK, 61, 1, false);
- f127_EIBSEND = Field.alphanumeric(s_DFHEIBLK, 62, 1, false);
- f128_EIBATT = Field.alphanumeric(s_DFHEIBLK, 63, 1, false);
- f129_EIBEOC = Field.alphanumeric(s_DFHEIBLK, 64, 1, false);
- f130_EIBFMH = Field.alphanumeric(s_DFHEIBLK, 65, 1, false);
- f131_EIBCOMPL = Field.alphanumeric(s_DFHEIBLK, 66, 1, false);
- f132_EIBSIG = Field.alphanumeric(s_DFHEIBLK, 67, 1, false);
- f133_EIBCONF = Field.alphanumeric(s_DFHEIBLK, 68, 1, false);
- f134_EIBERR = Field.alphanumeric(s_DFHEIBLK, 69, 1, false);
- f135_EIBERRCD = Field.alphanumeric(s_DFHEIBLK, 70, 4, false);
- f136_EIBSYNRB = Field.alphanumeric(s_DFHEIBLK, 74, 1, false);
- f137_EIBNODAT = Field.alphanumeric(s_DFHEIBLK, 75, 1, false);
- f138_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
- f139_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
- f140_EIBRLDBK = Field.alphanumeric(s_DFHEIBLK, 84, 1, false);
- f141_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
}
- /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
- * initial storage; RETURN-CODE. */
- public int runProgram() {
+ /** WORKING-STORAGE (and every storage) as its VALUE clauses set it: each entry point starts from here. */
+ private void initialState() {
System.arraycopy(IMAGE_s_SORTCODE, 0, s_SORTCODE.bytes, 0, IMAGE_s_SORTCODE.length);
- System.arraycopy(IMAGE_s_SYSIDERR_RETRY, 0, s_SYSIDERR_RETRY.bytes, 0, IMAGE_s_SYSIDERR_RETRY.length);
System.arraycopy(IMAGE_s_WS_CICS_WORK_AREA, 0, s_WS_CICS_WORK_AREA.bytes, 0, IMAGE_s_WS_CICS_WORK_AREA.length);
System.arraycopy(IMAGE_s_DB2_DATE_REFORMAT, 0, s_DB2_DATE_REFORMAT.bytes, 0, IMAGE_s_DB2_DATE_REFORMAT.length);
System.arraycopy(IMAGE_s_WS_CUST_DATA, 0, s_WS_CUST_DATA.bytes, 0, IMAGE_s_WS_CUST_DATA.length);
@@ -548,6 +322,15 @@ public int runProgram() {
System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ f2_SYSIDERR_RETRY = new BigDecimal("0");
+ f4_WS_CICS_RESP = 0L;
+ f5_WS_CICS_RESP2 = 0L;
+ }
+
+ /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
+ * initial storage; RETURN-CODE. */
+ public int runProgram() {
+ initialState();
performDepth = 0;
try {
perform(0, 11);
@@ -557,44 +340,19 @@ public int runProgram() {
return Cobol.num(f141_GG_RETURN_CODE, CS).intValue();
}
- public void executeUpdcust() {
- runBatch(List.of(), null);
- }
-
/** One task of the program: the EIB and COMMAREA from the task, then the PROCEDURE DIVISION. */
public void runTask(CicsTask task) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
this.task = task;
caBack = () -> { };
handlers.clear();
heldKey.clear();
- System.arraycopy(IMAGE_s_SORTCODE, 0, s_SORTCODE.bytes, 0, IMAGE_s_SORTCODE.length);
- System.arraycopy(IMAGE_s_SYSIDERR_RETRY, 0, s_SYSIDERR_RETRY.bytes, 0, IMAGE_s_SYSIDERR_RETRY.length);
- System.arraycopy(IMAGE_s_WS_CICS_WORK_AREA, 0, s_WS_CICS_WORK_AREA.bytes, 0, IMAGE_s_WS_CICS_WORK_AREA.length);
- System.arraycopy(IMAGE_s_DB2_DATE_REFORMAT, 0, s_DB2_DATE_REFORMAT.bytes, 0, IMAGE_s_DB2_DATE_REFORMAT.length);
- System.arraycopy(IMAGE_s_WS_CUST_DATA, 0, s_WS_CUST_DATA.bytes, 0, IMAGE_s_WS_CUST_DATA.length);
- System.arraycopy(IMAGE_s_WS_EIBTASKN12, 0, s_WS_EIBTASKN12.bytes, 0, IMAGE_s_WS_EIBTASKN12.length);
- System.arraycopy(IMAGE_s_WS_SQLCODE_DISP, 0, s_WS_SQLCODE_DISP.bytes, 0, IMAGE_s_WS_SQLCODE_DISP.length);
- System.arraycopy(IMAGE_s_DESIRED_CUST_KEY, 0, s_DESIRED_CUST_KEY.bytes, 0, IMAGE_s_DESIRED_CUST_KEY.length);
- System.arraycopy(IMAGE_s_WS_CUST_REC_LEN, 0, s_WS_CUST_REC_LEN.bytes, 0, IMAGE_s_WS_CUST_REC_LEN.length);
- System.arraycopy(IMAGE_s_WS_U_TIME, 0, s_WS_U_TIME.bytes, 0, IMAGE_s_WS_U_TIME.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE, 0, s_WS_ORIG_DATE.bytes, 0, IMAGE_s_WS_ORIG_DATE.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE_GRP_X, 0, s_WS_ORIG_DATE_GRP_X.bytes, 0, IMAGE_s_WS_ORIG_DATE_GRP_X.length);
- System.arraycopy(IMAGE_s_REJ_REASON, 0, s_REJ_REASON.bytes, 0, IMAGE_s_REJ_REASON.length);
- System.arraycopy(IMAGE_s_WS_PASSED_DATA, 0, s_WS_PASSED_DATA.bytes, 0, IMAGE_s_WS_PASSED_DATA.length);
- System.arraycopy(IMAGE_s_WS_SORT_DIV, 0, s_WS_SORT_DIV.bytes, 0, IMAGE_s_WS_SORT_DIV.length);
- System.arraycopy(IMAGE_s_CUSTOMER_KY, 0, s_CUSTOMER_KY.bytes, 0, IMAGE_s_CUSTOMER_KY.length);
- System.arraycopy(IMAGE_s_STORM_DRAIN_CONDITION, 0, s_STORM_DRAIN_CONDITION.bytes, 0, IMAGE_s_STORM_DRAIN_CONDITION.length);
- System.arraycopy(IMAGE_s_WS_UNSTR_TITLE, 0, s_WS_UNSTR_TITLE.bytes, 0, IMAGE_s_WS_UNSTR_TITLE.length);
- System.arraycopy(IMAGE_s_WS_TITLE_VALID, 0, s_WS_TITLE_VALID.bytes, 0, IMAGE_s_WS_TITLE_VALID.length);
- System.arraycopy(IMAGE_s_WS_TIME_DATA, 0, s_WS_TIME_DATA.bytes, 0, IMAGE_s_WS_TIME_DATA.length);
- System.arraycopy(IMAGE_s_WS_ABEND_PGM, 0, s_WS_ABEND_PGM.bytes, 0, IMAGE_s_WS_ABEND_PGM.length);
- System.arraycopy(IMAGE_s_ABNDINFO_REC, 0, s_ABNDINFO_REC.bytes, 0, IMAGE_s_ABNDINFO_REC.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
Cobol.move(task.transid(), f112_EIBTRNID, CS);
+ Cobol.move(task.termid() == null ? "" : task.termid(), f114_EIBTRMID, CS);
+ Cobol.store(f113_EIBTASKN, BigDecimal.valueOf(task.taskNumber()), false, CS);
java.time.LocalDateTime now = task.now();
Cobol.store(f111_EIBDATE, BigDecimal.valueOf((now.getYear() - 1900) * 1000L + now.getDayOfYear()), false, CS);
Cobol.store(f110_EIBTIME, BigDecimal.valueOf(now.getHour() * 10000L + now.getMinute() * 100L + now.getSecond()), false, CS);
@@ -603,16 +361,52 @@ public void runTask(CicsTask task) {
}
Object ca = task.hasCommarea() ? task.commarea(Object.class) : null;
int calen = 0;
- if (ca instanceof UpdcustUpdcustCommarea x) {
- in_UpdcustUpdcustCommarea(x, s_DFHCOMMAREA, 0);
- caBack = () -> fill_UpdcustUpdcustCommarea(x, s_DFHCOMMAREA, 0);
+ if (ca instanceof UpdcustDfhcommarea x) {
+ in_UpdcustDfhcommarea(x, s_DFHCOMMAREA, 0);
+ caBack = () -> fill_UpdcustDfhcommarea(x, s_DFHCOMMAREA, 0);
calen = cx(task, 261);
}
+ s_DFHCOMMAREA.beyond = null;
+ if (ca instanceof byte[] cb0) {
+ byte[] cb = DetCics.commareaIn(cb0, CS);
+ System.arraycopy(cb, 0, s_DFHCOMMAREA.bytes, 0, Math.min(cb.length, s_DFHCOMMAREA.bytes.length));
+ if (cb.length > s_DFHCOMMAREA.bytes.length) {
+ s_DFHCOMMAREA.beyond = java.util.Arrays.copyOfRange(cb, s_DFHCOMMAREA.bytes.length, cb.length);
+ }
+ calen = cx(task, cb.length);
+ }
+ byte[] raw = task.linkArea();
+ if (raw != null) {
+ System.arraycopy(raw, 0, s_DFHCOMMAREA.bytes, 0, Math.min(raw.length, s_DFHCOMMAREA.bytes.length));
+ int keep = s_DFHCOMMAREA.bytes.length;
+ s_DFHCOMMAREA.beyond = raw.length > keep ? java.util.Arrays.copyOfRange(raw, keep, raw.length) : null;
+ Runnable typed = caBack;
+ caBack = () -> { typed.run(); System.arraycopy(s_DFHCOMMAREA.bytes, 0, raw, 0, Math.min(raw.length, keep)); if (s_DFHCOMMAREA.beyond != null) { System.arraycopy(s_DFHCOMMAREA.beyond, 0, raw, keep, raw.length - keep); } };
+ }
+ byte[] caWhole = null;
+ if (task.exactCommarea() && calen < s_DFHCOMMAREA.bytes.length) {
+ caWhole = s_DFHCOMMAREA.bytes;
+ s_DFHCOMMAREA.bytes = java.util.Arrays.copyOf(caWhole, calen);
+ Runnable typed = caBack;
+ byte[] whole = caWhole;
+ caBack = () -> { caWhole(whole); typed.run(); };
+ }
Cobol.store(f117_EIBCALEN, BigDecimal.valueOf(calen), false, CS);
try {
- perform(0, 11);
- } catch (Goback g) {
- // RETURN / XCTL / an abend ended the program
+ try {
+ perform(0, 11);
+ } catch (Goback g) {
+ // RETURN / XCTL / an abend ended the program
+ }
+ } catch (IndexOutOfBoundsException e) {
+ if (caWhole == null) {
+ throw e;
+ }
+ throw new DetCics.PastFrom("COMMAREA past EIBCALEN (" + calen + " bytes): not modelled");
+ } finally {
+ if (caWhole != null) {
+ caWhole(caWhole);
+ }
}
if (!task.ended()) {
caBack.run();
@@ -620,11 +414,15 @@ public void runTask(CicsTask task) {
}
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
- public UpdcustUpdcustCommarea handleLink(UpdcustUpdcustCommarea request) {
- throw new UnsupportedOperationException("handleLink: this port runs as runTask");
+ public UpdcustDfhcommarea handleLink(UpdcustDfhcommarea request) {
+ CicsTask.Region region = CicsTask.region();
+ CicsTask task = region.linked("UPDCUST", request);
+ region.run(task, "UPDCUST", this::runTask);
+ return request;
}
@@ -644,32 +442,9 @@ private static Dd dd(List dds, String name) {
/** The batch entry. */
public int runBatch(List dds, String parm) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
- System.arraycopy(IMAGE_s_SORTCODE, 0, s_SORTCODE.bytes, 0, IMAGE_s_SORTCODE.length);
- System.arraycopy(IMAGE_s_SYSIDERR_RETRY, 0, s_SYSIDERR_RETRY.bytes, 0, IMAGE_s_SYSIDERR_RETRY.length);
- System.arraycopy(IMAGE_s_WS_CICS_WORK_AREA, 0, s_WS_CICS_WORK_AREA.bytes, 0, IMAGE_s_WS_CICS_WORK_AREA.length);
- System.arraycopy(IMAGE_s_DB2_DATE_REFORMAT, 0, s_DB2_DATE_REFORMAT.bytes, 0, IMAGE_s_DB2_DATE_REFORMAT.length);
- System.arraycopy(IMAGE_s_WS_CUST_DATA, 0, s_WS_CUST_DATA.bytes, 0, IMAGE_s_WS_CUST_DATA.length);
- System.arraycopy(IMAGE_s_WS_EIBTASKN12, 0, s_WS_EIBTASKN12.bytes, 0, IMAGE_s_WS_EIBTASKN12.length);
- System.arraycopy(IMAGE_s_WS_SQLCODE_DISP, 0, s_WS_SQLCODE_DISP.bytes, 0, IMAGE_s_WS_SQLCODE_DISP.length);
- System.arraycopy(IMAGE_s_DESIRED_CUST_KEY, 0, s_DESIRED_CUST_KEY.bytes, 0, IMAGE_s_DESIRED_CUST_KEY.length);
- System.arraycopy(IMAGE_s_WS_CUST_REC_LEN, 0, s_WS_CUST_REC_LEN.bytes, 0, IMAGE_s_WS_CUST_REC_LEN.length);
- System.arraycopy(IMAGE_s_WS_U_TIME, 0, s_WS_U_TIME.bytes, 0, IMAGE_s_WS_U_TIME.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE, 0, s_WS_ORIG_DATE.bytes, 0, IMAGE_s_WS_ORIG_DATE.length);
- System.arraycopy(IMAGE_s_WS_ORIG_DATE_GRP_X, 0, s_WS_ORIG_DATE_GRP_X.bytes, 0, IMAGE_s_WS_ORIG_DATE_GRP_X.length);
- System.arraycopy(IMAGE_s_REJ_REASON, 0, s_REJ_REASON.bytes, 0, IMAGE_s_REJ_REASON.length);
- System.arraycopy(IMAGE_s_WS_PASSED_DATA, 0, s_WS_PASSED_DATA.bytes, 0, IMAGE_s_WS_PASSED_DATA.length);
- System.arraycopy(IMAGE_s_WS_SORT_DIV, 0, s_WS_SORT_DIV.bytes, 0, IMAGE_s_WS_SORT_DIV.length);
- System.arraycopy(IMAGE_s_CUSTOMER_KY, 0, s_CUSTOMER_KY.bytes, 0, IMAGE_s_CUSTOMER_KY.length);
- System.arraycopy(IMAGE_s_STORM_DRAIN_CONDITION, 0, s_STORM_DRAIN_CONDITION.bytes, 0, IMAGE_s_STORM_DRAIN_CONDITION.length);
- System.arraycopy(IMAGE_s_WS_UNSTR_TITLE, 0, s_WS_UNSTR_TITLE.bytes, 0, IMAGE_s_WS_UNSTR_TITLE.length);
- System.arraycopy(IMAGE_s_WS_TITLE_VALID, 0, s_WS_TITLE_VALID.bytes, 0, IMAGE_s_WS_TITLE_VALID.length);
- System.arraycopy(IMAGE_s_WS_TIME_DATA, 0, s_WS_TIME_DATA.bytes, 0, IMAGE_s_WS_TIME_DATA.length);
- System.arraycopy(IMAGE_s_WS_ABEND_PGM, 0, s_WS_ABEND_PGM.bytes, 0, IMAGE_s_WS_ABEND_PGM.length);
- System.arraycopy(IMAGE_s_ABNDINFO_REC, 0, s_ABNDINFO_REC.bytes, 0, IMAGE_s_ABNDINFO_REC.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ initialState();
try {
perform(0, 11);
} catch (Goback g) {
@@ -678,6 +453,7 @@ public int runBatch(List dds, String parm) {
return Cobol.num(f141_GG_RETURN_CODE, CS).intValue();
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
@@ -849,14 +625,14 @@ private int p4() {
}
Cobol.store(f138_EIBRESP, BigDecimal.valueOf(read1.resp()), false, CS);
Cobol.store(f139_EIBRESP2, BigDecimal.valueOf(read1.resp2()), false, CS);
- Cobol.store(f4_WS_CICS_RESP, BigDecimal.valueOf(read1.resp()), false, CS);
- Cobol.store(f5_WS_CICS_RESP2, BigDecimal.valueOf(read1.resp2()), false, CS);
+ f4_WS_CICS_RESP = Cobol.binary(BigDecimal.valueOf(read1.resp()), 8, true, false, CS);
+ f5_WS_CICS_RESP2 = Cobol.binary(BigDecimal.valueOf(read1.resp2()), 8, true, false, CS);
// IF WS-CICS-RESP NOT = DFHRESP(NORMAL)
- if (!(Cobol.num(f4_WS_CICS_RESP, CS).compareTo(D0) == 0)) {
+ if (!(f4_WS_CICS_RESP == 0L)) {
// MOVE 'N' TO COMM-UPD-SUCCESS
Cobol.move("N", f107_COMM_UPD_SUCCESS, CS);
// IF WS-CICS-RESP = DFHRESP(NOTFND)
- if (Cobol.num(f4_WS_CICS_RESP, CS).compareTo(D13) == 0) {
+ if (f4_WS_CICS_RESP == 13L) {
// MOVE '1' TO COMM-UPD-FAIL-CD
Cobol.move("1", f108_COMM_UPD_FAIL_CD, CS);
} else {
@@ -899,10 +675,10 @@ private int p4() {
int resp4 = task.rewrite("CUSTOMER".strip(), () -> store("CUSTOMER".strip()).store(DetCics.bytes(f12_WS_CUST_DATA, Cobol.num(f36_WS_CUST_REC_LEN, CS).intValue())));
Cobol.store(f138_EIBRESP, BigDecimal.valueOf(resp4), false, CS);
Cobol.store(f139_EIBRESP2, BigDecimal.valueOf(0), false, CS);
- Cobol.store(f4_WS_CICS_RESP, BigDecimal.valueOf(resp4), false, CS);
- Cobol.store(f5_WS_CICS_RESP2, BigDecimal.valueOf(0), false, CS);
+ f4_WS_CICS_RESP = Cobol.binary(BigDecimal.valueOf(resp4), 8, true, false, CS);
+ f5_WS_CICS_RESP2 = Cobol.binary(BigDecimal.valueOf(0), 8, true, false, CS);
// IF WS-CICS-RESP NOT = DFHRESP(NORMAL)
- if (!(Cobol.num(f4_WS_CICS_RESP, CS).compareTo(D0) == 0)) {
+ if (!(f4_WS_CICS_RESP == 0L)) {
// MOVE 'N' TO COMM-UPD-SUCCESS
Cobol.move("N", f107_COMM_UPD_SUCCESS, CS);
// MOVE '3' TO COMM-UPD-FAIL-CD
diff --git a/tests/cobol_mainframe/port_invariance/cics-genapp/java/Lgapvs01Service.java b/tests/cobol_mainframe/port_invariance/cics-genapp/java/Lgapvs01Service.java
index 83bc67128..ba174bbba 100644
--- a/tests/cobol_mainframe/port_invariance/cics-genapp/java/Lgapvs01Service.java
+++ b/tests/cobol_mainframe/port_invariance/cics-genapp/java/Lgapvs01Service.java
@@ -36,16 +36,8 @@ public class Lgapvs01Service {
private static final BigDecimal D0 = new BigDecimal("0");
private static final BigDecimal D91 = new BigDecimal("91");
- private static final byte[] IMAGE_s_WS_RESP = Base64.getDecoder().decode(String.join("",
- "AAAAAA=="));
private static final byte[] IMAGE_s_WS_RESP2 = Base64.getDecoder().decode(String.join("",
"AAAAAA=="));
- private static final byte[] IMAGE_s_WS_COMM_LEN = Base64.getDecoder().decode(String.join("",
- "AAAAAA=="));
- private static final byte[] IMAGE_s_WS_STARTCODE = Base64.getDecoder().decode(String.join("",
- "ICA="));
- private static final byte[] IMAGE_s_WS_SYSID = Base64.getDecoder().decode(String.join("",
- "ICAgIA=="));
private static final byte[] IMAGE_s_WS_COMMAREA_LEN = Base64.getDecoder().decode(String.join("",
"AAA="));
private static final byte[] IMAGE_s_WF_POLICY_INFO = Base64.getDecoder().decode(String.join("",
@@ -60,8 +52,6 @@ public class Lgapvs01Service {
"ICAgICAgICAgICAgICAgIExHQVBWUzAxIFBOVU09ICAgICAgICAgICBDTlVNPSAgICAgICAgICAgV3JpdGUgZmlsZSBLU0RTUE9MWSBSRVNQPSAgICAgICBSRVNQMj0gICAgICA="));
private static final byte[] IMAGE_s_CA_ERROR_MSG = Base64.getDecoder().decode(String.join("",
"Q09NTUFSRUE9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"));
- private static final byte[] IMAGE_s_EYECATCHER = Base64.getDecoder().decode(String.join("",
- "UHJvZ3JhbSBMR0FQVlMwMQ=="));
private static final byte[] IMAGE_s_DFHCOMMAREA = Base64.getDecoder().decode(String.join("",
"ICAgICAgMDAwMDAwMDAwMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg",
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg",
@@ -176,11 +166,7 @@ public class Lgapvs01Service {
"AAAADAAAAAwgICAgAAAADCAgICAAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAAAAAAAAAIA=="));
private static final byte[] IMAGE_s_GG_RETURN_CODE = Base64.getDecoder().decode(String.join("",
"AAA="));
- private final Storage s_WS_RESP = new Storage(IMAGE_s_WS_RESP.length);
private final Storage s_WS_RESP2 = new Storage(IMAGE_s_WS_RESP2.length);
- private final Storage s_WS_COMM_LEN = new Storage(IMAGE_s_WS_COMM_LEN.length);
- private final Storage s_WS_STARTCODE = new Storage(IMAGE_s_WS_STARTCODE.length);
- private final Storage s_WS_SYSID = new Storage(IMAGE_s_WS_SYSID.length);
private final Storage s_WS_COMMAREA_LEN = new Storage(IMAGE_s_WS_COMMAREA_LEN.length);
private final Storage s_WF_POLICY_INFO = new Storage(IMAGE_s_WF_POLICY_INFO.length);
private final Storage s_WS_ABSTIME = new Storage(IMAGE_s_WS_ABSTIME.length);
@@ -188,185 +174,83 @@ public class Lgapvs01Service {
private final Storage s_WS_DATE = new Storage(IMAGE_s_WS_DATE.length);
private final Storage s_ERROR_MSG = new Storage(IMAGE_s_ERROR_MSG.length);
private final Storage s_CA_ERROR_MSG = new Storage(IMAGE_s_CA_ERROR_MSG.length);
- private final Storage s_EYECATCHER = new Storage(IMAGE_s_EYECATCHER.length);
private final Storage s_DFHCOMMAREA = new Storage(IMAGE_s_DFHCOMMAREA.length);
private final Storage s_DFHEIBLK = new Storage(IMAGE_s_DFHEIBLK.length);
private final Storage s_GG_RETURN_CODE = new Storage(IMAGE_s_GG_RETURN_CODE.length);
- private Field f100_CA_H_VALUE;
- private Field f101_CA_H_HOUSE_NAME;
- private Field f102_CA_H_HOUSE_NUMBER;
- private Field f103_CA_H_POSTCODE;
- private Field f104_CA_H_FILLER;
- private Field f105_CA_MOTOR;
- private Field f106_CA_M_MAKE;
- private Field f107_CA_M_MODEL;
- private Field f108_CA_M_VALUE;
- private Field f109_CA_M_REGNUMBER;
- private Field f10_WF_CUSTOMER_NUM;
- private Field f110_CA_M_COLOUR;
- private Field f111_CA_M_CC;
- private Field f112_CA_M_MANUFACTURED;
- private Field f113_CA_M_PREMIUM;
- private Field f114_CA_M_ACCIDENTS;
- private Field f115_CA_M_FILLER;
- private Field f116_CA_COMMERCIAL;
- private Field f117_CA_B_ADDRESS;
- private Field f118_CA_B_POSTCODE;
- private Field f119_CA_B_LATITUDE;
- private Field f11_WF_POLICY_NUM;
- private Field f120_CA_B_LONGITUDE;
- private Field f121_CA_B_CUSTOMER;
- private Field f122_CA_B_PROPTYPE;
- private Field f123_CA_B_FIREPERIL;
- private Field f124_CA_B_FIREPREMIUM;
- private Field f125_CA_B_CRIMEPERIL;
- private Field f126_CA_B_CRIMEPREMIUM;
- private Field f127_CA_B_FLOODPERIL;
- private Field f128_CA_B_FLOODPREMIUM;
- private Field f129_CA_B_WEATHERPERIL;
- private Field f12_WF_POLICY_DATA;
- private Field f130_CA_B_WEATHERPREMIUM;
- private Field f131_CA_B_STATUS;
- private Field f132_CA_B_REJECTREASON;
- private Field f133_CA_B_FILLER;
- private Field f134_CA_CLAIM;
- private Field f135_CA_C_NUM;
- private Field f136_CA_C_DATE;
- private Field f137_CA_C_PAID;
- private Field f138_CA_C_VALUE;
- private Field f139_CA_C_CAUSE;
- private Field f13_WF_C_POLICY_DATA;
- private Field f140_CA_C_OBSERVATIONS;
- private Field f141_CA_C_FILLER;
- private Field f142_DFHEIBLK;
- private Field f143_EIBTIME;
- private Field f144_EIBDATE;
- private Field f145_EIBTRNID;
- private Field f146_EIBTASKN;
- private Field f147_EIBTRMID;
- private Field f148_DFHEIGDI;
- private Field f149_EIBCPOSN;
- private Field f14_WF_B_POSTCODE;
- private Field f150_EIBCALEN;
- private Field f151_EIBAID;
- private Field f152_EIBFN;
- private Field f153_EIBRCODE;
- private Field f154_EIBDS;
- private Field f155_EIBREQID;
- private Field f156_EIBRSRCE;
- private Field f157_EIBSYNC;
- private Field f158_EIBFREE;
- private Field f159_EIBRECV;
- private Field f15_WF_B_STATUS;
- private Field f160_EIBSEND;
- private Field f161_EIBATT;
- private Field f162_EIBEOC;
- private Field f163_EIBFMH;
- private Field f164_EIBCOMPL;
- private Field f165_EIBSIG;
- private Field f166_EIBCONF;
- private Field f167_EIBERR;
- private Field f168_EIBERRCD;
- private Field f169_EIBSYNRB;
- private Field f16_WF_B_CUSTOMER;
- private Field f170_EIBNODAT;
- private Field f171_EIBRESP;
- private Field f172_EIBRESP2;
- private Field f173_EIBRLDBK;
- private Field f174_GG_RETURN_CODE;
- private Field f17_WF_E_POLICY_DATA;
- private Field f18_WF_E_WITH_PROFITS;
- private Field f19_WF_E_EQUITIES;
- private Field f1_WS_RESP;
- private Field f20_WF_E_MANAGED_FUND;
- private Field f21_WF_E_FUND_NAME;
- private Field f22_WF_E_LIFE_ASSURED;
- private Field f23_WF_H_POLICY_DATA;
- private Field f24_WF_H_PROPERTY_TYPE;
- private Field f25_WF_H_BEDROOMS;
- private Field f26_WF_H_VALUE;
- private Field f27_WF_H_POSTCODE;
- private Field f28_WF_H_HOUSE_NAME;
- private Field f29_WF_M_POLICY_DATA;
- private Field f2_WS_RESP2;
- private Field f30_WF_M_MAKE;
- private Field f31_WF_M_MODEL;
- private Field f32_WF_M_VALUE;
- private Field f33_WF_M_REGNUMBER;
- private Field f34_WS_ABSTIME;
- private Field f35_WS_TIME;
- private Field f36_WS_DATE;
- private Field f37_ERROR_MSG;
- private Field f38_EM_DATE;
- private Field f39_FILLER;
- private Field f3_WS_COMM_LEN;
- private Field f40_EM_TIME;
- private Field f41_FILLER;
- private Field f42_EM_VARIABLE;
- private Field f43_FILLER;
- private Field f44_EM_POLNUM;
- private Field f45_FILLER;
- private Field f46_EM_CUSNUM;
- private Field f47_FILLER;
- private Field f48_FILLER;
- private Field f49_EM_RESPRC;
- private Field f4_WS_STARTCODE;
- private Field f50_FILLER;
- private Field f51_EM_RESP2RC;
- private Field f52_CA_ERROR_MSG;
- private Field f53_FILLER;
- private Field f54_CA_DATA;
- private Field f55_EYECATCHER;
- private Field f56_DFHCOMMAREA;
- private Field f57_CA_REQUEST_ID;
- private Field f58_CA_RETURN_CODE;
- private Field f59_CA_CUSTOMER_NUM;
- private Field f5_WS_SYSID;
- private Field f60_CA_REQUEST_SPECIFIC;
- private Field f61_CA_CUSTOMER_REQUEST;
- private Field f62_CA_FIRST_NAME;
- private Field f63_CA_LAST_NAME;
- private Field f64_CA_DOB;
- private Field f65_CA_HOUSE_NAME;
- private Field f66_CA_HOUSE_NUM;
- private Field f67_CA_POSTCODE;
- private Field f68_CA_NUM_POLICIES;
- private Field f69_CA_PHONE_MOBILE;
- private Field f6_WS_COMMAREA_LEN;
- private Field f70_CA_PHONE_HOME;
- private Field f71_CA_EMAIL_ADDRESS;
- private Field f72_CA_POLICY_DATA;
- private Field f73_CA_CUSTSECR_REQUEST;
- private Field f74_CA_CUSTSECR_PASS;
- private Field f75_CA_CUSTSECR_COUNT;
- private Field f76_CA_CUSTSECR_STATE;
- private Field f77_CA_CUSTSECR_DATA;
- private Field f78_CA_POLICY_REQUEST;
- private Field f79_CA_POLICY_NUM;
- private Field f7_WF_POLICY_INFO;
- private Field f80_CA_POLICY_COMMON;
- private Field f81_CA_ISSUE_DATE;
- private Field f82_CA_EXPIRY_DATE;
- private Field f83_CA_LASTCHANGED;
- private Field f84_CA_BROKERID;
- private Field f85_CA_BROKERSREF;
- private Field f86_CA_PAYMENT;
- private Field f87_CA_POLICY_SPECIFIC;
- private Field f88_CA_ENDOWMENT;
- private Field f89_CA_E_WITH_PROFITS;
- private Field f8_WF_POLICY_KEY;
- private Field f90_CA_E_EQUITIES;
- private Field f91_CA_E_MANAGED_FUND;
- private Field f92_CA_E_FUND_NAME;
- private Field f93_CA_E_TERM;
- private Field f94_CA_E_SUM_ASSURED;
- private Field f95_CA_E_LIFE_ASSURED;
- private Field f96_CA_E_PADDING_DATA;
- private Field f97_CA_HOUSE;
- private Field f98_CA_H_PROPERTY_TYPE;
- private Field f99_CA_H_BEDROOMS;
- private Field f9_WF_REQUEST_ID;
+ private final Field f2_WS_RESP2 = Field.binary(s_WS_RESP2, 0, 8, 0, true, false);
+ private final Field f6_WS_COMMAREA_LEN = Field.binary(s_WS_COMMAREA_LEN, 0, 4, 0, true, false);
+ private final Field f7_WF_POLICY_INFO = Field.group(s_WF_POLICY_INFO, 0, 64);
+ private final Field f8_WF_POLICY_KEY = Field.group(s_WF_POLICY_INFO, 0, 21);
+ private final Field f9_WF_REQUEST_ID = Field.alphanumeric(s_WF_POLICY_INFO, 0, 1, false);
+ private final Field f10_WF_CUSTOMER_NUM = Field.alphanumeric(s_WF_POLICY_INFO, 1, 10, false);
+ private final Field f11_WF_POLICY_NUM = Field.alphanumeric(s_WF_POLICY_INFO, 11, 10, false);
+ private final Field f12_WF_POLICY_DATA = Field.alphanumeric(s_WF_POLICY_INFO, 21, 43, false);
+ private final Field f14_WF_B_POSTCODE = Field.alphanumeric(s_WF_POLICY_INFO, 21, 8, false);
+ private final Field f15_WF_B_STATUS = Field.zoned(s_WF_POLICY_INFO, 29, 4, 0, false, false, false);
+ private final Field f16_WF_B_CUSTOMER = Field.alphanumeric(s_WF_POLICY_INFO, 33, 31, false);
+ private final Field f18_WF_E_WITH_PROFITS = Field.alphanumeric(s_WF_POLICY_INFO, 21, 1, false);
+ private final Field f19_WF_E_EQUITIES = Field.alphanumeric(s_WF_POLICY_INFO, 22, 1, false);
+ private final Field f20_WF_E_MANAGED_FUND = Field.alphanumeric(s_WF_POLICY_INFO, 23, 1, false);
+ private final Field f21_WF_E_FUND_NAME = Field.alphanumeric(s_WF_POLICY_INFO, 24, 10, false);
+ private final Field f22_WF_E_LIFE_ASSURED = Field.alphanumeric(s_WF_POLICY_INFO, 34, 30, false);
+ private final Field f24_WF_H_PROPERTY_TYPE = Field.alphanumeric(s_WF_POLICY_INFO, 21, 15, false);
+ private final Field f25_WF_H_BEDROOMS = Field.zoned(s_WF_POLICY_INFO, 36, 3, 0, false, false, false);
+ private final Field f26_WF_H_VALUE = Field.zoned(s_WF_POLICY_INFO, 39, 8, 0, false, false, false);
+ private final Field f27_WF_H_POSTCODE = Field.alphanumeric(s_WF_POLICY_INFO, 47, 8, false);
+ private final Field f28_WF_H_HOUSE_NAME = Field.alphanumeric(s_WF_POLICY_INFO, 55, 9, false);
+ private final Field f30_WF_M_MAKE = Field.alphanumeric(s_WF_POLICY_INFO, 21, 15, false);
+ private final Field f31_WF_M_MODEL = Field.alphanumeric(s_WF_POLICY_INFO, 36, 15, false);
+ private final Field f32_WF_M_VALUE = Field.zoned(s_WF_POLICY_INFO, 51, 6, 0, false, false, false);
+ private final Field f33_WF_M_REGNUMBER = Field.alphanumeric(s_WF_POLICY_INFO, 57, 7, false);
+ private final Field f34_WS_ABSTIME = Field.binary(s_WS_ABSTIME, 0, 8, 0, true, false);
+ private final Field f35_WS_TIME = Field.alphanumeric(s_WS_TIME, 0, 8, false);
+ private final Field f36_WS_DATE = Field.alphanumeric(s_WS_DATE, 0, 10, false);
+ private final Field f37_ERROR_MSG = Field.group(s_ERROR_MSG, 0, 101);
+ private final Field f38_EM_DATE = Field.alphanumeric(s_ERROR_MSG, 0, 8, false);
+ private final Field f40_EM_TIME = Field.alphanumeric(s_ERROR_MSG, 9, 6, false);
+ private final Field f44_EM_POLNUM = Field.alphanumeric(s_ERROR_MSG, 30, 10, false);
+ private final Field f46_EM_CUSNUM = Field.alphanumeric(s_ERROR_MSG, 46, 10, false);
+ private final Field f49_EM_RESPRC = Field.numericEdited(s_ERROR_MSG, 82, 6, "+99999", false);
+ private final Field f51_EM_RESP2RC = Field.numericEdited(s_ERROR_MSG, 95, 6, "+99999", false);
+ private final Field f52_CA_ERROR_MSG = Field.group(s_CA_ERROR_MSG, 0, 99);
+ private final Field f54_CA_DATA = Field.alphanumeric(s_CA_ERROR_MSG, 9, 90, false);
+ private final Field f56_DFHCOMMAREA = Field.group(s_DFHCOMMAREA, 0, 32500);
+ private final Field f57_CA_REQUEST_ID = Field.alphanumeric(s_DFHCOMMAREA, 0, 6, false);
+ private final Field f58_CA_RETURN_CODE = Field.zoned(s_DFHCOMMAREA, 6, 2, 0, false, false, false);
+ private final Field f59_CA_CUSTOMER_NUM = Field.zoned(s_DFHCOMMAREA, 8, 10, 0, false, false, false);
+ private final Field f79_CA_POLICY_NUM = Field.zoned(s_DFHCOMMAREA, 18, 10, 0, false, false, false);
+ private final Field f89_CA_E_WITH_PROFITS = Field.alphanumeric(s_DFHCOMMAREA, 100, 1, false);
+ private final Field f90_CA_E_EQUITIES = Field.alphanumeric(s_DFHCOMMAREA, 101, 1, false);
+ private final Field f91_CA_E_MANAGED_FUND = Field.alphanumeric(s_DFHCOMMAREA, 102, 1, false);
+ private final Field f92_CA_E_FUND_NAME = Field.alphanumeric(s_DFHCOMMAREA, 103, 10, false);
+ private final Field f95_CA_E_LIFE_ASSURED = Field.alphanumeric(s_DFHCOMMAREA, 121, 31, false);
+ private final Field f98_CA_H_PROPERTY_TYPE = Field.alphanumeric(s_DFHCOMMAREA, 100, 15, false);
+ private final Field f99_CA_H_BEDROOMS = Field.zoned(s_DFHCOMMAREA, 115, 3, 0, false, false, false);
+ private final Field f100_CA_H_VALUE = Field.zoned(s_DFHCOMMAREA, 118, 8, 0, false, false, false);
+ private final Field f101_CA_H_HOUSE_NAME = Field.alphanumeric(s_DFHCOMMAREA, 126, 20, false);
+ private final Field f103_CA_H_POSTCODE = Field.alphanumeric(s_DFHCOMMAREA, 150, 8, false);
+ private final Field f106_CA_M_MAKE = Field.alphanumeric(s_DFHCOMMAREA, 100, 15, false);
+ private final Field f107_CA_M_MODEL = Field.alphanumeric(s_DFHCOMMAREA, 115, 15, false);
+ private final Field f108_CA_M_VALUE = Field.zoned(s_DFHCOMMAREA, 130, 6, 0, false, false, false);
+ private final Field f109_CA_M_REGNUMBER = Field.alphanumeric(s_DFHCOMMAREA, 136, 7, false);
+ private final Field f118_CA_B_POSTCODE = Field.alphanumeric(s_DFHCOMMAREA, 355, 8, false);
+ private final Field f121_CA_B_CUSTOMER = Field.alphanumeric(s_DFHCOMMAREA, 385, 255, false);
+ private final Field f131_CA_B_STATUS = Field.zoned(s_DFHCOMMAREA, 943, 4, 0, false, false, false);
+ private final Field f143_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
+ private final Field f144_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
+ private final Field f145_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
+ private final Field f146_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
+ private final Field f147_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
+ private final Field f150_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
+ private final Field f171_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
+ private final Field f172_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
+ private final Field f174_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
+ private long f1_WS_RESP; // WS-RESP PIC S9(8) BINARY
+ private long f3_WS_COMM_LEN; // WS-COMM-LEN PIC S9(8) BINARY
+ private String f4_WS_STARTCODE; // WS-STARTCODE PIC XX
+ private String f5_WS_SYSID; // WS-SYSID PIC X(4)
+ private String f55_EYECATCHER; // EYECATCHER PIC X(16)
private static WfPolicyInfoKey id_WfPolicyInfo(byte[] rec) {
Storage s = Storage.of(rec);
@@ -384,6 +268,14 @@ private static WfPolicyInfoKey id_WfPolicyInfo(byte[] rec) {
/** Writes the COMMAREA's bytes back into the object the task carries (a LINKed program's is its caller's). */
private Runnable caBack = () -> { };
+ /** The program ends because of an abend: a LINKed program's COMMAREA writes stay its caller's. */
+ private Goback abended() {
+ if (task.level() > 1) {
+ caBack.run();
+ }
+ return new Goback();
+ }
+
@SuppressWarnings("unchecked")
private DetCics.Store store(String name) {
return (DetCics.Store) stores.computeIfAbsent(name, n -> switch (n) {
@@ -406,16 +298,26 @@ private static int paragraph(String name) {
return i;
}
- /** A condition the command neither returned in RESP nor ignored: its HANDLE CONDITION label, or CICS's
- * default action -- an abend, to this program's HANDLE ABEND exit or ending the task. */
+ /** A condition the command did not return in RESP: its HANDLE CONDITION label, or -1 (go on) when IGNOREd
+ * (#4414); else CICS's default action -- -1 for one whose default is to ignore it (#4413: EOC); else the
+ * ERROR label (#4502: IBM, HANDLE CONDITION: "if the default action for such a condition terminates the
+ * task abnormally, and the condition ERROR has been specified, the action for ERROR is taken"); else an
+ * abend, to this program's HANDLE ABEND exit or ending the task. */
private int condition(String cond) {
Integer h = handlers.get(cond);
if (h != null) {
return h;
}
+ if (DetCics.ignoredByDefault(cond)) {
+ return -1;
+ }
+ Integer error = handlers.get("ERROR");
+ if (error != null) {
+ return error;
+ }
String label = task.abendOnCondition(cond);
if (label == null) {
- throw new Goback();
+ throw abended();
}
return paragraph(label);
}
@@ -424,20 +326,20 @@ private static int cx(CicsTask task, int whole) {
return task.eibcalen() == null ? whole : task.eibcalen();
}
- private void in_Lgacdb01CaErrorMsg(Lgacdb01CaErrorMsg d, Storage s, int base) {
+ private void in_LgstsqDfhcommarea(LgstsqDfhcommarea d, Storage s, int base) {
if (d == null) {
return;
}
Cobol.move(d.getCaData() == null ? "" : d.getCaData(), Field.alphanumeric(s, base + 9, 90, false), CS);
}
- private void fill_Lgacdb01CaErrorMsg(Lgacdb01CaErrorMsg d, Storage s, int base) {
+ private void fill_LgstsqDfhcommarea(LgstsqDfhcommarea d, Storage s, int base) {
d.setCaData(Cobol.text(Field.alphanumeric(s, base + 9, 90, false), CS));
}
- private Lgacdb01CaErrorMsg out_Lgacdb01CaErrorMsg(Storage s, int base) {
- Lgacdb01CaErrorMsg d = new Lgacdb01CaErrorMsg();
- fill_Lgacdb01CaErrorMsg(d, s, base);
+ private LgstsqDfhcommarea out_LgstsqDfhcommarea(Storage s, int base) {
+ LgstsqDfhcommarea d = new LgstsqDfhcommarea();
+ fill_LgstsqDfhcommarea(d, s, base);
return d;
}
@@ -464,199 +366,24 @@ private Lgapvs01Dfhcommarea out_Lgapvs01Dfhcommarea(Storage s, int base) {
return d;
}
+ /** #4270 (X23): DFHCOMMAREA's whole record again, with what the task left in its EIBCALEN bytes. */
+ private void caWhole(byte[] whole) {
+ if (s_DFHCOMMAREA.bytes != whole) {
+ System.arraycopy(s_DFHCOMMAREA.bytes, 0, whole, 0, s_DFHCOMMAREA.bytes.length);
+ s_DFHCOMMAREA.bytes = whole;
+ }
+ }
+
private final WfPolicyInfoRepository wfPolicyInfoRepository;
public Lgapvs01Service(WfPolicyInfoRepository wfPolicyInfoRepository) {
this.wfPolicyInfoRepository = wfPolicyInfoRepository;
- fields0();
- }
-
- private void fields0() {
- f1_WS_RESP = Field.binary(s_WS_RESP, 0, 8, 0, true, false);
- f2_WS_RESP2 = Field.binary(s_WS_RESP2, 0, 8, 0, true, false);
- f3_WS_COMM_LEN = Field.binary(s_WS_COMM_LEN, 0, 8, 0, true, false);
- f4_WS_STARTCODE = Field.alphanumeric(s_WS_STARTCODE, 0, 2, false);
- f5_WS_SYSID = Field.alphanumeric(s_WS_SYSID, 0, 4, false);
- f6_WS_COMMAREA_LEN = Field.binary(s_WS_COMMAREA_LEN, 0, 4, 0, true, false);
- f7_WF_POLICY_INFO = Field.group(s_WF_POLICY_INFO, 0, 64);
- f8_WF_POLICY_KEY = Field.group(s_WF_POLICY_INFO, 0, 21);
- f9_WF_REQUEST_ID = Field.alphanumeric(s_WF_POLICY_INFO, 0, 1, false);
- f10_WF_CUSTOMER_NUM = Field.alphanumeric(s_WF_POLICY_INFO, 1, 10, false);
- f11_WF_POLICY_NUM = Field.alphanumeric(s_WF_POLICY_INFO, 11, 10, false);
- f12_WF_POLICY_DATA = Field.alphanumeric(s_WF_POLICY_INFO, 21, 43, false);
- f13_WF_C_POLICY_DATA = Field.group(s_WF_POLICY_INFO, 21, 43);
- f14_WF_B_POSTCODE = Field.alphanumeric(s_WF_POLICY_INFO, 21, 8, false);
- f15_WF_B_STATUS = Field.zoned(s_WF_POLICY_INFO, 29, 4, 0, false, false, false);
- f16_WF_B_CUSTOMER = Field.alphanumeric(s_WF_POLICY_INFO, 33, 31, false);
- f17_WF_E_POLICY_DATA = Field.group(s_WF_POLICY_INFO, 21, 43);
- f18_WF_E_WITH_PROFITS = Field.alphanumeric(s_WF_POLICY_INFO, 21, 1, false);
- f19_WF_E_EQUITIES = Field.alphanumeric(s_WF_POLICY_INFO, 22, 1, false);
- f20_WF_E_MANAGED_FUND = Field.alphanumeric(s_WF_POLICY_INFO, 23, 1, false);
- f21_WF_E_FUND_NAME = Field.alphanumeric(s_WF_POLICY_INFO, 24, 10, false);
- f22_WF_E_LIFE_ASSURED = Field.alphanumeric(s_WF_POLICY_INFO, 34, 30, false);
- f23_WF_H_POLICY_DATA = Field.group(s_WF_POLICY_INFO, 21, 43);
- f24_WF_H_PROPERTY_TYPE = Field.alphanumeric(s_WF_POLICY_INFO, 21, 15, false);
- f25_WF_H_BEDROOMS = Field.zoned(s_WF_POLICY_INFO, 36, 3, 0, false, false, false);
- f26_WF_H_VALUE = Field.zoned(s_WF_POLICY_INFO, 39, 8, 0, false, false, false);
- f27_WF_H_POSTCODE = Field.alphanumeric(s_WF_POLICY_INFO, 47, 8, false);
- f28_WF_H_HOUSE_NAME = Field.alphanumeric(s_WF_POLICY_INFO, 55, 9, false);
- f29_WF_M_POLICY_DATA = Field.group(s_WF_POLICY_INFO, 21, 43);
- f30_WF_M_MAKE = Field.alphanumeric(s_WF_POLICY_INFO, 21, 15, false);
- f31_WF_M_MODEL = Field.alphanumeric(s_WF_POLICY_INFO, 36, 15, false);
- f32_WF_M_VALUE = Field.zoned(s_WF_POLICY_INFO, 51, 6, 0, false, false, false);
- f33_WF_M_REGNUMBER = Field.alphanumeric(s_WF_POLICY_INFO, 57, 7, false);
- f34_WS_ABSTIME = Field.binary(s_WS_ABSTIME, 0, 8, 0, true, false);
- f35_WS_TIME = Field.alphanumeric(s_WS_TIME, 0, 8, false);
- f36_WS_DATE = Field.alphanumeric(s_WS_DATE, 0, 10, false);
- f37_ERROR_MSG = Field.group(s_ERROR_MSG, 0, 101);
- f38_EM_DATE = Field.alphanumeric(s_ERROR_MSG, 0, 8, false);
- f39_FILLER = Field.alphanumeric(s_ERROR_MSG, 8, 1, false);
- f40_EM_TIME = Field.alphanumeric(s_ERROR_MSG, 9, 6, false);
- f41_FILLER = Field.alphanumeric(s_ERROR_MSG, 15, 9, false);
- f42_EM_VARIABLE = Field.group(s_ERROR_MSG, 24, 77);
- f43_FILLER = Field.alphanumeric(s_ERROR_MSG, 24, 6, false);
- f44_EM_POLNUM = Field.alphanumeric(s_ERROR_MSG, 30, 10, false);
- f45_FILLER = Field.alphanumeric(s_ERROR_MSG, 40, 6, false);
- f46_EM_CUSNUM = Field.alphanumeric(s_ERROR_MSG, 46, 10, false);
- f47_FILLER = Field.alphanumeric(s_ERROR_MSG, 56, 20, false);
- f48_FILLER = Field.alphanumeric(s_ERROR_MSG, 76, 6, false);
- f49_EM_RESPRC = Field.numericEdited(s_ERROR_MSG, 82, 6, "+99999", false);
- f50_FILLER = Field.alphanumeric(s_ERROR_MSG, 88, 7, false);
- f51_EM_RESP2RC = Field.numericEdited(s_ERROR_MSG, 95, 6, "+99999", false);
- f52_CA_ERROR_MSG = Field.group(s_CA_ERROR_MSG, 0, 99);
- f53_FILLER = Field.alphanumeric(s_CA_ERROR_MSG, 0, 9, false);
- f54_CA_DATA = Field.alphanumeric(s_CA_ERROR_MSG, 9, 90, false);
- f55_EYECATCHER = Field.alphanumeric(s_EYECATCHER, 0, 16, false);
- f56_DFHCOMMAREA = Field.group(s_DFHCOMMAREA, 0, 32500);
- f57_CA_REQUEST_ID = Field.alphanumeric(s_DFHCOMMAREA, 0, 6, false);
- f58_CA_RETURN_CODE = Field.zoned(s_DFHCOMMAREA, 6, 2, 0, false, false, false);
- f59_CA_CUSTOMER_NUM = Field.zoned(s_DFHCOMMAREA, 8, 10, 0, false, false, false);
- f60_CA_REQUEST_SPECIFIC = Field.alphanumeric(s_DFHCOMMAREA, 18, 32482, false);
- f61_CA_CUSTOMER_REQUEST = Field.group(s_DFHCOMMAREA, 18, 32482);
- f62_CA_FIRST_NAME = Field.alphanumeric(s_DFHCOMMAREA, 18, 10, false);
- f63_CA_LAST_NAME = Field.alphanumeric(s_DFHCOMMAREA, 28, 20, false);
- f64_CA_DOB = Field.alphanumeric(s_DFHCOMMAREA, 48, 10, false);
- f65_CA_HOUSE_NAME = Field.alphanumeric(s_DFHCOMMAREA, 58, 20, false);
- f66_CA_HOUSE_NUM = Field.alphanumeric(s_DFHCOMMAREA, 78, 4, false);
- f67_CA_POSTCODE = Field.alphanumeric(s_DFHCOMMAREA, 82, 8, false);
- f68_CA_NUM_POLICIES = Field.zoned(s_DFHCOMMAREA, 90, 3, 0, false, false, false);
- f69_CA_PHONE_MOBILE = Field.alphanumeric(s_DFHCOMMAREA, 93, 20, false);
- f70_CA_PHONE_HOME = Field.alphanumeric(s_DFHCOMMAREA, 113, 20, false);
- f71_CA_EMAIL_ADDRESS = Field.alphanumeric(s_DFHCOMMAREA, 133, 100, false);
- f72_CA_POLICY_DATA = Field.alphanumeric(s_DFHCOMMAREA, 233, 32267, false);
- f73_CA_CUSTSECR_REQUEST = Field.group(s_DFHCOMMAREA, 18, 32482);
- f74_CA_CUSTSECR_PASS = Field.alphanumeric(s_DFHCOMMAREA, 18, 32, false);
- f75_CA_CUSTSECR_COUNT = Field.alphanumeric(s_DFHCOMMAREA, 50, 4, false);
- f76_CA_CUSTSECR_STATE = Field.alphanumeric(s_DFHCOMMAREA, 54, 1, false);
- f77_CA_CUSTSECR_DATA = Field.alphanumeric(s_DFHCOMMAREA, 55, 32445, false);
- f78_CA_POLICY_REQUEST = Field.group(s_DFHCOMMAREA, 18, 32482);
- f79_CA_POLICY_NUM = Field.zoned(s_DFHCOMMAREA, 18, 10, 0, false, false, false);
- f80_CA_POLICY_COMMON = Field.group(s_DFHCOMMAREA, 28, 72);
- f81_CA_ISSUE_DATE = Field.alphanumeric(s_DFHCOMMAREA, 28, 10, false);
- f82_CA_EXPIRY_DATE = Field.alphanumeric(s_DFHCOMMAREA, 38, 10, false);
- f83_CA_LASTCHANGED = Field.alphanumeric(s_DFHCOMMAREA, 48, 26, false);
- f84_CA_BROKERID = Field.zoned(s_DFHCOMMAREA, 74, 10, 0, false, false, false);
- f85_CA_BROKERSREF = Field.alphanumeric(s_DFHCOMMAREA, 84, 10, false);
- f86_CA_PAYMENT = Field.zoned(s_DFHCOMMAREA, 94, 6, 0, false, false, false);
- f87_CA_POLICY_SPECIFIC = Field.alphanumeric(s_DFHCOMMAREA, 100, 32400, false);
- f88_CA_ENDOWMENT = Field.group(s_DFHCOMMAREA, 100, 32400);
- f89_CA_E_WITH_PROFITS = Field.alphanumeric(s_DFHCOMMAREA, 100, 1, false);
- f90_CA_E_EQUITIES = Field.alphanumeric(s_DFHCOMMAREA, 101, 1, false);
- f91_CA_E_MANAGED_FUND = Field.alphanumeric(s_DFHCOMMAREA, 102, 1, false);
- f92_CA_E_FUND_NAME = Field.alphanumeric(s_DFHCOMMAREA, 103, 10, false);
- f93_CA_E_TERM = Field.zoned(s_DFHCOMMAREA, 113, 2, 0, false, false, false);
- f94_CA_E_SUM_ASSURED = Field.zoned(s_DFHCOMMAREA, 115, 6, 0, false, false, false);
- f95_CA_E_LIFE_ASSURED = Field.alphanumeric(s_DFHCOMMAREA, 121, 31, false);
- f96_CA_E_PADDING_DATA = Field.alphanumeric(s_DFHCOMMAREA, 152, 32348, false);
- f97_CA_HOUSE = Field.group(s_DFHCOMMAREA, 100, 32400);
- f98_CA_H_PROPERTY_TYPE = Field.alphanumeric(s_DFHCOMMAREA, 100, 15, false);
- f99_CA_H_BEDROOMS = Field.zoned(s_DFHCOMMAREA, 115, 3, 0, false, false, false);
- f100_CA_H_VALUE = Field.zoned(s_DFHCOMMAREA, 118, 8, 0, false, false, false);
- f101_CA_H_HOUSE_NAME = Field.alphanumeric(s_DFHCOMMAREA, 126, 20, false);
- f102_CA_H_HOUSE_NUMBER = Field.alphanumeric(s_DFHCOMMAREA, 146, 4, false);
- f103_CA_H_POSTCODE = Field.alphanumeric(s_DFHCOMMAREA, 150, 8, false);
- f104_CA_H_FILLER = Field.alphanumeric(s_DFHCOMMAREA, 158, 32342, false);
- f105_CA_MOTOR = Field.group(s_DFHCOMMAREA, 100, 32400);
- f106_CA_M_MAKE = Field.alphanumeric(s_DFHCOMMAREA, 100, 15, false);
- f107_CA_M_MODEL = Field.alphanumeric(s_DFHCOMMAREA, 115, 15, false);
- f108_CA_M_VALUE = Field.zoned(s_DFHCOMMAREA, 130, 6, 0, false, false, false);
- f109_CA_M_REGNUMBER = Field.alphanumeric(s_DFHCOMMAREA, 136, 7, false);
- f110_CA_M_COLOUR = Field.alphanumeric(s_DFHCOMMAREA, 143, 8, false);
- f111_CA_M_CC = Field.zoned(s_DFHCOMMAREA, 151, 4, 0, false, false, false);
- f112_CA_M_MANUFACTURED = Field.alphanumeric(s_DFHCOMMAREA, 155, 10, false);
- f113_CA_M_PREMIUM = Field.zoned(s_DFHCOMMAREA, 165, 6, 0, false, false, false);
- f114_CA_M_ACCIDENTS = Field.zoned(s_DFHCOMMAREA, 171, 6, 0, false, false, false);
- f115_CA_M_FILLER = Field.alphanumeric(s_DFHCOMMAREA, 177, 32323, false);
- f116_CA_COMMERCIAL = Field.group(s_DFHCOMMAREA, 100, 32400);
- f117_CA_B_ADDRESS = Field.alphanumeric(s_DFHCOMMAREA, 100, 255, false);
- f118_CA_B_POSTCODE = Field.alphanumeric(s_DFHCOMMAREA, 355, 8, false);
- f119_CA_B_LATITUDE = Field.alphanumeric(s_DFHCOMMAREA, 363, 11, false);
- f120_CA_B_LONGITUDE = Field.alphanumeric(s_DFHCOMMAREA, 374, 11, false);
- f121_CA_B_CUSTOMER = Field.alphanumeric(s_DFHCOMMAREA, 385, 255, false);
- f122_CA_B_PROPTYPE = Field.alphanumeric(s_DFHCOMMAREA, 640, 255, false);
- f123_CA_B_FIREPERIL = Field.zoned(s_DFHCOMMAREA, 895, 4, 0, false, false, false);
- f124_CA_B_FIREPREMIUM = Field.zoned(s_DFHCOMMAREA, 899, 8, 0, false, false, false);
- f125_CA_B_CRIMEPERIL = Field.zoned(s_DFHCOMMAREA, 907, 4, 0, false, false, false);
- f126_CA_B_CRIMEPREMIUM = Field.zoned(s_DFHCOMMAREA, 911, 8, 0, false, false, false);
- f127_CA_B_FLOODPERIL = Field.zoned(s_DFHCOMMAREA, 919, 4, 0, false, false, false);
- f128_CA_B_FLOODPREMIUM = Field.zoned(s_DFHCOMMAREA, 923, 8, 0, false, false, false);
- f129_CA_B_WEATHERPERIL = Field.zoned(s_DFHCOMMAREA, 931, 4, 0, false, false, false);
- f130_CA_B_WEATHERPREMIUM = Field.zoned(s_DFHCOMMAREA, 935, 8, 0, false, false, false);
- f131_CA_B_STATUS = Field.zoned(s_DFHCOMMAREA, 943, 4, 0, false, false, false);
- f132_CA_B_REJECTREASON = Field.alphanumeric(s_DFHCOMMAREA, 947, 255, false);
- f133_CA_B_FILLER = Field.alphanumeric(s_DFHCOMMAREA, 1202, 31298, false);
- f134_CA_CLAIM = Field.group(s_DFHCOMMAREA, 100, 32400);
- f135_CA_C_NUM = Field.zoned(s_DFHCOMMAREA, 100, 10, 0, false, false, false);
- f136_CA_C_DATE = Field.alphanumeric(s_DFHCOMMAREA, 110, 10, false);
- f137_CA_C_PAID = Field.zoned(s_DFHCOMMAREA, 120, 8, 0, false, false, false);
- f138_CA_C_VALUE = Field.zoned(s_DFHCOMMAREA, 128, 8, 0, false, false, false);
- f139_CA_C_CAUSE = Field.alphanumeric(s_DFHCOMMAREA, 136, 255, false);
- f140_CA_C_OBSERVATIONS = Field.alphanumeric(s_DFHCOMMAREA, 391, 255, false);
- f141_CA_C_FILLER = Field.alphanumeric(s_DFHCOMMAREA, 646, 31854, false);
- f142_DFHEIBLK = Field.group(s_DFHEIBLK, 0, 85);
- f143_EIBTIME = Field.packed(s_DFHEIBLK, 0, 7, 0, true);
- f144_EIBDATE = Field.packed(s_DFHEIBLK, 4, 7, 0, true);
- f145_EIBTRNID = Field.alphanumeric(s_DFHEIBLK, 8, 4, false);
- f146_EIBTASKN = Field.packed(s_DFHEIBLK, 12, 7, 0, true);
- f147_EIBTRMID = Field.alphanumeric(s_DFHEIBLK, 16, 4, false);
- f148_DFHEIGDI = Field.binary(s_DFHEIBLK, 20, 4, 0, true, false);
- f149_EIBCPOSN = Field.binary(s_DFHEIBLK, 22, 4, 0, true, false);
- f150_EIBCALEN = Field.binary(s_DFHEIBLK, 24, 4, 0, true, false);
- f151_EIBAID = Field.alphanumeric(s_DFHEIBLK, 26, 1, false);
- f152_EIBFN = Field.alphanumeric(s_DFHEIBLK, 27, 2, false);
- f153_EIBRCODE = Field.alphanumeric(s_DFHEIBLK, 29, 6, false);
- f154_EIBDS = Field.alphanumeric(s_DFHEIBLK, 35, 8, false);
- f155_EIBREQID = Field.alphanumeric(s_DFHEIBLK, 43, 8, false);
- f156_EIBRSRCE = Field.alphanumeric(s_DFHEIBLK, 51, 8, false);
- f157_EIBSYNC = Field.alphanumeric(s_DFHEIBLK, 59, 1, false);
- f158_EIBFREE = Field.alphanumeric(s_DFHEIBLK, 60, 1, false);
- f159_EIBRECV = Field.alphanumeric(s_DFHEIBLK, 61, 1, false);
- f160_EIBSEND = Field.alphanumeric(s_DFHEIBLK, 62, 1, false);
- f161_EIBATT = Field.alphanumeric(s_DFHEIBLK, 63, 1, false);
- f162_EIBEOC = Field.alphanumeric(s_DFHEIBLK, 64, 1, false);
- f163_EIBFMH = Field.alphanumeric(s_DFHEIBLK, 65, 1, false);
- f164_EIBCOMPL = Field.alphanumeric(s_DFHEIBLK, 66, 1, false);
- f165_EIBSIG = Field.alphanumeric(s_DFHEIBLK, 67, 1, false);
- f166_EIBCONF = Field.alphanumeric(s_DFHEIBLK, 68, 1, false);
- f167_EIBERR = Field.alphanumeric(s_DFHEIBLK, 69, 1, false);
- f168_EIBERRCD = Field.alphanumeric(s_DFHEIBLK, 70, 4, false);
- f169_EIBSYNRB = Field.alphanumeric(s_DFHEIBLK, 74, 1, false);
- f170_EIBNODAT = Field.alphanumeric(s_DFHEIBLK, 75, 1, false);
- f171_EIBRESP = Field.binary(s_DFHEIBLK, 76, 8, 0, true, false);
- f172_EIBRESP2 = Field.binary(s_DFHEIBLK, 80, 8, 0, true, false);
- f173_EIBRLDBK = Field.alphanumeric(s_DFHEIBLK, 84, 1, false);
- f174_GG_RETURN_CODE = Field.binary(s_GG_RETURN_CODE, 0, 4, 0, true, false);
}
- /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
- * initial storage; RETURN-CODE. */
- public int runProgram() {
- System.arraycopy(IMAGE_s_WS_RESP, 0, s_WS_RESP.bytes, 0, IMAGE_s_WS_RESP.length);
+ /** WORKING-STORAGE (and every storage) as its VALUE clauses set it: each entry point starts from here. */
+ private void initialState() {
System.arraycopy(IMAGE_s_WS_RESP2, 0, s_WS_RESP2.bytes, 0, IMAGE_s_WS_RESP2.length);
- System.arraycopy(IMAGE_s_WS_COMM_LEN, 0, s_WS_COMM_LEN.bytes, 0, IMAGE_s_WS_COMM_LEN.length);
- System.arraycopy(IMAGE_s_WS_STARTCODE, 0, s_WS_STARTCODE.bytes, 0, IMAGE_s_WS_STARTCODE.length);
- System.arraycopy(IMAGE_s_WS_SYSID, 0, s_WS_SYSID.bytes, 0, IMAGE_s_WS_SYSID.length);
System.arraycopy(IMAGE_s_WS_COMMAREA_LEN, 0, s_WS_COMMAREA_LEN.bytes, 0, IMAGE_s_WS_COMMAREA_LEN.length);
System.arraycopy(IMAGE_s_WF_POLICY_INFO, 0, s_WF_POLICY_INFO.bytes, 0, IMAGE_s_WF_POLICY_INFO.length);
System.arraycopy(IMAGE_s_WS_ABSTIME, 0, s_WS_ABSTIME.bytes, 0, IMAGE_s_WS_ABSTIME.length);
@@ -664,12 +391,22 @@ public int runProgram() {
System.arraycopy(IMAGE_s_WS_DATE, 0, s_WS_DATE.bytes, 0, IMAGE_s_WS_DATE.length);
System.arraycopy(IMAGE_s_ERROR_MSG, 0, s_ERROR_MSG.bytes, 0, IMAGE_s_ERROR_MSG.length);
System.arraycopy(IMAGE_s_CA_ERROR_MSG, 0, s_CA_ERROR_MSG.bytes, 0, IMAGE_s_CA_ERROR_MSG.length);
- System.arraycopy(IMAGE_s_EYECATCHER, 0, s_EYECATCHER.bytes, 0, IMAGE_s_EYECATCHER.length);
System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
+ f1_WS_RESP = 0L;
+ f3_WS_COMM_LEN = 0L;
+ f4_WS_STARTCODE = " ";
+ f5_WS_SYSID = " ";
+ f55_EYECATCHER = "Program LGAPVS01";
Cobol.moveFigurative(Figurative.ZEROS, f49_EM_RESPRC, CS);
Cobol.moveFigurative(Figurative.ZEROS, f51_EM_RESP2RC, CS);
+ }
+
+ /** The program run on its own (no JCL step, no CICS task, no caller): the PROCEDURE DIVISION from its
+ * initial storage; RETURN-CODE. */
+ public int runProgram() {
+ initialState();
performDepth = 0;
try {
perform(0, 2);
@@ -679,37 +416,19 @@ public int runProgram() {
return Cobol.num(f174_GG_RETURN_CODE, CS).intValue();
}
- public void executeLgapvs01() {
- // a CICS / CALLed program: see runTask / handleCall
- }
-
/** One task of the program: the EIB and COMMAREA from the task, then the PROCEDURE DIVISION. */
public void runTask(CicsTask task) {
boolean truncBefore = Cobol.swapTruncBinary(true); // TRUNC(STD)
+ boolean pfdBefore = Cobol.swapNumprocPfd(false); // NUMPROC(NOPFD)
try {
this.task = task;
caBack = () -> { };
handlers.clear();
heldKey.clear();
- System.arraycopy(IMAGE_s_WS_RESP, 0, s_WS_RESP.bytes, 0, IMAGE_s_WS_RESP.length);
- System.arraycopy(IMAGE_s_WS_RESP2, 0, s_WS_RESP2.bytes, 0, IMAGE_s_WS_RESP2.length);
- System.arraycopy(IMAGE_s_WS_COMM_LEN, 0, s_WS_COMM_LEN.bytes, 0, IMAGE_s_WS_COMM_LEN.length);
- System.arraycopy(IMAGE_s_WS_STARTCODE, 0, s_WS_STARTCODE.bytes, 0, IMAGE_s_WS_STARTCODE.length);
- System.arraycopy(IMAGE_s_WS_SYSID, 0, s_WS_SYSID.bytes, 0, IMAGE_s_WS_SYSID.length);
- System.arraycopy(IMAGE_s_WS_COMMAREA_LEN, 0, s_WS_COMMAREA_LEN.bytes, 0, IMAGE_s_WS_COMMAREA_LEN.length);
- System.arraycopy(IMAGE_s_WF_POLICY_INFO, 0, s_WF_POLICY_INFO.bytes, 0, IMAGE_s_WF_POLICY_INFO.length);
- System.arraycopy(IMAGE_s_WS_ABSTIME, 0, s_WS_ABSTIME.bytes, 0, IMAGE_s_WS_ABSTIME.length);
- System.arraycopy(IMAGE_s_WS_TIME, 0, s_WS_TIME.bytes, 0, IMAGE_s_WS_TIME.length);
- System.arraycopy(IMAGE_s_WS_DATE, 0, s_WS_DATE.bytes, 0, IMAGE_s_WS_DATE.length);
- System.arraycopy(IMAGE_s_ERROR_MSG, 0, s_ERROR_MSG.bytes, 0, IMAGE_s_ERROR_MSG.length);
- System.arraycopy(IMAGE_s_CA_ERROR_MSG, 0, s_CA_ERROR_MSG.bytes, 0, IMAGE_s_CA_ERROR_MSG.length);
- System.arraycopy(IMAGE_s_EYECATCHER, 0, s_EYECATCHER.bytes, 0, IMAGE_s_EYECATCHER.length);
- System.arraycopy(IMAGE_s_DFHCOMMAREA, 0, s_DFHCOMMAREA.bytes, 0, IMAGE_s_DFHCOMMAREA.length);
- System.arraycopy(IMAGE_s_DFHEIBLK, 0, s_DFHEIBLK.bytes, 0, IMAGE_s_DFHEIBLK.length);
- System.arraycopy(IMAGE_s_GG_RETURN_CODE, 0, s_GG_RETURN_CODE.bytes, 0, IMAGE_s_GG_RETURN_CODE.length);
- Cobol.moveFigurative(Figurative.ZEROS, f49_EM_RESPRC, CS);
- Cobol.moveFigurative(Figurative.ZEROS, f51_EM_RESP2RC, CS);
+ initialState();
Cobol.move(task.transid(), f145_EIBTRNID, CS);
+ Cobol.move(task.termid() == null ? "" : task.termid(), f147_EIBTRMID, CS);
+ Cobol.store(f146_EIBTASKN, BigDecimal.valueOf(task.taskNumber()), false, CS);
java.time.LocalDateTime now = task.now();
Cobol.store(f144_EIBDATE, BigDecimal.valueOf((now.getYear() - 1900) * 1000L + now.getDayOfYear()), false, CS);
Cobol.store(f143_EIBTIME, BigDecimal.valueOf(now.getHour() * 10000L + now.getMinute() * 100L + now.getSecond()), false, CS);
@@ -722,16 +441,52 @@ public void runTask(CicsTask task) {
in_Lgapvs01Dfhcommarea(x, s_DFHCOMMAREA, 0);
caBack = () -> fill_Lgapvs01Dfhcommarea(x, s_DFHCOMMAREA, 0);
calen = cx(task, 32500);
- } else if (ca instanceof Lgacdb01CaErrorMsg x) {
- in_Lgacdb01CaErrorMsg(x, s_DFHCOMMAREA, 0);
- caBack = () -> fill_Lgacdb01CaErrorMsg(x, s_DFHCOMMAREA, 0);
+ } else if (ca instanceof LgstsqDfhcommarea x) {
+ in_LgstsqDfhcommarea(x, s_DFHCOMMAREA, 0);
+ caBack = () -> fill_LgstsqDfhcommarea(x, s_DFHCOMMAREA, 0);
calen = cx(task, 99);
}
+ s_DFHCOMMAREA.beyond = null;
+ if (ca instanceof byte[] cb0) {
+ byte[] cb = DetCics.commareaIn(cb0, CS);
+ System.arraycopy(cb, 0, s_DFHCOMMAREA.bytes, 0, Math.min(cb.length, s_DFHCOMMAREA.bytes.length));
+ if (cb.length > s_DFHCOMMAREA.bytes.length) {
+ s_DFHCOMMAREA.beyond = java.util.Arrays.copyOfRange(cb, s_DFHCOMMAREA.bytes.length, cb.length);
+ }
+ calen = cx(task, cb.length);
+ }
+ byte[] raw = task.linkArea();
+ if (raw != null) {
+ System.arraycopy(raw, 0, s_DFHCOMMAREA.bytes, 0, Math.min(raw.length, s_DFHCOMMAREA.bytes.length));
+ int keep = s_DFHCOMMAREA.bytes.length;
+ s_DFHCOMMAREA.beyond = raw.length > keep ? java.util.Arrays.copyOfRange(raw, keep, raw.length) : null;
+ Runnable typed = caBack;
+ caBack = () -> { typed.run(); System.arraycopy(s_DFHCOMMAREA.bytes, 0, raw, 0, Math.min(raw.length, keep)); if (s_DFHCOMMAREA.beyond != null) { System.arraycopy(s_DFHCOMMAREA.beyond, 0, raw, keep, raw.length - keep); } };
+ }
+ byte[] caWhole = null;
+ if (task.exactCommarea() && calen < s_DFHCOMMAREA.bytes.length) {
+ caWhole = s_DFHCOMMAREA.bytes;
+ s_DFHCOMMAREA.bytes = java.util.Arrays.copyOf(caWhole, calen);
+ Runnable typed = caBack;
+ byte[] whole = caWhole;
+ caBack = () -> { caWhole(whole); typed.run(); };
+ }
Cobol.store(f150_EIBCALEN, BigDecimal.valueOf(calen), false, CS);
try {
- perform(0, 2);
- } catch (Goback g) {
- // RETURN / XCTL / an abend ended the program
+ try {
+ perform(0, 2);
+ } catch (Goback g) {
+ // RETURN / XCTL / an abend ended the program
+ }
+ } catch (IndexOutOfBoundsException e) {
+ if (caWhole == null) {
+ throw e;
+ }
+ throw new DetCics.PastFrom("COMMAREA past EIBCALEN (" + calen + " bytes): not modelled");
+ } finally {
+ if (caWhole != null) {
+ caWhole(caWhole);
+ }
}
if (!task.ended()) {
caBack.run();
@@ -739,15 +494,15 @@ public void runTask(CicsTask task) {
}
} finally {
Cobol.swapTruncBinary(truncBefore);
+ Cobol.swapNumprocPfd(pfdBefore);
}
}
- public Lgapvs01Dfhcommarea handleTransaction(String transid, Lgapvs01Dfhcommarea request) {
- throw new UnsupportedOperationException("handleTransaction: this port runs as runTask");
- }
-
public Lgapvs01Dfhcommarea handleLink(Lgapvs01Dfhcommarea request) {
- throw new UnsupportedOperationException("handleLink: this port runs as runTask");
+ CicsTask.Region region = CicsTask.region();
+ CicsTask task = region.linked("LGAPVS01", request);
+ region.run(task, "LGAPVS01", this::runTask);
+ return request;
}
@@ -880,9 +635,9 @@ private int p0() {
int resp1 = task.write("KSDSPOLY".strip(), store("KSDSPOLY".strip()).exists(DetCics.bytes(f8_WF_POLICY_KEY)), () -> store("KSDSPOLY".strip()).store(DetCics.bytes(f7_WF_POLICY_INFO, 64)));
Cobol.store(f171_EIBRESP, BigDecimal.valueOf(resp1), false, CS);
Cobol.store(f172_EIBRESP2, BigDecimal.valueOf(0), false, CS);
- Cobol.store(f1_WS_RESP, BigDecimal.valueOf(resp1), false, CS);
+ f1_WS_RESP = Cobol.binary(BigDecimal.valueOf(resp1), 8, true, false, CS);
// If WS-RESP Not = DFHRESP(NORMAL)
- if (!(Cobol.num(f1_WS_RESP, CS).compareTo(D0) == 0)) {
+ if (!(f1_WS_RESP == 0L)) {
// Move EIBRESP2 To WS-RESP2
Cobol.move(f172_EIBRESP2, f2_WS_RESP2, CS);
// MOVE '80' TO CA-RETURN-CODE
@@ -921,18 +676,19 @@ private int p2() {
// Move CA-Policy-Num To EM-POLNUM
Cobol.move(f79_CA_POLICY_NUM, f44_EM_POLNUM, CS);
// Move WS-RESP To EM-RespRC
- Cobol.move(f1_WS_RESP, f49_EM_RESPRC, CS);
+ Cobol.move(BigDecimal.valueOf(f1_WS_RESP), f49_EM_RESPRC, CS);
// Move WS-RESP2 To EM-Resp2RC
Cobol.move(f2_WS_RESP2, f51_EM_RESP2RC, CS);
// EXEC CICS LINK PROGRAM('LGSTSQ') COMMAREA(ERROR-MSG) LENGTH(LENGTH OF ERROR-MSG) END-EXEC
- Lgacdb01CaErrorMsg ca3 = out_Lgacdb01CaErrorMsg(f37_ERROR_MSG.storage(), f37_ERROR_MSG.offset());
- String lr2 = task.link("LGSTSQ".strip(), ca3, BigDecimal.valueOf(101).intValue());
- if ("NORMAL".equals(lr2)) in_Lgacdb01CaErrorMsg(ca3, f37_ERROR_MSG.storage(), f37_ERROR_MSG.offset());
- String exit4 = task.abendExit();
- if (exit4 != null) return GOTO | paragraph(exit4);
- if (task.ended()) throw new Goback();
+ Storage cw4 = Cobol.commarea(f37_ERROR_MSG, Math.max(99, Math.min(BigDecimal.valueOf(101).intValue(), 32763)));
+ LgstsqDfhcommarea ca3 = out_LgstsqDfhcommarea(cw4, 0);
+ String lr2 = task.link("LGSTSQ".strip(), ca3, BigDecimal.valueOf(101).intValue(), cw4.bytes);
+ if ("NORMAL".equals(lr2)) { in_LgstsqDfhcommarea(ca3, cw4, 0); Cobol.commareaBack(cw4, f37_ERROR_MSG); }
+ String exit5 = task.abendExit();
+ if (exit5 != null) return GOTO | paragraph(exit5);
+ if (task.ended()) throw abended();
Cobol.store(f171_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr2)), false, CS);
- Cobol.store(f172_EIBRESP2, BigDecimal.valueOf(0), false, CS);
+ Cobol.store(f172_EIBRESP2, BigDecimal.valueOf(DetCics.linkResp2(lr2)), false, CS);
if (DetCics.resp(lr2) != 0) {
int to = condition(DetCics.condition(DetCics.resp(lr2)));
if (to >= 0) return GOTO | to;
@@ -944,32 +700,34 @@ private int p2() {
// MOVE DFHCOMMAREA(1:EIBCALEN) TO CA-DATA
Cobol.move(f56_DFHCOMMAREA.ref(1, Integer.valueOf(Cobol.num(f150_EIBCALEN, CS).intValue())), f54_CA_DATA, CS);
// EXEC CICS LINK PROGRAM('LGSTSQ') COMMAREA(CA-ERROR-MSG) LENGTH(Length Of CA-ERROR-MSG) END-EXEC
- Lgacdb01CaErrorMsg ca6 = out_Lgacdb01CaErrorMsg(f52_CA_ERROR_MSG.storage(), f52_CA_ERROR_MSG.offset());
- String lr5 = task.link("LGSTSQ".strip(), ca6, BigDecimal.valueOf(99).intValue());
- if ("NORMAL".equals(lr5)) in_Lgacdb01CaErrorMsg(ca6, f52_CA_ERROR_MSG.storage(), f52_CA_ERROR_MSG.offset());
- String exit7 = task.abendExit();
- if (exit7 != null) return GOTO | paragraph(exit7);
- if (task.ended()) throw new Goback();
- Cobol.store(f171_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr5)), false, CS);
- Cobol.store(f172_EIBRESP2, BigDecimal.valueOf(0), false, CS);
- if (DetCics.resp(lr5) != 0) {
- int to = condition(DetCics.condition(DetCics.resp(lr5)));
+ Storage cw8 = Cobol.commarea(f52_CA_ERROR_MSG, 99);
+ LgstsqDfhcommarea ca7 = out_LgstsqDfhcommarea(cw8, 0);
+ String lr6 = task.link("LGSTSQ".strip(), ca7, BigDecimal.valueOf(99).intValue(), cw8.bytes);
+ if ("NORMAL".equals(lr6)) { in_LgstsqDfhcommarea(ca7, cw8, 0); Cobol.commareaBack(cw8, f52_CA_ERROR_MSG); }
+ String exit9 = task.abendExit();
+ if (exit9 != null) return GOTO | paragraph(exit9);
+ if (task.ended()) throw abended();
+ Cobol.store(f171_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr6)), false, CS);
+ Cobol.store(f172_EIBRESP2, BigDecimal.valueOf(DetCics.linkResp2(lr6)), false, CS);
+ if (DetCics.resp(lr6) != 0) {
+ int to = condition(DetCics.condition(DetCics.resp(lr6)));
if (to >= 0) return GOTO | to;
}
} else {
// MOVE DFHCOMMAREA(1:90) TO CA-DATA
Cobol.move(f56_DFHCOMMAREA.ref(1, Integer.valueOf(90)), f54_CA_DATA, CS);
// EXEC CICS LINK PROGRAM('LGSTSQ') COMMAREA(CA-ERROR-MSG) LENGTH(Length Of CA-ERROR-MSG) END-EXEC
- Lgacdb01CaErrorMsg ca9 = out_Lgacdb01CaErrorMsg(f52_CA_ERROR_MSG.storage(), f52_CA_ERROR_MSG.offset());
- String lr8 = task.link("LGSTSQ".strip(), ca9, BigDecimal.valueOf(99).intValue());
- if ("NORMAL".equals(lr8)) in_Lgacdb01CaErrorMsg(ca9, f52_CA_ERROR_MSG.storage(), f52_CA_ERROR_MSG.offset());
- String exit10 = task.abendExit();
- if (exit10 != null) return GOTO | paragraph(exit10);
- if (task.ended()) throw new Goback();
- Cobol.store(f171_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr8)), false, CS);
- Cobol.store(f172_EIBRESP2, BigDecimal.valueOf(0), false, CS);
- if (DetCics.resp(lr8) != 0) {
- int to = condition(DetCics.condition(DetCics.resp(lr8)));
+ Storage cw12 = Cobol.commarea(f52_CA_ERROR_MSG, 99);
+ LgstsqDfhcommarea ca11 = out_LgstsqDfhcommarea(cw12, 0);
+ String lr10 = task.link("LGSTSQ".strip(), ca11, BigDecimal.valueOf(99).intValue(), cw12.bytes);
+ if ("NORMAL".equals(lr10)) { in_LgstsqDfhcommarea(ca11, cw12, 0); Cobol.commareaBack(cw12, f52_CA_ERROR_MSG); }
+ String exit13 = task.abendExit();
+ if (exit13 != null) return GOTO | paragraph(exit13);
+ if (task.ended()) throw abended();
+ Cobol.store(f171_EIBRESP, BigDecimal.valueOf(DetCics.resp(lr10)), false, CS);
+ Cobol.store(f172_EIBRESP2, BigDecimal.valueOf(DetCics.linkResp2(lr10)), false, CS);
+ if (DetCics.resp(lr10) != 0) {
+ int to = condition(DetCics.condition(DetCics.resp(lr10)));
if (to >= 0) return GOTO | to;
}
}
diff --git a/tests/tools/port_invariance.py b/tests/tools/port_invariance.py
index 7c99b19a0..5d03b762f 100644
--- a/tests/tools/port_invariance.py
+++ b/tests/tools/port_invariance.py
@@ -26,6 +26,7 @@
import argparse
import json
+import re
import shutil
import statistics
import sys
@@ -43,6 +44,10 @@
# arch_io 0.871 / 0.958 arch_ipc 0.835 / 0.757
# struct_branch re-measured after Java stopped counting a `?`/`:` inside a literal and a ternary twice (#4170):
# it was 0.826 / 0.745 before.
+# function_count counts, on the Java side, only the methods that are a COBOL paragraph (PARAGRAPH_DOC below): the
+# translator also emits helpers with no paragraph behind them (named 88-condition methods #4202, abended() #4541,
+# caWhole() #4642, initialState() #4218, ...), and counting those moved the 12-pair rho from 0.912 to 0.778 (#4444)
+# without any scanner reading changing. The floors stay as they were.
CONTRACT: dict[str, tuple[str, float, float]] = {
"function_count": ("functions", 0.85, 0.80),
"struct_branch": ("branch", 0.75, 0.65),
@@ -53,6 +58,11 @@
# readings a port legitimately changes (size, its runtime's overhead, per-scan normalised risk), never asserted
DIFFERS = ("coding_loc", "token_mass", "max_func_complexity", "risk_*", "file_archetype")
+# The det translator documents each paragraph method with `/** PARAGRAPH-NAME. */` (program.py: "/** {p.name}. */"),
+# and every helper either has a prose comment, an `88 NAME of PARENT.` comment, or none; a paragraph name is one
+# token of letters, digits and hyphens, or the synthetic `(MAIN)` for the code before the first paragraph.
+PARAGRAPH_DOC = re.compile(r"^/\*\*\s+(?:\(MAIN\)|[A-Za-z0-9][A-Za-z0-9-]*)\.\s+\*/$")
+
# the committed pairs: program -> (equivalence case, corpus-relative COBOL path)
FIXTURE = {
"ABNDPROC": ("cbsa-abndproc", "src/base/cobol_src/ABNDPROC.cbl"),
@@ -89,7 +99,10 @@ def readings(text: str, lang: str) -> dict[str, int]:
r = StructuralExtractor(lang, defs).splice(streams["code_stream"], streams.get("comment_stream", ""),
raw_content=text) # fmt: skip
eq = r.get("equations", {})
- return {col: (len(r.get("functions", [])) if key == "functions" else int(eq.get(key, 0) or 0))
+ funcs = r.get("functions", [])
+ if lang == "java": # paragraph methods only, not the helpers the translator generates
+ funcs = [f for f in funcs if PARAGRAPH_DOC.match((f.get("docstring") or "").strip())]
+ return {col: (len(funcs) if key == "functions" else int(eq.get(key, 0) or 0))
for col, (key, _, _) in CONTRACT.items()} # fmt: skip