引継ぎ文字長引数は,対応する実引数の文字長属性を取る仮引数です。星印 (*) は,仮文字引数の文字長を指定します。
文字配列仮引数も引継ぎ文字長を持つことができます。仮引数の個々の要素の文字長は,実引数の要素の文字長となります。引継ぎ文字長と配列宣言子の 2 つによって,引継ぎ文字長の文字配列の大きさが決定されます。
次の例は,引継ぎ文字長引数を示しています。
INTEGER FUNCTION ICMAX(CVAR) CHARACTER*(*) CVAR ICMAX = 1 DO I=2,LEN(CVAR) IF (CVAR(I:I) .GT. CVAR(ICMAX:ICMAX)) ICMAX=I END DO RETURN END
関数 ICMAX は,最も大きい ASCII コード値を持つ文字の位置を探します。これは引継ぎ文字長引数の長さを使って,繰返しを制御します。組込み関数 LEN は,引数の長さを決定します。
仮引数の長さは,制御が関数に移るたびに決定されます。実引数の長さは,文字変数,配列要素,部分列,または式の長さとして宣言することができます。以下に示す関数引用は,仮引数に対して,それぞれ異なる長さを指定しています。
CHARACTER VAR*10, CARRAY(3,5)*20 ... I1 = ICMAX(VAR) I2 = ICMAX(CARRAY(2,2)) I3 = ICMAX(VAR(3:8)) I4 = ICMAX(CARRAY(1,3)(5:15)) I5 = ICMAX(VAR(3:4)//CARRAY(3,5))
関連情報