所属: 情報棟 一覧

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 に記憶されているバイト数が出力される。

トラブルシューティング(不具合対処法) 

「character aa*(*)」においてコンパイルエラーが起こる  

同様の機能を持つサブルーチンを紹介します。 呼び出し方は、 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

空白の文字型変数を引数に指定しているのに、出力が 0 でなく、その変数のサイズである  

この問題は、文字型変数の初期化が不十分である場合に起こります。その文字型変数にデータを入れる 前に、以下のようにして初期化をしておきます。 例 a = ' ' 戻る
 
■  ■  ■

 

 簡易html化ドキュメント


Copyright(C) TAKAGI-1 All rights reserved.