所属: 情報棟 一覧
ALGGN
戻る
文字型変数に記憶されているバイト数を出力します。
関数 len とは異なります。
例:
character a*10
integer lg
a = 'abc'
write(*,*) len(a) → 文字型変数 a のサイズである 10 が出力される
call ALGGN(a,lg)
write(*,*) lg → a に記憶されている'abc'のバイト数である 3 が出力される
stop
end
call ALGGN(a,lg)
入力変数
a : character 型 (サイズは何でも可)
出力変数
lg : integer 型
文字型変数 a に記憶されているバイト数が出力される。
同様の機能を持つサブルーチンを紹介します。
呼び出し方は、
call ALG250(a,lg)
とします。
ALG250 の a (character型) は ALGGN の a に相当しますが、ALG250 の a は character*250 です。
ALG250 の lg (integer型) は ALGGNの lg に相当します。
ALG250 の サブルーチン名の最後の「250」は a のサイズを示します。250バイト以外のサイズの
文字型変数を使う場合は、下記コードの「$$$」印の一つ上の行の文字を変えてください。
subroutine ALG250(a,lg)
c $$$
character a*250
c $$$
integer lg,j,k
if (a.eq.' ') then
lg=0
return
end if
do 5 j=250,40,-30
c $$$
if (a(j-29:j).ne.
*' ') then
goto 8
end if
5 continue
8 do 10 k=j,1,-1
if (a(k:k).ne.' ') then
goto 20
end if
10 continue
lg=0
return
20 lg=k
return
end
この問題は、文字型変数の初期化が不十分である場合に起こります。その文字型変数にデータを入れる
前に、以下のようにして初期化をしておきます。
例
a = ' '
戻る
▲ 簡易html化ドキュメント
Copyright(C) TAKAGI-1 All rights reserved.