Нет, но в RPG IV это не обязательно такая большая проблема. В RPG IV вы можете использовать процедуры, а процедуры могут иметь локальные переменные. RPG 400 и раньше разрешены только глобальные переменные. Однако, если вы используете подпрограммы в своих программах RPG IV, вам все равно придется использовать глобальные переменные.
Вы все еще не используете подпрограммы?
Вот синтаксическая разница:
Подпрограммы в свободном:
exsr mysubroutine;
...
begsr mysubroutine;
...
endsr;
как это выглядит с минимальными подпроцедурами;
myProcedure();
...
dcl-proc myProcedure;
...
end-proc;
Вы строго не нуждаетесь в ()
после имени процедуры, если вы не передаете параметры, но я все равно делаю это, потому что это подсказывает мне, что это процедура, а не случайная переменная или другое имя, сидящее отдельно строка или даже выражение.
Преимущества процедур?
- Вы можете объявить локальные переменные для этих циклов.
- Вы все еще можете использовать все глобальные переменные, которые используют ваши подпрограммы.
- Вы можете передавать параметры.
- Вы можете вернуть значение и использовать процедуру в выражении.
- Процедуры можно вызывать рекурсивно.
Gotchas
- Вы все еще можете использовать все глобальные переменные, которые используют ваши подпрограммы.
- Вы не можете вызвать подпрограмму изнутри процедуры, если она не определена в процедуре.
- Вы не можете вызвать подпрограмму, определенную внутри процедуры, из-за пределов этой процедуры.
Gotchas # 2 & # 3 означают, что может быть лучше преобразовать все ваши подпрограммы в процедуры. Вы можете сделать это без каких-либо побочных эффектов.