זהו הפקודה fortc שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS
תָכְנִית:
שֵׁם
fortc - כלי עזר Unidata ליצירת קוד C תואם fortran
תַקצִיר
fortc [-ל LibDir] [-O OpSys] פילה
תיאור
fortc קורא קוד C מתוך `פילה', הופך אותו לקוד תואם FORTRAN, ולאחר מכן
כותב את התוצאה לפלט סטנדרטי. השינוי תלוי במערכת ההפעלה
כי אין תקנים בעניין הזה.
ניתן לציין את מערכת ההפעלה היעד בכמה דרכים. אם ה`-O'האפשרות היא
נתון, אזי נעשה שימוש במערכת ההפעלה שצוינה על ידי הארגומנט שלה; אחרת, אם ה
משתנה סביבתי `OS' קיים, אז מערכת ההפעלה המצוינת בערכה היא
בשימוש; אחרת, ברירת המחדל של מערכת ההפעלה -- שנקבעה בזמן ההתקנה -- היא
מְשׁוּמָשׁ.
שמות גלובליים שאינם הגדרות פונקציה אך יש לגשת משני C
ו- FORTRAN צריכים להיות מוקפים ב- `FC_NAME()' מאקרו:
extern int FC_NAME(foo)(void); /* פונקציית FORTRAN */
מבנה חיצוני {
לצוף f;
int i;
} FC_NAME(comblk); /* בלוק משותף של FORTRAN */
cfoo()
{
החזר FC_NAME(foo)(); /* התקשר לפונקציה FORTRAN */
}
פונקציות C אשר יש לקרוא מ- FORTRAN נכתבות באופן הבא:
int
/*פורטרן*/
פו(
שם נתיב תו, /* שם קובץ של קובץ חדש */
סכום אמיתי, /* סכום לביטול על ידי */
doubleprecision dbl, /* כמות להטות ב-*/
void function errf, /* שגיאת שגיאה */
מספר שלם rcode /* החזיר קוד שגיאה */)
{
...
או, באופן שווה,
int
/*פורטרן*/
foo(char* pathname, float* amount, double* dbl,
void (*errf)(), int* rcode)
{
...
הנקודות שיש לשים לב אליהן בכתיבה של פונקציות תואמות FORTRAN הן:
1. פונקציות לשינוי מסומנות על ידי הליך `/*פורטרן*/' תגובה, אשר
חייב להופיע בשורה שלפני שם הפונקציה. כל הצהרות מסוג החזרה חייבות
להמשיך בהערה.
2. יש להצהיר על הפרמטרים הפורמליים בסוגריים של פונקציות ולהפריד ביניהם
פסיקים.
3. הפרמטרים הפורמליים מוגבלים לסוגים הבאים:
אופי or לְהַשְׁחִיר*
עבור משתני אופי Fortran.
דיוק כפול or לְהַכפִּיל*"
עבור ערכי נקודה צפה עם דיוק כפול.
ממשי or לָצוּף*
עבור ערכי נקודה צפה עם דיוק יחיד.
מספר שלם or int *
עבור ערכי מספרים שלמים.
סוג פונקציה שם or סוג (*שם) ()
עבור פונקציות המחזירות סוג `סוג'.
4. לא חייב להיות שום דבר חשוב אחרי הסוגר הפותח, `{', ועל אותה שורה.
יש לכתוב את הפונקציות באמצעות משתנים בעלי אותם שמות כמו הפורמלי
פרמטרים, ועם אותה סמנטיקה. במקרה של פרמטרים פורמליים של סוג
`אופי' (כלומר משתני אופי Fortran), משתנה בעל אותו שם קיים
ויהיה מסוג `לְהַשְׁחִיר*'. בנוסף, עבור כל ארגומנט של משתנה תו, מקומי
יווצר משתנה מסוג אינטגרלי והערך שלו יהיה בגודל המשויך
משתנה אופי. השם של המשתנה הזה יהיה השם של המשויך
משתנה תו עם "_לן" מצורף (למשל"pathname_len"). משתני אורך אלה עשויים
לשמש בפונקציה בדיוק כמו כל משתנה אחר.
לדוגמה, תחת SunOS הפונקציה הקודמת תהפוך (אם היא כלולה ב-
קובץ `foo.src'):
#שורה 1 "foo.src"
לא חתום
#שורה 2 "foo.src"
foo_(שם נתיב, כמות, errf, rcode, pathname_len)
char *שם נתיב;
int pathname_len;
לצוף *כמות;
void (*errf)();
int *rcode;
{
#שורה 9 "foo.src"
שימו לב ש-1) נוספו הנחיות קו קדם-מעבד; 2) שם הפונקציה היה
עם סיומת קו תחתון; ו-3) פרמטר פורמלי, `pathname_len', נוצר.
תחת UNICOS, אותו קובץ יהפוך
#לִכלוֹל
#שורה 1 "foo.src"
לא חתום
#שורה 2 "foo.src"
FOO(שם נתיב, כמות, שגיאה, rcode)
_fcd pathnamed;
לצוף *כמות;
void (*errf)();
int *rcode;
{
char *pathname = _fcdtocp (שם נתיב);
unsigned pathname_len = _fcdlen (שם נתיב);
#שורה 9 "foo.src"
שים לב, במיוחד, את התוספת '#include ' והיצירה ו
אתחול של המשתנים המקומיים `שם נתיב'ו'pathname_len'.
כלי שירות זה מיושם כסקריפט ומשתמש בכלי השירות המסופקים על ידי המערכת צמא(1) ו
m4(1).
אפשרויות
-L LibDir"
מגדיר את הספרייה המכילה את קבצי ספריית `fortc'. ברירת המחדל היא
נקבע בזמן ההתקנה.
-O OpSys
מגדיר את מערכת ההפעלה כ OpSys. ערכים ידועים כוללים 'aix', 'convexos',
`domainos', `hpux', `irix', `msoft', `next-absoft', `newsos', `sunos', `ultrix',
'unicos', ו-'vms'. כדי לאפשר גמישות רבה יותר, ייתכן שיש לערכים הידועים
כל סיומת (למשל `sunos_4.1').
הסביבה
OS מגדיר את מערכת ההפעלה אם האפשרות `-O' לא צוינה. ערכים ידועים
זהים ל- -O אוֹפְּצִיָה.
השתמש ב-fortc באינטרנט באמצעות שירותי onworks.net