>

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 파일의 필드 값을 설정하지 않는 것 같습니다.

이 프로그램을 디버그 모드에서 실행하고 READE를 게시 한 EVAL XXMORD (MOSDP00의 필드)를 수행하면 비어 있습니다.

그러나 DSPLY XXMORD와 같은 이러한 필드를 사용하여 작업을 추가하면 프로그램이이 필드 값을 설정하는 것 같습니다.

누군가 이것을 이해하도록 도울 수 있습니까?

  • 답변 # 1

    RPG 컴파일러는 사용되지 않는 변수를 최적화합니다. 따라서 디버그에서 레코드 형식으로 만 암시 적으로 정의되었지만 프로그램에서 사용되지 않는 변수에서 값을 보려고하면 값이 표시되지 않습니다. 접두사에는 문제가 없습니다. DSPLY XXMORD 를 추가했을 때  작업에서 필드 사용법을 추가하여 컴파일러가 필드를 최적화하지 못했습니다. 이를 통해 디버그에서 해당 필드를 볼 수 있습니다. 사용하지 않는 레코드 형식에서 다른 필드를 시도하면 디버그에서 다시 공백으로 표시됩니다.

관련 자료

  • 이전 Groovy가 접근 자 메소드에서 필드를 작성하지 못하게하는 방법은 무엇입니까?
  • 다음 Powershell 모듈 파일에서 유형 가속기를 사용하는 방법은 무엇입니까?