Повторяющиеся поля AS400 называют разные типы в логическом файле - PullRequest
0 голосов
/ 04 мая 2018

Я сталкиваюсь с проблемой в моих программах. Есть 2 физических файла, которые объявляют поле как xxBABA. «xx» отличается для двух из этих PF, и эти поля имеют разные типы: один символ, другой, десятичный. Существует файл логики, который содержит эти два файла.

В программе префикс 'xx' заменяется на YY для всех полей, так что есть YYBABA char и YYBABA decimal.

Есть ли способ получить данные со второго?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Нет, вы даже не можете скомпилировать его таким образом.

Один из способов решить эту проблему - переименовать одно поле со спецификацией I, как предлагает @RobSchember. Другим способом, начиная с v7.1, было бы поместить в файл ключевое слово Qualified и выполнить IO в структуре данных. Таким образом, именованные поля теперь связаны с их конкретной записью. Это выглядит так:

dcl-f file1       Disk Qualified;

dcl-ds rec1       LikeRec(file1.record1: *input);
dcl-ds rec2       LikeRec(file1.record2: *input);

read file1.record1 rec1;
read file1.record2 rec2;
0 голосов
/ 04 мая 2018

Если программа в RPG, вы можете переименовать одно или оба поля, используя спецификацию I.

     IPF1RECFMT    
     I              XXBABA                      XXBABA#                               
     IPF2RECFMT    
     I              XXBABA                      XXBABA@
...