CPF4131 появился во время OPEN для файла

Каковы возможные причины появления CPF4131 в файле программы.

И как нам это решить?

 Message . . . . : Error message CPF4131 appeared during OPEN for file 
 TEST (C S D F). 

Cause . . . . . : RPG procedure TEST2 in program TESTLIB/TEST2
received the message CPF4131 while performing an implicit OPEN operation on 
file SOURCE. The actual file is SOURCE. 

person learning_fly    schedule 27.05.2013    source источник
comment
Причина указана в самом сообщении CPF4131.   -  person user2338816    schedule 06.04.2014
comment
@ user2338816 это не совсем полезно, не так ли? Хороший вопрос learning_fly, я забился, пытаясь понять это.   -  person SovietFrontier    schedule 19.11.2018
comment
@CodeAssist Это зависит от перспективы. Сообщение CPF4131 появляется в журнале заданий в текстовой строке (строках), непосредственно предшествующих вставленному тексту. Все, что нужно, это посмотреть на него. Он содержит разделы с пометками «Сообщение», «Причина» и «Восстановление». Гораздо быстрее просто прочитать это, чем составить и отправить вопрос и ждать различных, возможно, противоречивых и / или запутанных ответов. Если этот текст неясен, это действительно хорошее время для SO.   -  person user2338816    schedule 20.11.2018


Ответы (2)


Это проверка формата записи. Это означает, что формат записи в открываемом файле не имеет того же идентификатора уровня формата, который был обнаружен при компиляции программы. Другими словами, в расположении полей в записи что-то другое. Возможно, вы изменили структуру файла, если это так, то вы, вероятно, захотите перекомпилировать свою программу RPG.

Идентификатор вычисляется как хэш числа и порядка всех полей в записи с их именами и любыми атрибутами, которые могут повлиять на то, как поля сохраняются или извлекаются из буфера записи программой. Таким образом, имя поля, тип данных, длина, позиция поля являются примерами того, что может повлиять на идентификатор, а заголовки столбцов или текст поля — нет.

В общем, вы захотите узнать, как просматривать журнал заданий, чтобы просматривать предыдущие сообщения, чтобы увидеть, что вызвало проблему. DSPJOB или WRKJOB, пожалуй, наиболее распространенный метод: выберите вариант 10, затем нажмите F10, чтобы просмотреть сообщения низкого уровня, и F18 (Shift F6), чтобы перейти в конец списка и вернуться на страницу.

person WarrenT    schedule 27.05.2013
comment
Я совсем забыл обо всем этом! Самое очевидное быстрое решение — перекомпилировать программу с новым DSPF! Давно не играл в РПГ, забыл, что надо было этим заняться. - person SovietFrontier; 19.11.2018

Представьте себе файл рабочей станции с именем ARINQDSP и программу RPG с именем ARINQ. Если вы отредактируете ARINQDSP, скажем, добавите новое поле на дисплей и скомпилируете его, у вас будет новый формат записи (как объяснил @WarrenT. Если вы ВЫЗОВИТЕ ARINQ, ОС сравнит формат записи, хранящийся в программе, с фактический формат записи, хранящийся в файле.Они отличаются, поэтому выдается CPF4131.Перекомпиляция программы RPG сохранит текущий идентификатор формата записи в программном объекте (вместе с текущим макетом буфера!), и CALL ARINQ теперь будет выполняться, как ожидалось , Это наиболее распространенная причина ошибки проверки уровня.

Это происходит по другой причине: несоответствие списка библиотек. Представьте ту же последовательность событий, что и выше, только на этот раз представьте, что вы выполняете работу в библиотеке разработки. Вы изменили ARINQDSP и перекомпилировали и файл, и программу. У вас есть РАЗВИТИЕ в верхней части списка вашей библиотеки. Теперь вы делаете это: ПОЗВОНИТЕ PRODUCTION/ARINQ. ОС вызовет исходную программу в производственной библиотеке, но из-за списка библиотек попытается открыть ARINQDSP из библиотеки РАЗРАБОТКИ. Идентификатор формата записи, хранящийся в производственной программе, не соответствует идентификатору уровня формата записи, хранящемуся в файле рабочей станции библиотеки разработки, и бум: проверка уровня.

person Buck Calabro    schedule 27.05.2013