Итак, есть эта программа RPGLE, которая обновляет / записывает записи в PF (скажем, FILE1).Программа RPGLE довольно старая и огромная, и желательно не вносить в нее никаких изменений.
Теперь мне нужно, чтобы программа обрабатывала только определенные записи в файле.Точнее, обрабатывать только те записи, которые есть и в другом файле.
Например, учтите, что Программа обновляет файл с именем STUDENTS, который содержит все записи студентов.Представьте, что есть еще один файл ASIAN_STUDENTS.
Таким образом, требование будет обрабатывать только те записи учеников, которые также присутствуют в файле ASIAN_STUDENTS.
Эквивалент SQL (просто чтобы датьидея) этого будет:
SELECT * FROM STUDENTS WHERE STUDENT_ID IN (SELECT STUDENT_ID FROM ASIAN_STUDENTS);
Как мне сделать это без необходимости изменять программу?Есть предложения?
Может ли FILE1 каким-либо образом быть переопределен, чтобы показывать только совпадающие записи перед выполнением программы?
Я надеюсь, что для этого есть методика, использующая OPNQRYF.Пожалуйста, сообщите.
Ниже приведен фрагмент кода того, чего я пытаюсь достичь:
PGM
OPNQRYF FILE((MFGRP00) (MFRSP00)) OPTION(*INP) +
FORMAT(MFGRP00 MFGRP00A) +
JFLD((MFRSP00/RSMORD MFGRP00/GRMORD *EQ) +
(MFRSP00/RSASST MFGRP00/GRASST *EQ) +
(MFRSP00/RSMRWK MFGRP00/GRMRWK *EQ)) +
OPNSCOPE(*JOB)
OVRDBF FILE(MFGRP00) TOFILE(MFGRP00) +
OVRSCOPE(*JOB) SHARE(*YES)
CALL MF125R00
ENDPGM
В приведенном выше фрагменте MFGRP00 - это файл, обрабатываемый программой MF125R00.
В настоящий момент существуют некоторые ошибки, связанные с обработкой MFGRP00, которые я сейчас пытаюсь устранить.
В дополнение к ответу, о котором я упоминал ниже, я усвоил трудный способ, с помощью которого opnqryf для присоединения файлов прекрасно работает, если бы мы просто прочитали данные.Но для обновления данных, а также для открываемого файла этот подход не будет работать, так как opnqryf не позволяет обновлять файл, если он соединен с другим.Таким образом, единственный выход - изменить программу RPGLE, чтобы обрабатывать только те записи, которые соответствуют критериям выбора.(Единственное, чего я все время пытался избежать).В случае, если кто-то знает какую-то технику для достижения этой цели.то есть сделать что-то вроде обновления логического файла соединения, пожалуйста, укажите здесь.
Обновление: просто обновление, мне удалось изменить программу, которая обрабатывает записи.Программа в основном представляет собой подфайл, который представляет записи пользователям для модификации.Поэтому я должен был включить дополнительную проверку условий непосредственно перед тем, как произошла запись в подфайл.
Но так как в этом случае программа обрабатывает подкачку вверх и вниз, это не так чисто.как и должно быть.