— The Name in Software
Engineering Automation
The following example used the standard set of XTRAN rules for parsing Fortran and translating it to C. NOTE that the translation shown below was done with default conditions. XTRAN provides many options for controlling the way it translates.
SUBROUTINE subr1 COMMON/abc/ i, j // y, z DIMENSION j(2) REAL j, k EQUIVALENCE (j, x) EQUIVALENCE (x, a) EQUIVALENCE (m, n) EQUIVALENCE (n, p) i = 1 j(2) = i k = 3.0 m = 1 p = 1.0 x = 1.0 y = 1.0 END SUBROUTINE subr2 INTEGER arr1(3), arr2(5), arr3(8), arr4(6), arr5(3), arr6(4) INTEGER var1, var2 EQUIVALENCE (arr1(2), arr2(3), arr3(4), arr4, var2, arr6(4)) EQUIVALENCE (arr2(2), var1, arr5(2)) arr1(1) = 1 arr2(1) = 1 arr3(1) = 1 arr4(1) = 1 arr5(1) = 1 arr6(1) = 1 var1 = 1 var2 = 1 END
extern struct
{
long i;
union
{
float j[2];
float x;
float a;
}
u1;
}
abc;
extern struct
{
float y;
float z;
}
blank_common;
void subr1(void)
{
float k;
union
{
long m;
long n;
float p;
}
u1;
abc.i = 1;
abc.u1.j[1] = abc.i;
k = 3.0;
u1.m = 1;
u1.p = 1.0;
u1.x = 1.0;
blank_common.y = 1.0;
return;
}
void subr2(void)
{
union
{
struct
{
Bytes filler[8];
union
{
long arr1[3];
long var1;
}
u1;
}
s1;
struct
{
Bytes filler[4];
union
{
long arr2[5];
long arr5[3];
}
u1;
}
s2;
long arr3[8];
struct
{
Bytes filler[12];
union
{
long arr4[6];
long var2;
}
u1;
}
s3;
long arr6[4];
}
u1;
u1.s1.u1.arr1[0] = 1;
u1.s2.u1.arr2[0] = 1;
u1.arr3[0] = 1;
u1.s3.u1.arr4[0] = 1;
u1.s2.u1.arr5[0] = 1;
u1.arr6[0] = 1;
u1.s1.u1.var1 = 1;
u1.s3.u1.var2 = 1;
return;
}
COPYRIGHT 2012; reproduction prohibited without permission. Revised 2009-09-11
XTRAN is a trademark of Pennington Systems Incorporated.
|
Pennington Systems Incorporated 2820 N. Pinal Avenue, Suite 12 Casa Grande, Arizona 85122-7927 USA |
Phone: +1(480)626-5503 Fax: +1(480)626-7618 Email: Info@Pennington.com Web: http://WWW.Pennington.com |