Versions Compared

Key

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

...

7.9.3 CALL の使用例

...

例1:ライブラリPRODLIB内のINVOICEというプログラムを呼び出し、請求書番号および照会日の2つのパラメータをリテラルとして渡します。 

Visual LANSA の場合:

   

...

CALL  PGM(INVOICE PROBLIB) PARM('INV123' '010187')

  IBM i の場合:

   CALL  PGM(INVOICE.PROBLIB) PARM('INV123' '010187')


例2:フィールド#BATCH、#ORDER、および現在の日付   例2:フィールド#BATCH、#ORDER、および現在の日付(システム変数*DATEから取得)を渡してプログラムPUTBATCHを呼び出します。 CALL  PGMを渡してプログラムPUTBATCHを呼び出します。 

   CALL  PGM(PUTBATCH)

...

 PARM(#BATCH #ORDER *DATE)


例3:LANSAのプロセスORDERSを呼び出し、プロセスのメイン・メニューを表示するよう要求して、ユーザーが目的のファンクションを選択できるようにします。ユーザーが   例3:LANSAのプロセスORDERSを呼び出し、プロセスのメイン・メニューを表示するよう要求して、ユーザーが目的のファンクションを選択できるようにします。ユーザーが\[メニュー\]キーを押してプロセスORDERSを終了した場合、次のRDMLコマンドでこのファンクションの処理を続行します。 CALL  PROCESS]キーを押してプロセスORDERSを終了した場合、次のRDMLコマンドでこのファンクションの処理を続行します。 

   CALL  PROCESS(ORDERS)

...

 FUNCTION(*MENU)

...

 MENU_USED(*NEXT)


例4:LANSAのプロセスORDERSを呼び出し、プロセスのメイン・メニューを表示せずにファンクションHEADERを直接呼び出すよう要求します。ユーザーが   例4:LANSAのプロセスORDERSを呼び出し、プロセスのメイン・メニューを表示せずにファンクションHEADERを直接呼び出すよう要求します。ユーザーが\[メニュー\]または\[終了\]キーを押してファンクションHEADERを終了した場合、次のRDMLコマンドでこのファンクションの処理を続行します。 CALL  PROCESS]キーを押してファンクションHEADERを終了した場合、次のRDMLコマンドでこのファンクションの処理を続行します。 

   CALL  PROCESS(ORDERS)

...

 FUNCTION(HEADER)

...


      EXIT_USED(*NEXT)

...

 MENU_USED(*NEXT)

...

  
例5:例4と同じ操作を実行しますが、ファンクションHEADERを直接呼び出します。 

   CALL  PROCESS(*DIRECT)

...

 FUNCTION(HEADER)

...



     EXIT_USED(*NEXT)

...

 MENU_USED(*NEXT)

  
例6:データ構造DATAFILEをファンクション   例6:データ構造DATAFILEをファンクション(ORDER)に渡します。 

に渡します。 これを行うには、DATAFILEというファイルをLANSAに定義する必要があります。このファイルの実フィールドは、データ構造として別のファンクションに渡すことができます。このデータ構造の末尾にはダミー・フィールドがあるため、データ構造内にフィールドが追加されるたびに、データ構造を受け取る各ファンクションを再コンパイルする必要がありません。(データ構造内で既存のフィールドの長さ、位置、またはタイプが変更されない限り)データ構造の長さが一定であれば、呼び出されるファンクションの再コンパイルは必要ありません。 CALL  PROCESSデータ構造の長さが一定であれば、呼び出されるファンクションの再コンパイルは必要ありません。 

   CALL  PROCESS(*DIRECT)

...

 FUNCTION(ORDER)

...

 PASS_DS(DATAFILE)

  
例7:作業リスト#ORDLINEをファンクション   例7:作業リスト#ORDLINEをファンクション(ORDER)に渡します。 CALL      PROCESSに渡します。 

   CALL      PROCESS(*DIRECT)

...

 FUNCTION(ORDER)

...

 PASS_LST(#ORDLINE)
DEF_

...

LIST  NAME(#ORDLINE)

...

 FIELDS(#ORDLIN #PRODUCT #QUANTITY #PRICE) TYPE(*WORKING)

これにより、作業リスト#ORDLINEの内容をファンクションORDERから参照できるようになります。 


例8:WEBROUTINE ORDERを呼び出します。 

 

...

 

...

 

...

CALL      WEBROUTINE(ORDER)

  ORDER WEBROUTINEでFOR(*INPUT)が指定されたすべてのフィールドとリストの値が渡されます。 例9:ORDERS WAMでWEBROUTINE ORDERを呼び出します。 CALL      WEBROUTINEが指定されたすべてのフィールドとリストの値が渡されます。 


例9:ORDERS WAMでWEBROUTINE ORDERを呼び出します。 

   CALL      WEBROUTINE(#ORDERS.ORDER)

  ORDER WEBROUTINEでFOR(*INPUT)が指定されたすべてのフィールドのリストの値が渡されます。 例10:WEBROUTINEの名前を指定してフィールドから呼び出します。 #WEBRTN := が指定されたすべてのフィールドのリストの値が渡されます。 


例10:WEBROUTINEの名前を指定してフィールドから呼び出します。 

   #WEBRTN := 'ORDERS.ORDER'

...

  CALL      WEBROUTINE(*

...

EVALUATE #WEBRTN)