У меня есть кусок старого кода, который я пытаюсь преобразовать
Очень просто, всего 10 циклов
C DO 10
C* code
C ENDDO
Чтобы использовать цикл for
в свободном синтаксисе, необходимо создать переменную. Например:
FOR I = 1 TO 10;
// code
ENDFOR;
Любой способ сделать это без необходимости создания новой переменной?
Нет, но в RPG IV это не обязательно такая большая проблема. В RPG IV вы можете использовать процедуры, а процедуры могут иметь локальные переменные. RPG 400 и ранее допускали только глобальные переменные. Однако, если вы используете подпрограммы в своих программах RPG IV, вам все равно придется использовать глобальные переменные.
Вы все еще не используете подпрограммы, не так ли?
Вот разница в синтаксисе:
Подпрограммы в свободном доступе:
exsr mysubroutine;
...
begsr mysubroutine;
...
endsr;
как это выглядит с минимальными подпроцедурами;
myProcedure();
...
dcl-proc myProcedure;
...
end-proc;
Вам строго не нужен ()
после имени процедуры, если вы не передаете параметры, но я все равно делаю это, потому что это подсказывает мне, что это процедура, а не случайная переменная или другое имя, сидящее отдельно в строке, или даже в выражении.
Преимущества процедур?
Попался?
Подсказки №2 и №3 означают, что лучше преобразовать все ваши подпрограммы в процедуры. Вы можете сделать это без каких-либо побочных эффектов.
Без сомнений. Я тоже ничего не конвертирую, если у меня нет на то причины.
Это действительно отличная идея. Я постараюсь использовать процедуры в будущем. Весь устаревший код был бы слишком большой задачей для меня, чтобы преобразовать его в процедуры.