gpt4 book ai didi

c - 我有一个外部 COBOL-IT 函数,我想从我的 C 程序中调用。获取错误 "ERRORC2065: ' productid' : undeclared identifier

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:03 25 4
gpt4 key购买 nike

所以我有一个外部 COBOL-IT 函数,我想从我的 C 程序中调用它。目前我一直收到错误“ERRORC2065:'productid':未声明的标识符。“aantal”也是如此。我的 C 有点生锈,因为我已经有一段时间没有使用它了,所以如果有人能帮助我,那太好了。如果我去掉“&”,它也不起作用。

#include <stdio.h>
#include "libcob.h"
//#pragma linkage (verkoop, COBOL)

extern void verkoop(char *productid, char aantal*);

int main(int argc, char *argv[])
{
COB_RTD = cob_get_rtd();
cob_init(rtd, 0, NULL);
char productid[6] = "000020";
char aantal[6] = "000200";
printf("Hello world");
verkoop(&productid, &aantal);
return 0;
}

这是我的 verkoop 函数,有兴趣的可以引用:

*************************************************************
* VERKOOP
*************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. VERKOOP.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PRODUCTEN ASSIGN TO "BESTANDEN/PRODUCTEN"
ACCESS MODE IS RANDOM
ORGANIZATION IS INDEXED
RECORD KEY IS PRODUCTID
FILE STATUS IS WS-FILE-STATUS.

DATA DIVISION.
FILE SECTION.
FD PRODUCTEN BLOCK CONTAINS 10 RECORDS.
01 PRODUCT.
02 PRODUCTID PIC X(6).
02 LEVERANCIERID PIC X(6).
02 AANTAL PIC 9(6).
WORKING-STORAGE SECTION.
77 FOUT PIC X.
88 PRODUCT-NIET-GEVONDEN VALUE 1.
77 WS-PRODUCTID PIC X(6).
77 WS-AANTAL PIC 9(6).
77 WS-FILE-STATUS PIC XX.
LINKAGE SECTION.
01 LS-PRODUCTID PIC X(6).
01 LS-AANTAL PIC 9(6).
PROCEDURE DIVISION USING LS-PRODUCTID, LS-AANTAL.

MAIN.
PERFORM INITIALISEER
PERFORM LEES-PRODUCT-IN
PERFORM LEES-BESTAND
PERFORM SLUIT-BESTAND
STOP RUN.

INITIALISEER.
MOVE ZEROS TO PRODUCT
OPEN I-O PRODUCTEN.
* DISPLAY WS-FILE-STATUS..

LEES-PRODUCT-IN.
MOVE LS-PRODUCTID TO WS-PRODUCTID
MOVE LS-AANTAL TO WS-AANTAL.
* DISPLAY "GEEF PRODUCTID OP: "
* ACCEPT WS-PRODUCTID
* DISPLAY "GEEF AANTAL OP: "
* ACCEPT WS-AANTAL.

LEES-BESTAND.
* DISPLAY "LEES-BESTAND"
MOVE WS-PRODUCTID TO PRODUCTID
* DISPLAY PRODUCTID
READ PRODUCTEN INVALID KEY SET PRODUCT-NIET-GEVONDEN TO TRUE
END-READ
DISPLAY "END-READ" WS-FILE-STATUS
IF PRODUCT-NIET-GEVONDEN PERFORM FOUTJE
ELSE
MOVE WS-PRODUCTID TO PRODUCTID
SUBTRACT WS-AANTAL FROM AANTAL
PERFORM UPDATE-PRODUCT
END-IF.


UPDATE-PRODUCT.
REWRITE PRODUCT INVALID KEY PERFORM FOUTJE.

SLUIT-BESTAND.
* DISPLAY "SLUIT-BESTAND"
CLOSE PRODUCTEN.

FOUTJE.
DISPLAY "ER IS EEN FOUT OPGETREDEN"
* DISPLAY WS-FILE-STATUS
STOP RUN.

更新:我通过在代码的第一行声明 productid 和 aantal 解决了这个问题。

最佳答案

1) 您的常量字符数组太小,无法容纳以 null 结尾的初始字符串的值。

2) 同样,您对函数的声明不正确。

extern void verkoop(char *productid, char aantal*);

应该是

extern void verkoop(char *productid, char *aantal);

(提示:查看“*”表示 aantal);

3) 您使用无效参数调用函数。函数调用应该是

verkoop(productid, aantal);

您能否分享有关您正在使用的编译器的更多信息?

关于c - 我有一个外部 COBOL-IT 函数,我想从我的 C 程序中调用。获取错误 "ERRORC2065: ' productid' : undeclared identifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20820075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com