Я изучаю COBOL только для удовольствия и теперь хочу вызвать функции C из моего источника COBOL (используя GnuCOBOL).
Я могу просто вызвать функции C, однако у меня есть небольшая проблема с моей моей функцией, которая выглядит так: (Она просто обертывает еще одну функцию теми же аргументами, пока)
int getSensors( char * protocol, int protocolLen,
char * model, int modelLen,
int * id, int * dataTypes ) {
return tdSensor(protocol, protocolLen, model, modelLen, id, dataTypes );
}
Моя проблема в том, что значение, возвращаемое в переменной id, впоследствии не печатается в COBOL (TSI-ID ниже). Например, возвращаемое значение может быть 67, и если я напечатаю переменную в COBOL, я получаю символ ascii 'C' вместо ожидаемого значения 0067.
Запись COBOL выглядит следующим образом:
01 TELLSTICK-SENSOR-ITER.
05 TSI-PROTOCOL PIC X(50).
05 TSI-MODEL PIC X(50).
05 TSI-ID PIC 9(4).
05 TSI-DATATYPES PIC 9(4).
05 TSI-RETURN PIC S9(4).
И мой вызов выглядит следующим образом:
CALL "getSensors" USING
BY REFERENCE TSI-PROTOCOL BY VALUE 50
BY REFERENCE TSI-MODEL BY VALUE 50
BY REFERENCE TSI-ID
BY REFERENCE TSI-DATATYPES
RETURNING TSI-RETURN.
Я новичок в COBOL, и мои навыки C довольно ржавые, поскольку я обычно работаю на Java. Есть ли очевидная ошибка новичка в моем коде здесь?