Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

[ Image Removed |../../index.htm#lansa/set_error_e.htm]
現在地:

...

7.112.2 SET_ERROR の使用例

例1:以下の2つの妥当性検査ブロックは、機能的にまったく同じです。 例1:以下の2つの妥当性検査ブロックは、機能的にまったく同じです。 最初の例では、「標準」の妥当性検査ブロックを使用しています。

最初の例では、「標準」の妥当性検査ブロックを使用しています。  BEGINCHECK   CONDCHECK FIELD

     BEGINCHECK
CONDCHECK FIELD(#QUANTITY)

...

 COND('(

...

#QUANTITY >= 0) AND (#QUANTITY <= (#MEASURE * 1.462))')

...

 MSGTXT('

...

Quantity exceeds top measurement factor or is negative')
ENDCHECK

2番目の例では、SET_ERRORコマンドを使用しています。結果は、上記の例とまったく同じです。 ERRORコマンドを使用しています。結果は、上記の例とまったく同じです。  BEGINCHECK   IF          COND

     BEGINCHECK
IF          COND('(

...

#QUANTITY < 0) OR (#QUANTITY > (#MEASURE * 1.462))')
SET_

...

ERROR FOR_FIELD(#QUANTITY)

...

 MSGTXT('

...

Quantity exceeds top measurement factor or is negative')
ENDIF
ENDCHECK


例2:以下の2つの妥当性検査ブロックも、機能的にまったく同じです。 

     BEGINCHECK
FILECHECK  FIELD(#PRODNO) USING_FILE(PRODUCT)

...

 MSGTXT('

...

Product number not found in product master')
RANGECHECK FIELD(#ORDNUM)

...

 RANGE(A000000 Z999999) MSGTXT('Order number is not in range A000000 to Z999999')
RANGECHECK FIELD(#QUANTITY) RANGE(1 9999) MSGTXT('Quantity ordered must be in range 1 - 9999')
ENDCHECK

および 

     BEGINCHECK
CHECK_FOR  IN_FILE(PRODUCT)

...

 WITH_KEY(#PRODNO)
IF_

...

STATUS  IS_NOT(*EQUALKEY)
SET_

...

ERROR  FOR_FIELD(#PRODNO)

...

 MSGTXT('

...

Product number not found in product master')
ENDIF
IF         '(#ORDNUM < A000000) OR (#ORDNUM > Z999999)'
SET_ERROR  FOR_FIELD(#ORDNUM)

...

 MSGTXT('Order number is not in range A000000 - Z999999')
ENDIF
IF         '(#QUANTITY < 1) OR (#QUANTITY > 9999)'
SET_ERROR  FOR_FIELD(#QUANTITY)

...

 MSGTXT('Quantity ordered must be in range 1 - 9999')
ENDIF
ENDCHECK