هل هناك نوع رقمي في إيل آر بي جي الذي سيتفرج دون تحطيم برنامجي؟
-
16-09-2019 - |
سؤال
أبحث عن نوع رقمي في إيل آر بي جي الذي سيقوم "جولة التفاف" عندما يفيض، بطريقة مماثلة لكيفية كيفية ذلك. هل هناك شيء من هذا القبيل؟
المحلول
RPG لن يسمح لك بذلك. أفضل حل يمكنني أن أقترح هو إنشاء إجراء يقوم به الرياضيات التي تتعامل مع الفائض. في حين أن آر بي جي لديها خيار ترجمة Truncnbr والتحكم في الكلمة الأساسية للتحكم في المواصفات، فإنه ينطبق فقط في بعض السيناريوهات.
إذا كنت تقوم بعرض بسيط، فيمكنك إنشاء بنية بيانات مع الحقول الرقمية المتداخلة مثل هذا:
DCounterDS DS
D Counter 5 8 0
D CountOverflow 1 4 0
D WholeCounter 1 8 0 INZ(0)
ثم تضيف إلى WHOLECOUNTER ثم CORTOVERFLOW OFF مباشرة بعد ذلك. في هذا المثال، يعد العداد رقم مكون من 4 أرقام. يمكنك أن تفعل الشيء نفسه مع الحقول المعتمدة، لكنني أنصحك الاحتفاظ بها غير موقعة:
DCounterDS DS
D Counter 5 8U 0
D CountOverflow 1 4U 0
D WholeCounter 1 8U 0 INZ(0)
مرة أخرى، يتم القيام بذلك بشكل أفضل في الإجراء.
نصائح أخرى
يمكنك استخدام العمليات الرياضية للتنسيق الثابت (إضافة، 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 بدأت في 01/11/11 في 15:39:15 في النظام الفرعي Qinter رسالة قائمة انتظار SPRICE للوظيفة الأخرى.
DSPLY القيمة الحالية 002
أو يمكنك مراقبة رمز الخطأ عند حدوث تجاوز تجاوز:
D Counter S 10I 0
/FREE
Monitor;
Counter += 1;
On-Error 103;
Clear Counter;
EndMon;
/END-FREE