Fortran77のプログラムをJavaで変換したいと考えて現在翻訳中です。
今回その中のプログラムの一つでcharacter(ファイル名を格納する変数)、write、format、read文をJavaでの文法はどうなるかを知りたいと思い質問しました。
上はfortran、下は変換中のjavaです。
文法を書く上での考え方や単純にその一つ文法を教えて下さると幸いです。
現在わかるところは配列DIMENSIONとIF文とelse、do文のfor文です
read文は配列としてみてもいいんでしょうか?
PrintStreamoutは今調べています。
FORTRAN
11. SUBROUTINE INPUT(NEX,NIN,IBEX,IBIN,IBNO,NOB,NIB,PX,PY, 22. & KBD,KTJ) 33. IMPLICIT REAL*8(A-H,O-Z) 44. DIMENSION IBEX(KBD),IBIN(KBD),IBNO(KBD,KTJ),PX(KTJ+3) 55. DIMENSION PY(KTJ+3) 66. CHARACTER FNAME*10 77. C 88. WRITE(*,600) 99. 600 FORMAT(' INPUT FILE NAME = ? ') 1010. READ(*,500)FNAME 1111. 500 FORMAT(A10) 1212. OPEN(8,FILE=FNAME) 1313. READ(8,510)NEX,NIN 1414. IF(NEX.NE.0)THEN 1515. READ(8,510)(IBEX(I),I=1,NEX) 1616. END IF 1717. IF(NIN.NE.0)THEN 1818. READ(8,510)(IBIN(I),I=1,NIN) 1919. ELSE 2020. READ(8,510)IBIN(1) 2121. END IF 2222. DO 10 I=1,NEX 2323. READ(8,510)(IBNO(I,J),J=1,IBEX(I)) 2424. 10 CONTINUE 2525. READ(8,510)NOB,NIB 2626. READ(8,520)(PX(I),PY(I),I=1,NOB+NIB) 2727. 510 FORMAT(10I5) 2828. 520 FORMAT(2E15.7) 2929. CLOSE(8) 3030. RETURN 3131. END
Java
11. import java.io.*; 22. public class INPUT { 33. 44. /** 55. * @param args 66. */ 77. public static void INPUT(int NEX,int NIN 88. ,int[] IBEX,int []IBIN,int [][]IBNO,int NOB,int NIB,double[] PX,double []PY,int KBD,int KTJ) { 99. 1010. 1111. try{ 1212. PrintStreamout=newPrintStream(newFileOutputStream("output.txt"),true); 1313. 1. import java.io.*; 142. public class INPUT { 153. 164. /** 175. * @param args 186. */ 197. public static void INPUT(int NEX,int NIN 208. ,int[] IBEX,int []IBIN,int [][]IBNO,int NOB,int NIB,double[] PX,double []PY,int KBD,int KTJ) { 219. // TODO 自動生成されたメソッド・スタブ 2210. 2311. try{ 2412. PrintStreamout=newPrintStream(newFileOutputStream("output.txt"),true); 2513. 2614. if(NEX!=0e0){ 2715. 2816. } 2917. if(NIN!=0e0){ 3018. 3119. }else{ 3220. 3321. } 3422. for(I=1;I<=NEX;I++){ 3523. 3624. } 3725. 3826. 3927. } 4028. 4132. } 4233. }
FORTRAN
1 SUBROUTINE DATA(NEX,NODE,NELM,MTJ,JAC,IDM,PX,PY,KTJ) 2 IMPLICIT REAL*8(A-H,O-Z) 3 DIMENSION MTJ(2*KTJ+1,3),JAC(2*KTJ+1,3),IDM(2*KTJ+1) 4 DIMENSION PX(KTJ+3),PY(KTJ+3) 5 CHARACTER FNAME*30 6C 7 WRITE(*,600) 8 600 FORMAT(/,' RESULTS TO DATA FILE ? (0-YES,1-NO) ') 9 READ(*,500)INF 10 500 FORMAT(I5) 11 IF(INF.EQ.0)THEN 12 WRITE(*,610) 13 610 FORMAT(' OUTPUT FILE NAME = ? ') 14 READ(*,510)FNAME 15 510 FORMAT(A30) 16 OPEN(9,FILE=FNAME) 17 WRITE(9,620)NODE,NELM 18 WRITE(9,630)((MTJ(I,J),J=1,3),(JAC(I,J),J=1,3), 19 & IDM(I),I=1,NELM) 20 WRITE(9,640)(PX(I),PY(I),I=1,NODE) 21 620 FORMAT(2I5) 22 630 FORMAT(7I5) 23 640 FORMAT(2D15.7) 24 CLOSE(9) 25 END IF 26 RETURN 27 END
Java
1public class DATA { 2 3 /** 4 * @param args 5 */ 6 public static void DATA(int NEX,int NODE,int NELM,int [][] MTJ,int[][] JAC,int []IDM, 7 double []PX,double[] PY,int KTJ) { 8 9 } 10 11} 12
あなたの回答
tips
プレビュー