Только для справки, FWiW; то есть не рекомендации, просто примеры того, что может быть сделано, особенно. в случаях, если не указано иное:
Мой помощник по команде сказал мне, что он может написать код для этой проблемы только в 4 строках, включая объявление обоих файлов в F-spec. Он также не будет использовать цикл чтения, перемещения или dow. Я не знаю, как он может это сделать. Вот почему я очень хочу это знать.
Следующий источник представляет собой пример цикла программы; мой FLD1 из REC1 имел 10-байтовое поле, но я описал свой вывод на 20 байтов, поэтому, чтобы избежать неудачной компиляции на sev-20 RNF7501 «Длина структуры данных в поле результата не равна длине записи фактора 2.» , я указал GENLVL (20) на CRTBNDRPG:
FPF1 IP E DISK rename(rec1:rcd1)
FPF2 O F 20 DISK
DINOUT E DS EXTNAME(PF1)
C WRITE PF2 INOUT
Я не хочу, чтобы использовать программу CL. Я просто хочу сделать это с помощью одной программы либо в RPG3 или RPG4
Похожая RPG Cycle-программа могла бы эффективно выполнять то же самое, так же копирование данных из PF1 в PF2, несмотря на другое имя столбца и [таким образом, по своей сути также] в другом формате записи, используя команду CL без программы CL и почти так же мало строк.Следующий пример зависит от таблицы обязательно должна быть одной строки, которая называется QSQPTABL в QSYS2, которая обычно находится в списке системных библиотек, а второй аргумент может отражать фактическую длину командной строки, но так же легко кодирует макс прототип длиной согласно Const определению, гарантирующего чистое-заполнению до такой длины, фактически не имея посчитать [~ 53] байты конкатенированного строкового выражения:
FQSQPTABL IP E DISK rename(qsqptabl:qsqptable)
DQcmdExc PR ExtPgm('QSYS/QCMDEXC')
D 200A const
D 15P05 const
c callp QcmdExc('cpyf pf1 pf2 mbropt(*add)'
c +' fmtopt(*nochk) crtfile(*no)':200)
Принимая во внимании, оба из указанных выше источников, вероятно, загадка для любого, кто не знаком с циклом, общие последствия последних, скорее всего, будут выведены правильно [возможно, более правильно описано как правильно угадали?], почти всем, кто понимает команду CL несмотря на отсутствие понимания цикла.
И, конечно же, как было отмечено, с SQL программа, вероятно, возможно еще проще \ simpler; возможно, даже более читаемым для непосвященных [хотя с пунктом NONE, показанный как с ЧПУ, добавлена только в случае, COMMIT (* НЕТ) пропускался при запросе компиляции, вероятно, не так легко созерцаемое]:
C/Exec SQL
C+ insert into pf2 select * from pf1 WITH NC
C/End-Exec
C SETON LR
PS Исходный код из OP был первоначально [по крайней мере, до того, как был добавлен мой комментарий здесь], некорректно закодированный с помощью eval fld1 = @fld1
, когда, конечно, было предназначено eval @fld1 = fld1
в соответствии с настройкой \ данный.
Я не хочу использовать программу CL. Я просто хочу сделать это с помощью одной программы либо в RPG3, либо в RPG4. Если возможно, пожалуйста, помогите мне. –
Вы можете вставлять SQL-выражения в свою RPG-программу. http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzasc/usesqlstmt.htm?lang=en –
Я хочу очень оптимизированный код. Мой помощник по команде сказал мне, что он может написать код для этой проблемы только в 4 строках, включая объявление обоих файлов в спецификации F. Он также не будет использовать цикл чтения, перемещения или dow. Я не знаю, как он может это сделать. Вот почему я очень хочу это знать. Спасибо заранее ... –