Я пытаюсь понять, как переменные параметров объявляются в прототипе процедуры (PR) и интерфейсе процедуры (PI) в программе RPG. Почему переменные параметров необходимо определять как в PR, так и в PI? Заявление об этом в обоих местах необходимо, но зачем менять определение?
Объявление параметра в прототипе процедуры и интерфейсе в RPG
comment
Ага. Так поступила IBM. Я думаю, что у них в голове был COBOL, где процедура также определена в двух местах.
- person danny117   schedule 06.07.2017
comment
ANSI C также ранее использовал объявления как прототипов, так и интерфейсов. Прототип предназначен для использования вызывающими абонентами, а интерфейс используется вызываемой процедурой. Вызывающий должен знать правильные формы данных, которые ожидаются, а вызываемый процесс должен знать, что будет исходить от вызывающего. Поскольку они часто находятся в разных программах, необходимы два отдельных определения, потому что формы должны совпадать с обеих сторон вызова. Обычный вопрос: зачем и то, и другое необходимо в одной автономной программе ILE RPG, и ответ таков: это верно только для устаревших выпусков.
- person user2338816   schedule 17.08.2017
Ответы (1)
Вам не нужен Dcl-Pr
для процедур в одном модуле. Вам нужен только прототип для процедур, которые либо
- в другом модуле программы
- в сервисной программе, на которую вы пытаетесь сослаться
person
Barry
schedule
05.07.2017
Это предполагает, что OP включен и компилируется для последней версии ОС. Более старые версии требовали PR даже для внутренних процедур модуля.
- person Charles; 05.07.2017
Я обычно сейчас определяю интерфейс процедуры для программ вместо использования
*ENTRY PLIST
. Хотя нет необходимости определять прототип для них, это делает вызовы немного приятнее, потому что я помещаю все свои прототипы в отдельную книгу для копий, и я могу просто скопировать соответствующие прототипы, когда мне нужно вызвать программу.
- person jmarkmurphy; 10.07.2017
Да, это очень полезно в сервисных программах. Вы просто помещаете прототип своей процедуры в вызывающую программу, а затем можете использовать процедуру служебных программ (когда процедура определена с помощью EXPORT).
- person nicowi; 18.07.2019