Easytrieve Plus и Db2 — чтение файла в качестве входных данных для сопоставления с таблицей Db2
Я запускаю пакетное задание, которое считывает файл со списком шаблонов. Я пытаюсь найти пример, так как тот, который мне предоставили, не будет работать. Я пытался найти хоть какой-нибудь пример чтения файла через EZTPA00. JCL правильный, но я продолжаю получать сообщение об ошибке. Вот основной код, за которым следует ошибка, которую я получаю:
LIST ON
PARM SSID('DB2G')
FILE INFILE1 VB (133 6233)
IP-REC 01 133 A
TEMPLATE 01 015 A
FILE OUFILE1 FB (100 1000)
OP-REC 01 100 A
COMMUN_TRANS_ID 01 040 A
COMMUN_TEMPLATE_NO 42 015 A
DEFINE H-CNT W 13 N
SQL DECLARE C1 CURSOR FOR +
SELECT TRANSACTION, TEMPLATE +
FROM DB2.TEMPLATE_TABLE WHERE +
TEMPLATE = INFILE1:TEMPLATE
FETCH FROM INFILE1
IF EOF INFILE1
DISPLAY 'TEMPLATE ' TEMPLATE ' NOT RETURNED'
STOP
END-IF
CLOSE INFILE1
* INPUT SETUP
JOB INPUT(INFILE1) +
START 010-INIT +
FINISH 999-END
* START THE SQL
SQL OPEN C1
DO WHILE SQLCODE NE +100
SQL FETCH C1 +
INTO :WS-TMPLT, :WS-COMMID
IF SQLCODE NE 0
DISPLAY 'PF : ERROR : SQLCODE : ' SQLCODE
STOP
END-IF
13 SQL DECLARE C1 CURSOR FOR +
SELECT COMMUN_TRANS_ID, COMMUN_TEMPLATE_NO +
FROM VMUSIU.E_COMM_DLVY WHERE +
COMMUN_TEMPLATE_NO = INFILE1:TEMPLATE
13 *******B204 SQL - SQL ERROR, SQLCODE IS -104
13 *******B204 SQL - DSNT408I SQLCODE = -104, ERROR: ILLEGAL SYMBOL "?". SOME SYMBOLS THAT MIGHT BE LEGAL
13 *******B204 SQL - ARE: AND * AT OR SELECTIVITY YEAR YEARS MONTH MONTHS DAY DAYS HOUR
13 *******B204 SQL - DSNT418I SQLSTATE = 42601 SQLSTATE RETURN CODE
Я понятия не имею, что такое "?" является. Я попытался использовать выборку для infile1, но он сказал, что он недействителен. Все, что я пытаюсь, дает мне тот же ответ. Я даже пытался использовать переменные ws, но все равно не получилось. У кого-нибудь есть что-то, что позволяет сопоставлять информацию таблицы db2 с файлом?
1 ответ
Понятно:
SQL DECLARE C1 CURSOR FOR +
SELECT COMMUN_TRANS_ID, COMMUN_TEMPLATE_NO +
FROM DB2.TEMPLATE_TABLE WHERE +
COMMUN_TEMPLATE_NO = :TEMPLATE +
FETCH FIRST 2 ROWS ONLY
Мне еще нужно сделать кое-что, но это помогло мне получить данные. FETCH FIRST 2 ROWS ONLY
пришло позже, и я наконец смог получить только 2 на пластинку. Теперь мне нужно выяснить, смогу ли я держать таблицу открытой все время, поскольку открытие и закрытие таблицы съедают время.