오버 플로우 될 때 C 라운드가 수행하는 것과 비슷한 방식으로 "랩 어라운드 (wrap round)"하는 ILE RPG에서 숫자 유형을 찾고 있습니다. 그런 것이 있습니까?프로그램을 중단하지 않고 오버 플로우되는 ILE RPG에 숫자 유형이 있습니까?
답변
RPG는 그렇게 할 수 없습니다. 내가 제안 할 수있는 최상의 솔루션은 수학을 수행하고 오버플로를 처리하는 프로 시저를 만드는 것입니다. RPG에는 TRUNCNBR 컴파일 옵션 및 제어 스펙 키워드가 있지만 특정 시나리오에서만 적용 가능합니다.
간단한 카운터를하고 있다면,이 같은 숫자 필드를 중복과 데이터 구조를 만들 수 있습니다
DCounterDS DS
D Counter 5 8 0
D CountOverflow 1 4 0
D WholeCounter 1 8 0 INZ(0)
은 그럼 당신은 WholeCounter에 추가 한 후 제로 아웃 직후 CountOverflow. 이 예제에서 Counter는 4 자리 숫자입니다. 정수 필드를 사용하여 동일한 작업을 수행 할 수 있지만 서명하지 않은 상태로 유지하는 것이 좋습니다.
DCounterDS DS
D Counter 5 8U 0
D CountOverflow 1 4U 0
D WholeCounter 1 8U 0 INZ(0)
다시 한 번 가장 잘 수행됩니다.
또는 오버 플로우가 발생하면 오류 코드를 모니터 할 수는 :
D Counter S 10I 0
/FREE
Monitor;
Counter += 1;
On-Error 103;
Clear Counter;
EndMon;
/END-FREE
당신은 고정 된 형식으로 수학 연산 (이하, 멀티 포트를 추가를 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;
디스플레이 프로그램 메시지
작업 912834/SPRICE/DP88LT는 메시지 큐 SPRICE가 다른 작업에 할당 QINTER 서브 시스템에 15시 39분 15초에서 01/11/11에 시작했다.
DSPLY 현재 값 002
나는 이것이 정말로 정말로 늦은 것을 알아 차리고 있다는 것을 안다. 그러나 이것이 처음에 제안되지 않은 이유가 확실하지 않다. 예, 구식 opcode는 "ILE RPG"가 아니지만 * 모든 * RPG 컴파일러는 여전히이를 수용합니다. 그리고 포장 동작을 얻는 것은 완전히 직접적인 방법입니다. 나는 그것이 실제로 성가신 것이라고 반대한다. –
좋은 지적입니다, 스티브. 나는 단지 ILE에서 길을 잃었고 내가 가지고 오게되었던 오래되었던 학교 재료의 약간을 잊는다라고 생각한다. –
- 1. 전체 프로그램을 중단하지 않고 수면 루아 스크립트?
- 2. GDB : Ctrl + C는 일반적으로 처리를 중단하지 않고 프로그램을 종료합니다.
- 3. Java에서 iSeries의 RPG에 액세스
- 4. 디자이너를 중단하지 않고 App.xaml을 이동하는 방법은 무엇입니까?
- 5. Visual Studio를 중단하지 않고 Sync Framework를 제거하십시오.
- 6. 2008 앱을 중단하지 않고 Visual Studio 2010을 사용할 수 있습니까?
- 7. PHP 애플리케이션을 중단하지 않고 Apache 서버에서 Bottle.py를 실행할 수 있습니까?
- 8. qFatal()이 응용 프로그램을 중단하지 못하게하려면 어떻게해야합니까?
- 9. 프로세스를 중단하지 않고 디버깅을 중지하거나 프로세스를 분리하는 방법은 무엇입니까?
- 10. OS X : 프로세스를 중단하지 않고 코어 덤프를 생성 하시겠습니까?
- 11. 현재 노래를 중단하지 않고 "현재 재생 목록"인 플래시 플레이어
- 12. iText - 다른 필드 (또는 파일)로 오버 플로우되는 필드가있는 채울 수있는 PDF
- 13. 전체 서비스를 중단하지 않고 특정 데이터베이스에 대한 모든 연결을 닫습니다.
- 14. 콘솔을 중단하지 않고 C#에서 콘솔 키를 가져 옵니까?
- 15. 전체 트랜잭션을 중단하지 않고 WCF에서 FaultException을 처리하는 방법?
- 16. 코드를 중단하지 않고 Objective-C에서 문자열을 분할하는 방법
- 17. 중단하지 못하는 앱 진단
- 18. 숫자 값을 변경하지 않고 백분율로 부동 소수점 숫자 표시
- 19. 내 응용 프로그램을 중단하지 않고이 NSXMLParser를 어떻게 해제 할 수 있습니까?
- 20. 기능에는 어떤 유형이 있습니까?
- 21. Python에서 Vector3 유형이 있습니까?
- 22. 오버 플로우가 있는지 여부를 감지하지 않고
- 23. 어떤 인코딩 유형이 사용되고 있습니까?
- 24. 구문 분석 및 잘못된 숫자 또는 인수 유형이 없습니다. - cfstoredproc
- 25. type = number를 사용하지 않고 iphone의 숫자 키보드를 켤 수 있습니까?
- 26. 숫자 입력을 방지하는 자바 스크립트 프로그램을 어떻게 얻을 수 있습니까?
- 27. 도넛 캐싱을 중단하지 않고 ASP.NET MVC에서 [CompressFilter]를 사용할 수 있습니까
- 28. Visual Studio 2008 및 2010을 중단하지 않고 Visual Studio 2005를 설치할 수 있습니까?
- 29. 페이지 렌더링을 중단하지 않는 자바 스크립트 코드
- 30. 예외가 발생하면 디버거를 중단하지 마십시오.
처음 물었을 때 나는 "당신이 말하는 것은 무엇입니까? * 모든 * 숫자 유형이 랩 어라운드"라고 말했을 것입니다. 열쇠는 표현식이 아닌 연산 코드를 사용하는 것입니다 (Steve의 대답에 대한 저의 의견을보십시오). –