Я написал основную функцию обслуживания в RPGLE, используя DDS для создания файла дисплея.У меня есть определенный подфайл сообщения, чтобы показать сообщение в строке 24. Управляющая запись подфайла сообщения имеет определенный оверлей.Сообщения записываются в pgm (проверил журналы заданий и может видеть правильные сообщения, отправляемые в правильную программу).SFLPGMQ определяется как '*' (я также попытался ввести полное имя pgm - тоже самое).Вся программа написана полностью в полностью свободной форматной RPG.У меня есть следующие форматы: HEADER (оверлей не определен) - он содержит повествование в первых 4 строках.SUBFILE (Управляющая запись имеет определенный оверлей) - Строки подфайлов 6-21 FUNCKEYS (Отображать набор разрешенных функциональных клавиш в строке 23 - Заданный оверлей) MSGSFL (Управляющая запись имеет определенный оверлей) - SFLMSGRCD (24)
Когдапостроение экрана: Запись заголовка Запись Funckeys Write MsgSflC Exfmt SUBFILEC
Странно то, что у меня есть очень похожий вид подфайлов, который использует окно.Мой метод практически идентичен этой программе - но он работает отлично!
Я уже несколько часов выдергиваю волосы и не могу понять, что происходит сейчас!Пожалуйста, пожалуйста, кто-нибудь избавит меня от моих страданий!
Это DDS для файла дисплея
A DSPSIZ(24 80 *DS3)
A INDARA
A CF03(03)
A CF06(06)
A CF12(12)
** Header
A R HEADER
A 1 2'XXXXXXS1'
A 1 28'Maintain XXXXXXXXXXXXXXXX'
A DSPATR(HI)
A 1 63DATE
A EDTCDE(Y)
A 1 72TIME
A 3 2'2=Edit 4=Delete'
A COLOR(BLU)
** Subfile
A R SUBFILE SFL
A 94 SFLNXTCHG
A S_OPT 1A B 6 3
A 51 DSPATR(RI PC)
A S_TRANTYPE 30A O 6 8
A S_RRN 5S 0H
** Subfile control
A R SUBFILEC SFLCTL(SUBFILE)
A OVERLAY
A 91 SFLDSP
A 92 SFLDSPCTL
A 90 SFLCLR
A 93 SFLEND(*MORE)
A SFLSIZ(17)
A SFLPAG(16)
A 5 2'Opt'
A DSPATR(HI)
A 5 8'XXXXXXXXXXXXXXX'
A DSPATR(HI)
** Function keys
A R FUNCKEYS
A OVERLAY
A 23 2'F3=Exit F6=Add F12=Cancel'
A COLOR(BLU)
** No xxxxxxxx available
A R NOTRANS
A OVERLAY
A 10 10'*** There are no XXXXXXX defined ***'
A DSPATR(HI)
** Messages
A R MSGSFL SFL
A SFLMSGRCD(24)
A MSGKEY SFLMSGKEY
A PGMQ SFLPGMQ
A R MSGCTL SFLCTL(MSGSFL)
A OVERLAY
A SFLDSP
A SFLDSPCTL
A SFLINZ
A N12 SFLEND
A SFLSIZ(2)
A SFLPAG(1)
A PGMQ SFLPGMQ(10)
Ниже приведена суть построения экрана.На экране все отображается правильно, за исключением сообщений внизу!
PGMQ установлен на '*' в начале программы
dcl-proc DisplayScreen;
write HEADER;
write FUNCKEYS;
write MSGCTL;
if S_RRN <> *zero;
SflDspCtl = *on;
SflDsp = *on;
exfmt SUBFILEC;
else;
exfmt NOTRANS;
endif;
end-proc;
Одновременно может быть выбрана только 1 запись,Если их больше одного, сообщение должно отображаться внизу вместе со всеми соответствующими записями, выделенными в поле S_OPT.Подсветка всех полей работает нормально - и сообщение появляется в журнале работ!Так что я ожидаю, что они появятся в MSGSFL!Я уверен, что я делаю что-то глупое - но не могу за всю жизнь увидеть, что !!