所属: 情報棟 一覧

ITOAGN

 
戻る
 
 


機能 

整数型の数値データを、アラビア数字列の文字型データに変換します。 例えば、整数型の数値データ 123 (百二十三) を、文字型のデータ '123' (一・二・三) にします。

呼び出し方 

call ITOAGN(i,a,ilg) 入力変数 i : integer 型 制限: 0または正の整数であること。 出力変数 a : character 型 (character*10) i に指定された整数型の数値データに対応するアラビア数字列の文字型データが 出力される。 ilg : integer 型 i の桁数。ただし、i=0 の場合は ilg=1 になる。

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

「write(b,*) i」に関してコンパイル時に WARNING が出る  

特に問題はありません。コンパイルにより作られた実行ファイルは問題なく動作するはずです。

その他  

同様の機能をもつサブルーチンを紹介します。 以下のサブルーチン ITOA3, ITOAG, ITOA1 を3つすべて使います。呼び出し方は、 call ITOA3(i,aa) とします。ITOAG は ITOA3 内で呼び出され、ITOA1 は ITOAG 内で呼び出されます。 ITOA3 の i (integer型) は ITOAGN の i に相当します。 ITOA3 の aa (character型) は ITOAGNの a に相当しますが、ITOA3 の aa は character*3 です。 ITOA3 の サブルーチン名の最後の「3」は aa のサイズを示します。3バイト以外のサイズの 文字型変数を使う場合は、下記コードの「$」印の一つ上の行の文字を変えてください。 subroutine ITOA3(i,aa) c $ character a*100,aa*3 c $ integer i call ITOAG(i,a,3) c $ aa=a(1:3) c $ return end subroutine ITOAG(i,a,n) integer i,n,k,p character*100 a,memo character ap*1 if (i.ge.10**n) then write(*,*) 'ERROR: ITOA(too large): ',i stop end if do 10 k=1,n p=(mod(i,10**k)-mod(i,10**(k-1)))/(10**(k-1)) call ITOA1(p,ap) memo=a a=ap//memo(1:99) 10 continue return end subroutine ITOA1(i,a) integer i,j character f(10)*1,a*1 data f(1)/'1'/,f(2)/'2'/,f(3)/'3'/,f(4)/'4'/,f(5)/'5'/ data f(6)/'6'/,f(7)/'7'/,f(8)/'8'/,f(9)/'9'/,f(10)/'0'/ if (i.eq.0) then j=10 else j=i end if a=f(j) return end 戻る
 
■  ■  ■

 

 簡易html化ドキュメント


Copyright(C) TAKAGI-1 All rights reserved.