SETLL READE для файла с префиксом - PullRequest
0 голосов
/ 19 декабря 2018

У меня странная проблема при чтении файла в программе RPGLE.

fmosdp00   if   e           k disk    prefix(xx:2)              

  SetLL ('HF':'30':'032':'SK':'0095320':'002':0:0001) mosdp00a; 
  Reade ('HF':'30':'032':'SK':'0095320':'002':0) mosdp00a;      

  *Inlr = *On;  

Вышеуказанные SETLL и READE, по-видимому, не устанавливают значения полей файла MOSDP00 должным образом.

Когда я запускаю эту программу в режиме отладки и выполняю EVAL XXMORD (поле MOSDP00) после READE, она пуста.

Но если я добавлю какую-либо операцию, используя любое из этих полей,например, DSPLY XXMORD, тогда программа, кажется, устанавливает это значение поля.

Может кто-нибудь помочь понять это.

1 Ответ

0 голосов
/ 19 декабря 2018

Компилятор RPG оптимизирует переменные, которые не используются.Таким образом, при отладке, если вы попытаетесь просмотреть значение в переменной, которая неявно определяется форматом записи, но не используется в программе, вы не увидите значение.Это не проблема с префиксами.Когда вы добавили операцию DSPLY XXMORD, вы добавили использование поля, и это не позволило компилятору оптимизировать его.Это позволяет увидеть поле в Debug.Если вы попробуете другое поле в формате записи, который не используется, при отладке оно снова будет пустым.

...