Ile RPG에는 내 프로그램을 충돌시키지 않고 오버 플로우가 있습니까?

StackOverflow https://stackoverflow.com/questions/1673403

  •  16-09-2019
  •  | 
  •  

문제

ILE RPG에서 숫자 유형을 찾고있는 Cint의 방식과 비슷한 방식으로 오버플로 나올 때 "랩"할 것입니다. 그런 것이 있습니까?

도움이 되었습니까?

해결책

RPG는 그렇게하지 않을 것입니다. 내가 제안 할 수있는 가장 좋은 해결책은 당신을 위해 수학을 수행하고 오버플로를 처리하는 절차를 만드는 것입니다. RPG에는 Truncnbr Compile 옵션 및 제어 사양 키워드가 있지만 특정 시나리오에서만 적용됩니다.

간단한 카운터를 수행하는 경우 다음과 같은 숫자 필드로 데이터 구조를 만들 수 있습니다.

DCounterDS        DS                        
D Counter                 5      8  0       
D CountOverflow           1      4  0       
D WholeCounter            1      8  0 INZ(0)

그런 다음 Wholecounter에 추가 한 다음 즉시 CountoverFlow를 제로 아웃합니다. 이 예에서 카운터는 4 자리 숫자입니다. 정수 필드로 똑같은 일을 할 수 있지만 서명되지 않은 것을 권장합니다.

DCounterDS        DS                        
D Counter                 5      8U 0       
D CountOverflow           1      4U 0       
D WholeCounter            1      8U 0 INZ(0)

다시 말하지만, 이것은 절차에서 가장 잘 이루어집니다.

다른 팁

고정 형식 수학 연산 (ADD, Sub, Mult, Div)을 사용할 수 있습니다. 오버플로에 도달하면 잘립니다. 번거롭지 만 작동합니다.

0001.00 D Fld1            s              3  0                                         
0001.01 D                                                                             
0002.00 C     999           add       3             Fld1                              
0003.00  /free                                                                        
0004.00    dsply ('The current value '+%editc(Fld1:'X'));                             
0005.00    *inlr=*on;                                                                 
0006.00    return;                              

프로그램 메시지 표시

Job 912834/Sprice/DP88LT는 하위 시스템 Qinter Message Queue Sprice에서 15:39:15에 01/11/11에 시작되었습니다.
dsply 현재 값 002

또는 오버플로가 발생하면 오류 코드를 모니터링 할 수 있습니다.

 D Counter         S             10I 0

  /FREE
   Monitor;
      Counter += 1;
   On-Error 103;
      Clear Counter;
   EndMon;
  /END-FREE
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top