2017-11-16 8 views
1

RPGタイムスタンプ検証の場合は、このベストプラクティスですか? TESTオペコードを使ってテストする方法があるはずですか?RPGタイムスタンプの検証は、このベストプラクティスですか?

d DateTimeST  S    Z           
d Value   S    26A           
d*--------------------------------------------------------------------------- 
c     Eval  Value = '2017-11-16-09.54.40.840586'   
c     Eval  DateTimeST = %timestamp(Value)     
c     If  %Error           
c     EXSR  DoSometing          
c     ENDIF              
c*-------------------------------------------------------------------   
c  DoSometing BEGSR              
c     ENDSR              
c*-------------------------------------------------------------------   
c     Eval   *inlr = *on         
c     return             

答えて

0

実行時にRNX0112エラーが発生します。使用モニタ/オンエラー*すべて/ EndMon

1

ムスタファ、

あなたはTEST(ZE)オペコードを使用してタイムスタンプをテストすることができます。 Zエクステンダーは、タイムスタンプをテストしていることを指定しており、テストが失敗した場合、Eエクステンダは%エラーをオンに設定します。

Mikeが述べたように、モニターグループにラップして、On-Errorオペコードを使用してサブルーチンを実行することもできます。

両方のメソッドのサンプルコードは次のとおりです。

d DateTimeST  S    Z 
d Value   S    26A 
d*--------------------------------------------------------------------------- 
c     Eval  Value = '2017-11-16-09.54.40.840586' 
c 
c* Method #1 - use monitor group 
c     Monitor 
c     Eval  DateTimeST = %timestamp(Value:*ISO) 
c     On-Error 
c     EXSR  DoSometing 
c     Endmon 
c 
c* Method #2 - use Test(ZE) 
c  *ISO   Test(ZE)    Value 
c     If  %Error 
c     EXSR  DoSometing 
c     Else 
c     Eval  DateTimeST = %timestamp(Value:*ISO) 
c     Endif 
c 
c     Eval   *inlr = *on 
c     return 
c*------------------------------------------------------------------- 
c  DoSometing BEGSR 
c     ENDSR 
c*------------------------------------------------------------------- 
2

ベストプラクティスこれらの日は、より次のようになります。

**free 
dcl-s DateTimeSt  Timestamp; 
dcl-s Value   Char(26); 

Value = '2017-11-16-09.54.40.840586'; 
test(ze) Value; 
if %error; 
    DoSomething(); 
else; 
    DateTimeSt = %timestamp(value); 
endif; 
return; 

// Error Proc 
dcl-proc DoSomething; 
end-proc; 

私はMONITORグループで持つ問題は、彼らごみのエラーメッセージを使用してジョブ・ログ、エラーを扱う場合でも、あなたので、ジョブ・ログからメッセージを除去するための余分なコードが必要です。

関連する問題