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 на пластинку. Теперь мне нужно выяснить, смогу ли я держать таблицу открытой все время, поскольку открытие и закрытие таблицы съедают время.

Другие вопросы по тегам