MF 

パラメーター化セクション (例)

次の一連の例は、パラメーター化セクションに引数を渡すさまざまな組み合わせと方法を示したものです。それぞれについて、返される結果も示しています。

例 1

次の例は、値を返すパラメーター化セクションの従来の実行と関数の実行を示しています。パラメーター化セクションが実行され、結果の値がローカル変数に提供されます。

declare i0 as binary-long perform m2(3) returning i0 display "i0 = " i0 declare i1 as binary-long = m2(4) display "i1 = " i1 goback. m2 section (i1 as binary-long) returning ret as binary-long. compute ret = i1 + 1.

上記のコードを実行すると、次の出力が得られます。

i0 = +0000000004 i1 = +0000000005

例 2

次の例は、パラメーターがないパラメーター化されたセクションを示しています (したがって returning 句が必要です)。

declare i1 as binary-long = m1() display "i1 = " i1 declare i2 as binary-long = m2(4) display "i2 = " i2 goback. m1 section() returning ret as binary-long. move 103 to ret. m2 section(i1 as binary-long) returning ret as binary-long. add 1 to i1 giving ret.

上記のコードを実行すると、次の出力が得られます。

i0 = +0000000103 i1 = +0000000005

例 3

次の例は、別のパラメーター化セクションの引数として使用されるパラメーター化セクションを示しています。

display a(b(3)) goback. a section(i1 as binary-long) returning i2 as binary-long. compute i2 = i1 + 2. b section(i1 as binary-long) returning i2 as binary-long. compute i2 = i1 * 3.

上記のコードを実行すると、次の出力が得られます。

+0000000011

例 4

次の例は、複数のパラメーターを含むパラメーター化セクションを示しています。引数を渡す複数の方法の組み合わせも示しています。

display a(b(3), b(5)) display a(b(3), c(5)) display a(b(3), 7) display a(8, c(5)) display a(8, 9 + c(5)) display b(a(8,9 + c(5))) goback. a section(i1 as binary-long, i2 as binary-long) returning ret as binary-long. compute ret = i1 + i2. b section(i1 as binary-long) returning i2 as binary-long. compute i2 = i1 * 3. c section(i1 as binary-long) returning i2 as binary-long. compute i2 = i1 * 4.

上記のコードを実行すると、次の出力が得られます。

+0000000024 +0000000029 +0000000016 +0000000028 +0000000037 +0000000111

例 5

次の例は、オプションのパラメーターを含むパラメーター化セクションを示しています。2 つの関数の実行は、オプションの値が無視される場合と使用される場合を示しています。

declare i1 as binary-long = m2(4) display "i1 = " i1 compute i1 = m2() display "i1 using optional param = " i1 goback. m2 section(i1 as binary-long = 998) returning ret as binary-long. compute ret =i1 + 1.

上記のコードを実行すると、次の出力が得られます。

i1 = +0000000005 i1 using optional param = +0000000999

例 6

次の例は、パラメーターを参照で渡す場合の影響を示しています(reference または value が指定されていない場合、デフォルトではパラメーターを by value で渡すことに注意してください。また、文とセクションの間で引き渡しモードが一致しない場合は、セクションで指定されたモードが使用されます)。

01 n1 binary-long value 2. perform a(reference n1) display "Value on exit = " n1 goback. a section(reference i1 as binary-long). display "value on entry = " i1 move 999 to i1.

上記のコードを実行すると、次の出力が得られます。

value on entry = +000000002 value on exit = +0000000999

例 7

次の例は、typedef グループをパラメーターとして使用し、そのパラメーターを参照で使用する方法を示しています。

01 td typedef. 03 pic x.03 n1 pic 9(4).03 pic x.03 x1 pic x(40). 01 g1 td. move 1234 to g1::n1. display "value before = " g1::n1. perform a(reference g1). display "value on exit = " g1::n1. goback. a section (reference g2 as td). display "value on entry = " g2::n1 move 999 to g2::n1.

上記のコードを実行すると、次の出力が得られます。

value before = 1234 value on entry = 1234 value on exit = 0999