我有这个程序,我需要读取表DB2.SMLC_RGR_PRCT_RCS,其中字段NR_SMLC_RGR_PRCT=I01-NR-SMLC-RGR-PRC,比较变量的值与字段,只有当它们匹配时才前进,但无论我使用什么命令或逻辑都不起作用,我已经使用了所有的SELECT选项,并try 使用FETCH进行循环,有什么提示吗? 注意:我将只保留我所指的程序部分和数据

  *----------------------------------------------------------*
    WORKING-STORAGE  SECTION.
  *----------------------------------------------------------*
   77  CTE-PROG                    PIC X(016)    VALUE
                                   '*** GPOP9450 ***'.
   77  CTE-VERS                    PIC X(006)    VALUE   'VRS001'.
   77  SBVERSAO                    PIC X(008)    VALUE   'SBVERSAO'.
   77  SBABEND                      PIC  X(07) VALUE 'SBABEND'.
  *----------------------------------------------------------*
  *--------------------CONTADORES----------------------------*
   01  GDA-FIM-ARQUIVO             PIC X(03).
   01  GDA-REGISTROS-LIDOS         PIC 9(18) VALUE ZEROS.
   01  GDA-REGISTROS-N-ENCONTRADOS PIC 9(18) VALUE ZEROS.
   01  GDA_REGISTROS_ENCONTRADOS   PIC S9(4) USAGE COMP.
   01  GDA_REG                     PIC S9(4) USAGE COMP.
  *-------------------------------------------------------------*
  *                    ARQUIVO DE ENTRADA

   01 WREG-ARQENTD.
       03 I01-NR-SMLC-RGR-PRCT           PIC S9(4) USAGE COMP.
       03 I01-CODIGO-USUARIO             PIC X(08) VALUE IS SPACES.
  *-------------------------------------------------------------*
  *                     ARQUIVO DE SAIDA 01

   01 WREG-ARQSAI-1.
       03 O001-NR-SMLC-RGR-PRCT          PIC 9(04) VALUE ZEROS.
       03 O001-CODIGO-USUARIO            PIC 9(08) VALUE IS ZEROS.
       03 O001-DATA-PESQUISA             PIC X(10) VALUE IS SPACES.
  *-------------------------------------------------------------*
  *                      ARQUIVO DE SAIDA 02
   01 WREG-ARQSAI-2.
       03 O002-NR-SMLC-RGR-PRCT          PIC S9(4) USAGE COMP.
       03 O002-NR_SMLC_RGR_PRCT          PIC S9(4) USAGE COMP.
       03 O002-CD_OGM_RCS_SMLC           PIC S9(4) USAGE COMP.
       03 O002-TX_SMLC_RGR_PRCT          PIC X(50) VALUE SPACES.
       03 O002-DT_INC_MVT_SMLC          PIC X(10) VALUE SPACES.
       03 O002-DT_FIM_MVT_SMLC          PIC X(18)  VALUE ZEROS.
       03 O002-DATA-ALTERACAO           PIC X(26)  VALUE SPACES.
  *-------------------------------------------------------------*
   LOCAL-STORAGE SECTION.
  *----------------------------------------------------------*
  *--------------------ARÉA SQL----------------------------*
       EXEC SQL
            INCLUDE SQLCA
       END-EXEC.
  *-------------------------------------------------------------*
   PROCEDURE DIVISION.
   000000-INICIO  SECTION.
  *-------------------------------------------------------------*
        CALL SBVERSAO USING CTE-PROG CTE-VERS.


        PERFORM 0001-ABRE-ARQUIVOS
        PERFORM 0002-LER-ARQUIVO UNTIL GDA-FIM-ARQUIVO EQUAL 'S'
        PERFORM 0006-GERA-ESTATISTICAS


        CLOSE  ARQENTRD
               ARQSAI1
               ARQSAI2.

        STOP RUN.

   000000-FIM. EXIT.


   0001-ABRE-ARQUIVOS            SECTION.

       OPEN INPUT  ARQENTRD
            OUTPUT ARQSAI1
                    ARQSAI2
           .

   0001-FIM. EXIT.


   0002-LER-ARQUIVO              SECTION.

        READ ARQENTRD AT END MOVE 'S' TO GDA-FIM-ARQUIVO
                      NOT AT END
                      ADD 1 TO GDA-REGISTROS-LIDOS
                      PERFORM 01-BUSCA-DB2

        .

   0002-FIM. EXIT.


   01-BUSCA-DB2                  SECTION.

        EXEC SQL
          SELECT *
           INTO :GDA_REG
           FROM DB2.SMLC_RGR_PRCT_RCS
           WHERE NR_SMLC_RGR_PRCT = :I01-NR-SMLC-RGR-PRCT
        END-EXEC

       IF SQLCODE = 0
          PERFORM 0005-GRAVA-ARQSAI-1
       ELSE
       IF SQLCODE > 0
             PERFORM CHAMA-ERRO-001
       END-IF

...

推荐答案

必须确保COBOL和DB2中的变量是等价的.在COBOL的主要版本中,主机变量必须嵌入到SQL语句中.

下面的链接可以帮助您了解程序中缺少的内容.

https://www.ibm.com/docs/en/db2-for-zos/12?topic=statements-equivalent-sql-cobol-data-types

https://www.ibm.com/docs/en/db2-for-zos/12?topic=statements-declaring-host-variables-indicator-variables-in-cobol

https://www.microfocus.com/documentation/server-express/sx20books/dbhost.htm

提供的代码显示您正在从DB2.SMLC_RGR_PRCT_RCS表中获取所有列,并将其放入主机变量GDA_REG中,该变量的类型和长度与I01-NR-SMLC-RGR-PRCT相同.请随时编辑您的帖子并添加表格定义,这样我们就可以判断错误的地方,并提供具体的说明.

我希望这对你有帮助.祝你玩得开心.

Sql相关问答推荐

按postquist中的日期查询json列

获取家谱树中第一次出现的特定信息,然后停止

如何在case语句中使用条件来计算成对变量

用相同值更新行

在多个联合中使用相同的SELECT SQL查询

将JSON文件导入Postgres 16数据库时出错(22P04上次预期列之后的额外数据)

按两列分组,并根据SQL中的条件返回第三个列值

在子窗口SQL Presto中使用特定条件执行值计数

如何使用聚合连接两个表

通过UPDATE SELECT更新表时出现问题

如何创建snowflake表(动态查找数据类型)并从阶段加载(AWS S3)?

我需要在 ASP.NET C# 中获取 2 个 SQL 查询结果的平均值

在where语句中使用CTE非常缓慢

每个ID的SQL返回可能的最低级别及其值

连续期间的缺口

如何计算每行出现的次数并显示在另一个表中?

面对来自以下两个代码的不同输出

当没有任何行存在时,将一个表中的行插入到另一个表中的更好方法

如何跨行合并以删除 SQL 中的空值?

Postgres 窗口函数未按预期工作