예제 #1
0
파일: common.cs 프로젝트: stevewpalmer/jcom
 public void BasicCommonTest()
 {
     string [] code = new [] {
         "      PROGRAM COMMONTEST",
         "      COMMON A,B",
         "      COMMON /FOO/ C,D",
         "      END",
         "      FUNCTION ITEST",
         "      COMMON // X,Y /FOO/ W,Z",
         "      DATA X,Y,W,Z /12.0,78.0,-3,100/",
         "      CALL FOOBAR1",
         "      CALL FOOBAR2",
         "      ITEST=X+Y+W+Z",
         "      RETURN",
         "      END",
         "      SUBROUTINE FOOBAR1",
         "      COMMON A1,B1",
         "      A1=10",
         "      B1=20",
         "      END",
         "      SUBROUTINE FOOBAR2",
         "      REAL J",
         "      COMMON /FOO/ J,B1",
         "      J=10",
         "      B1=20",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 60);
 }
예제 #2
0
파일: data.cs 프로젝트: stevewpalmer/jcom
 public void DataArrayWithSeparateRepeats()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        INTEGER A(4)",
         "        DATA A /2*65, 2*12/",
         "        RETURN A(1)+A(2)+A(3)+A(4)",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 154);
 }
예제 #3
0
파일: data.cs 프로젝트: stevewpalmer/jcom
 public void DataArrayNonRepeat()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        INTEGER A(4)",
         "        DATA A /34,67,90,-12/",
         "        RETURN A(1)+A(2)+A(3)+A(4)",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 179);
 }
예제 #4
0
 public void ConditionalArithmeticIF2()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        A = 88",
         "        IF (A.LT.47) A= 90",
         "        ITEST = A",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 88);
 }
예제 #5
0
 public void ArithBasicAddition()
 {
     string [] code = new [] {
         "      FUNCTION TEST",
         "        INTEGER A",
         "        A = 20",
         "        B = A",
         "        RETURN A+B",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunFloat(comp, "TEST", 40f);
 }
예제 #6
0
 public void StatementFunction1()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        INTEGER B",
         "        B=12",
         "        F(B)=B*B",
         "        RETURN B+F(7)",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 61);
 }
예제 #7
0
 public void ConditionalBlockIF1()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        A = 45",
         "        IF (A.LT.47) THEN",
         "          ITEST = 33",
         "        ENDIF",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 33);
 }
예제 #8
0
파일: loops.cs 프로젝트: stevewpalmer/jcom
 public void Loops1()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        DO 20,I=1,10",
         "          J=J+I",
         "20      CONTINUE",
         "        RETURN J",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 55);
 }
예제 #9
0
 public void ArithBasicDivision()
 {
     string [] code = new [] {
         "      FUNCTION TEST",
         "        REAL A",
         "        REAL B",
         "        A = 35.60",
         "        B = 1.78",
         "        RETURN A/B",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunFloat(comp, "TEST", 20f);
 }
예제 #10
0
 public void ArithBasicMultiplication()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        INTEGER A",
         "        INTEGER B",
         "        A = 90",
         "        B = 45",
         "        RETURN A*B",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 4050);
 }
예제 #11
0
 public void StatementFunction2()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        INTEGER B",
         "        B=12",
         "        G(H,I)=(H*I)+H+I",
         "        F(B)=G(B,3)*G(B,4)",
         "        RETURN B+F(7)",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 1221);
 }
예제 #12
0
파일: format.cs 프로젝트: stevewpalmer/jcom
 public void FormatBasic()
 {
     string [] code = new [] {
         "      FUNCTION FMTTEST",
         "        CHARACTER*26 STR, FMTTEST",
         "3       FORMAT (\"The sum of \",I,\" and \",I,\" is \",I)",
         "        WRITE (STR, 3) 12,36,12+36",
         "        FMTTEST = STR",
         "        RETURN",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunString(comp, "FMTTEST", "The sum of 12 and 36 is 48");
 }
예제 #13
0
파일: format.cs 프로젝트: stevewpalmer/jcom
 public void FormatArrayRef()
 {
     string [] code = new [] {
         "      FUNCTION FMTTEST",
         "        CHARACTER*18 STR, FMTTEST",
         "        INTEGER V(3)",
         "        V(1) = 12",
         "        V(2) = 24",
         "        V(3) = 36",
         "        WRITE (STR, \"3I6\") V",
         "        FMTTEST = STR",
         "        RETURN",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunString(comp, "FMTTEST", "    12    24    36");
 }
예제 #14
0
파일: save.cs 프로젝트: stevewpalmer/jcom
 public void SaveInFunction()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        DO 10 I=1,10",
         "          ITEST = ITEST + FOO()",
         " 10     CONTINUE",
         "      END",
         "      FUNCTION FOO()",
         "        INTEGER B",
         "        SAVE B",
         "        B = B + 1",
         "        RETURN B",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 55);
 }
예제 #15
0
파일: data.cs 프로젝트: stevewpalmer/jcom
 public void DataImpliedDo1()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        INTEGER ODD(10)",
         "        DATA (ODD(I),I=1,10,2)/ 5 * 43/",
         "        DATA (ODD(I),I=2,10,2)/ 5 * 0 /",
         "        RETURN SUM(ODD)",
         "      END",
         "      INTEGER FUNCTION SUM(JRY)",
         "        INTEGER JRY(10)",
         "        SUM = 0",
         "        DO 100,I=1,10",
         "           SUM=SUM+JRY(I)",
         "100     CONTINUE",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 215);
 }
