У меня есть файл для отображения меню. Я успешно сделал рабочую программу CL, которая отображает меню и ждет ввода. Просто, все, что он делает, отображает файл и ждет, пока пользователь нажмет F1, чтобы выйти.as400: что такое C-эквивалент SNDRCVF
Показать файл (приближение): команда
A R DISPLAY
A CA01(01 'Exit')
A 2 2'some text....'
Создание: программа crtdspf file(display) srcfile(test) srcmbr(display)
CL:
PGM
DCLF FILE(DISPLAY) RCDFMT(DISPLAY)
LOOP: SNDRCVF
IF COND(&IN01 *EQ '1') THEN(DO)
GOTO END
ENDDO
GOTO LOOP
END:
ENDPGM
Компиляция Команда: crtclpgm pgm(test) srcfile(test) srcmbr(clsrc) output(*print)
Что является эквивалентом SNDRCVF в C?
Вот что я пришел с этого момента. Он компилируется отлично, но когда я его называю, он ничего не делает.
#include <stdio.h>
#include <recio.h>
// Include my display file.
#pragma mapinc("display","lib/display(display)", "both", "")
#include "display"
// Shortcuts to the generated structs.
typedef LIB_DISPLAY_DISPLAY_i_t input_t;
typedef LIB_DISPLAY_DISPLAY_o_t output_t;
int main(int argc, char* argv[]){
input_t input;
output_t output;
_RFILE* dspf;
// The file opens fine.
dspf = _Ropen("lib/display", "wr");
if(dspf == NULL){
printf("ERROR: Display file open failed.\n");
return 0;
}
// I tell which record format to use.
_Rformat(dspf, "display");
// Write my file to display?
_Rwrite(dspf, "", 0);
// Wait for input.
_Rreadn(dspf, &input, sizeof(input), __DFT);
// Close it and quit.
_Rclose(dspf);
return 0;
}
Команда Compile: crtbndc pgm(test) srcfile(test) srcmbr(main) output(*print)
Тогда звоните: call test
Что я делаю неправильно?
Можете ли вы изменить свой вопрос, чтобы включить (1) DDS для файла DISPLAY и (2) команды создания файла и программы? Нам нужно знать атрибуты DSPF, а также параметры создания для всех объектов. Кроме того, появляется ли в вашем журнале задание сообщений об ошибках при вызове программы? – user2338816
@ user2338816 Я добавил то, что вы просили. По заданию, вы имеете в виду файлы спула? –