我正在根据讲义学习COBOL。在学习结束时,我将这些代码复制到一个名为testerel01.cob的文件中。然后,我通过从源代码编译安装了gnucobol 3.1.2。编译时出现了几个错误。我修复了大部分,但这一个我无法修复。
testerel01.cob:78:错误:密钥项无效
代码如下:
PROCEDURE DIVISION.
INICIAL.
OPEN INPUT CLIENTES
IF NOT VALID-CLIENTES
DISPLAY MESSAGE BOX
"O ARQUIVO DE CLIENTES NÃO FOI ABERTO !!" H"0A"
"CODIGO DE STATUS: " STAT-CLIENTES
GOBACK
END-IF.
OPEN OUTPUT IMPRESSORA
IF NOT VALID-IMPRESSORA
DISPLAY MESSAGE BOX "IMPOSSIVEL ABRIR IMPRESSORA !" H"0A"
"CODIGO DE STATUS: " STAT-IMPRESSORA
GOBACK
END-IF.
MOVE LOW-VALUES TO CLI-NOME.
START CLIENTES KEY IS > CLI-NOME
IF NOT VALID-CLIENTES
DISPLAY MESSAGE BOX
"IMPOSSIVEL LOCALIZAR CLIENTES !!" H"0A"
"CODIGO DE STATUS: " STAT-CLIENTES
EXIT PARAGRAPH
END-IF
END-START
*******************************************************************
** VAMOS FAZER UM LOOP PARA LER NOSSO ARQUIVO DE CLIENTES ATE O
** FINAL E FAZER A IMPRESSÃO, NO FINAL MANDAMOS IMPRIMIR O RODAPE
** COM A TOTALIZAÇÃO DOS REGISTROS
*******************************************************************
PERFORM UNTIL 1 <> 1
READ CLIENTES NEXT AT END
PERFORM RODAPE1
EXIT PERFORM
END-READ
*******************************************************************
** ALIMENTAREMOS OS DADOS DO RELATORIO COM AS INFORMAÇÕES DO NOSSO
** CADASTRO QUE SERÃO IMPRESSAS
*******************************************************************
MOVE CLI-CODIGO TO LDT-CODIGO
MOVE CLI-NOME TO LDT-NOME
MOVE CLI-CIDADE TO LDT-CIDADE
MOVE CLI-UF TO LDT-UF
*******************************************************************
** A VARIAVEL LINHAS NOS PERMITE FAZER A QUEBRA DE PAGINA PERCEBA
** QUE INICIOU VALENDO 80, DESSA FORMA FORÇA A IMPRESSAO DO
** CABECALHO DA PRIMEIRA PAGINA
*******************************************************************
IF LINHAS > 61
PERFORM CABECALHO
END-IF
ADD 1 TO LINHAS, CONTADOR
WRITE RG-IMPRESSORA FROM LDT AFTER 1
END-PERFORM.
发生错误的第78行是:
START CLIENTES KEY IS > CLI-NOME
正如@Simon Sobisch所建议的那样,编译器希望告诉您这不是SELECT子句中定义的键。