예제 #16
0
 public void ArithImplicitPrecedence2()
 {
     string [] code = new [] {
         "      FUNCTION TEST",
         "        RETURN 10 ** 3 * 2",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunFloat(comp, "TEST", 2000f);
 }
예제 #17
0
파일: data.cs 프로젝트: stevewpalmer/jcom
 public void DataBasicSyntax()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        INTEGER A,B,C,D",
         "        DATA A,B,C,D /12,13,14,15/",
         "        RETURN A+B+C+D",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 54);
 }
예제 #18
0
파일: data.cs 프로젝트: stevewpalmer/jcom
 public void DataSpecificArrayElementsWithRepeat()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        INTEGER A(4)",
         "        DATA A(1),A(2),A(4) /3*77/",
         "        RETURN A(1)+A(2)+A(3)+A(4)",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 231);
 }
예제 #19
0
 public void ArithSimplificationExp()
 {
     string [] code = new [] {
         "      FUNCTION SIMPLIFY1",
         "        REAL LH",
         "        LH=16",
         "        RETURN LH**(-1) + LH**0 + LH**1",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunFloat(comp, "SIMPLIFY1", 17.0625f);
 }
예제 #20
0
파일: data.cs 프로젝트: stevewpalmer/jcom
 public void DataRepeatCountWithMinus()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        INTEGER A,B,C,D",
         "        DATA A,B,C,D /4*-17/",
         "        RETURN A+B+C+D",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", -68);
 }
예제 #21
0
파일: data.cs 프로젝트: stevewpalmer/jcom
 public void DataSpecificArrayElementsWithOverride()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        INTEGER A(4)",
         "        A(1)=450",
         "        DATA A(1),A(2),A(4) /19,34,99/",
         "        RETURN A(1)+A(2)+A(3)+A(4)",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 583);
 }
예제 #22
0
        public void ArithDivisionByZero()
        {
            string [] code = new [] {
                "      FUNCTION ITEST",
                "        INTEGER I,J",
                "        I = 10",
                "        J = 0",
                "        RETURN I/J",
                "      END"
            };

            Compiler comp = new Compiler(new FortranOptions());
            comp.CompileString(code);
            Assert.AreEqual(0, comp.Messages.ErrorCount);
            Assert.Throws(typeof(System.DivideByZeroException), delegate { comp.Execute("ITEST"); });
        }
예제 #23
0
파일: loops.cs 프로젝트: stevewpalmer/jcom
 public void Loops6()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        LSTART=50",
         "        LEND=30",
         "        DO 20,I=LSTART,LEND",
         "            J=J+1",
         "20      CONTINUE",
         "        RETURN J",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 0);
 }
예제 #24
0
파일: common.cs 프로젝트: stevewpalmer/jcom
 public void MultipartCommonTest()
 {
     string [] code = new [] {
         "      FUNCTION ICOMMONTEST",
         "      COMMON A,B",
         "      COMMON // J,K",
         "      DATA A,B,J,K /12.0,78.0,-3,100/",
         "      RETURN ITEST()",
         "      END",
         "      FUNCTION ITEST",
         "      COMMON // X,Y,I,L",
         "      ITEST=X+Y+I+L",
         "      RETURN",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ICOMMONTEST", 187);
 }
예제 #25
0
 public void ArithTestConstantUsage()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "      PARAMETER (PI=3.1459, PI2=2*PI)",
         "        REAL A",
         "        A = (PI + PI2) / 3.0",
         "        RETURN A*100",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 314);
 }
예제 #26
0
파일: common.cs 프로젝트: stevewpalmer/jcom
 public void SplitMultipartCommonTest()
 {
     string [] code = new [] {
         "      FUNCTION ICOMMONTEST",
         "      COMMON A,B",
         "      COMMON /FOO/ J",
         "      COMMON // K,L",
         "      DATA A,B,J,K,L /12.0,78.0,-3,100,10/",
         "      RETURN ITEST()",
         "      END",
         "      FUNCTION ITEST",
         "      COMMON // X,Y /FOO/ M // I",
         "      COMMON J2",
         "      ITEST=X+Y+M+I+J2",
         "      RETURN",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ICOMMONTEST", 197);
 }
예제 #27
0
파일: loops.cs 프로젝트: stevewpalmer/jcom
 public void Loops7()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        LSTART=1",
         "        LEND=20",
         "        DO I=LSTART,LEND",
         "            J=J+1",
         "        ENDDO",
         "        RETURN J",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 20);
 }
예제 #28
0
파일: loops.cs 프로젝트: stevewpalmer/jcom
 public void Loops9()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        LSTART=1",
         "        LEND=20",
         "        DO 100 WHILE (LSTART.LE.LEND)",
         "            J=J+1",
         "            LSTART=LSTART+1",
         "100     CONTINUE",
         "        RETURN J",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 20);
 }
예제 #29
0
파일: data.cs 프로젝트: stevewpalmer/jcom
 public void DataImpliedDo3()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        INTEGER NUMBER(3,3)",
         "        DATA ((NUMBER(I,J),I=1,3),J=1,3)/1,2,3,5,8,13,21,34,55/",
         "        RETURN SUM(NUMBER)",
         "      END",
         "      INTEGER FUNCTION SUM(JRY)",
         "        INTEGER JRY(9)",
         "        SUM = 0",
         "        DO 100,I=1,9",
         "           SUM=SUM+JRY(I)",
         "100     CONTINUE",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 98);
 }
예제 #30
0
 public void ArithBasicSubtraction()
 {
     string [] code = new [] {
         "      FUNCTION ITEST",
         "        INTEGER A,B",
         "        A = 4543",
         "        B = 784",
         "        RETURN A-B",
         "      END"
     };
     Compiler comp = Helper.HelperCompile(code, new FortranOptions());
     Helper.HelperRunInteger(comp, "ITEST", 3759);
 }