هل هناك نوع رقمي في إيل آر بي جي الذي سيتفرج دون تحطيم برنامجي؟

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

  •  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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top