זוהי הפקודה ftnchek שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS
תָכְנִית:
שֵׁם
ftnchek - בודק תוכניות Fortran 77
תַקצִיר
ftnchek [ -טיעונים[=רשימה] ] [ -מַעֲרָך[=רשימה]]
[ -[לא]קצר ] [ -calltree[=רשימה] ] [ -[לא]לבדוק ]
[ עמודים[=NUM] ] [ -מְשׁוּתָף[=רשימה]]
[ -[לא]crossref[=רשימה] ] [ -[לא]לְהַכרִיז ]
[ -[לא]חלוק ] [ -שגיאות[=NUM] ] [ -[לא]חיצוני ]
[ -[לא]f77[=רשימה] ] [ -[לא]f90[=רשימה]]
[ -[לא]f95[=רשימה] ] [ -[לא]לעזור ]
[ -[לא]מזהה-תווים[=רשימה] ] [ -include=str ]
[ -פְּנִימִי[=רשימה] ] [ -[לא]ספריה ] [ -[לא]רשימה ]
[ -makedcls[=רשימה] ] [ -mkhtml[=רשימה]]
[ -[לא]טירון ] [ -פלט=str ]
[ - גודל נקודתי[=NUM] ] [ -[לא]הִטַלטְלוּת[=רשימה]]
[ -[לא]יפה[=רשימה] ] [ -פּרוֹיֶקט[=רשימה]]
[ -[לא]טהור ] [ -[לא]שֶׁקֶט ] [ -[לא]הפניה ]
[ -[לא]משאבים ] [ -[לא]שישה צ'אר ] [ -[לא]sort ]
[ -מָקוֹר[=רשימה] ] [ בסגנון[=רשימה] ] [ -[לא]symtab ]
[ -[לא]גְמִימָה[=רשימה] ] [ -נוֹהָג[=רשימה]]
[ -[לא]vcg ] [ -[לא]גרסה ] [ -[לא]נדיף ]
[ -גודל מילים[=NUM] ] [ -לַעֲטוֹף[=NUM] ] [ קבצים ... ]
תיאור
ftnchek (קיצור של בודק Fortran) נועד לזהות שגיאות מסוימות ב-Fortran
תוכנית שבדרך כלל לא עושה מהדר. ftnchek לא נועד בעיקר לגלות
שגיאות תחביר. מטרתו לסייע למשתמש באיתור שגיאות סמנטיות. סֵמַנטִי
שגיאות הן חוקיות בשפת Fortran אך הן בזבזניות או עלולות לגרום לא נכון
מבצע. לדוגמה, משתנים שלעולם אינם בשימוש עשויים להצביע על השמטה כלשהי ב-
תכנית; משתנים לא מאותחלים מכילים זבל שעלול לגרום לתוצאות שגויות
מְחוֹשָׁב; ומשתנים שאינם מוצהרים עשויים שלא להיות בסוג המיועד. ftnchek
נועד לסייע למשתמשים באיתור באגים של תוכנית Fortran שלהם. זה לא נועד
כדי לתפוס את כל שגיאות התחביר. זו הפונקציה של המהדר. לפני השימוש
ftnchek, על המשתמש לוודא שהתוכנה מתקפלת כהלכה.
מסמך זה מסכם תחילה כיצד להפעיל ftnchek. יש לקרוא את הסעיף הזה לפני
מתחילים להשתמש ftnchek. סעיפים מאוחרים יותר מתארים ftnchekאפשרויות של ביתר פירוט, תן
דוגמה לשימוש בו, והסבר כיצד לפרש את הפלט. הסעיפים האחרונים
ציין את המגבלות והבאגים הידועים ב ftnchek.
מזמין FTNCHEK
ftnchek מופעל באמצעות פקודה בצורה:
$ ftnchek [-אופציה -אופציה ...] שם הקובץ [שם הקובץ ...]
הסוגריים מציינים משהו שהוא אופציונלי. הסוגריים עצמם לא
הוקלדו בפועל. כאן האפשרויות הן מתגי שורת פקודה או הגדרות, השולטות ב
תפעול התוכנית וכמות המידע שיודפס. אם לא
אפשרות מוגדרת, פעולת ברירת המחדל היא הדפסת הודעות שגיאה, אזהרות ו
הודעות אינפורמטיביות, אך לא רישום התוכנית או טבלאות הסמלים.
כל אפשרות מתחילה עם התו '-'. (במערכות VAX/VMS או MS-DOS אתה עשוי להשתמש
או '/' או '-'.) למען התאמה עם מוסכמה נפוצה יותר ויותר,
אפשרויות יכולות גם להתחיל ב-'--'. האפשרויות מתוארות בהרחבה בהמשך
סָעִיף.
ftnchek אפשרויות מתחלקות לשתי קטגוריות: מתגים, שהם אמת או שקר, ו
הגדרות, בעלות ערך מספרי או מחרוזת. קידומת השם של מתג הוא 'לא'
או 'לא-' כדי לכבות את זה: למשל -לא יכבה את האזהרות לגבי פונקציות לא טהורות.
הקידומת 'לא' יכולה לשמש גם עם הגדרות מספריות, שיש לה השפעה של כיבוי
האזהרות המתאימות. להגדרות השולטות ברשימות האזהרות יש תחביר מיוחד
נדון להלן. רק 3 התווים הראשונים של שם אפשרות (לא סופר את ה-'-')
צריך לספק. ניתן להשתמש בנקודתיים במקום סימן שוויון עבור מספרים או מחרוזת
קביעת מטלות; עם זאת, אנו מציגים רק את טופס סימן השווה למטה.
המתגים וההגדרות אשר ftnchek מזהה כרגע מופיעים להלן. לכל אחד
אפשרות, ברירת המחדל היא הערך המשמש אם האפשרות לא צוינה במפורש, בעוד ש-
turn-on הוא הערך המשמש אם האפשרות ניתנת מבלי להקצות לה ערך.
-טיעונים=רשימה
אזהרות בקרה על אי התאמה של סוג תוכנית משנה ואי התאמה. ברירת מחדל = הפעלה
= הכל.
-מערך=רשימה
בקרת אזהרות בבדיקת ארגומנטים של מערך של תוכניות משנה. ברירת מחדל = הפעלה =
את כל.
-קָצָר השתמש בפורמט קצר יותר עבור הודעות שגיאה מסוימות. ברירת מחדל = לא.
-calltree=רשימה
הפקת היררכיית שיחות תת-תוכנית באחד מ-3 פורמטים: טקסט call-tree, who-call-
מי ו-VCG. ברירת מחדל = אין, הפעלה = עץ, גזם, מיון.
אם -mkhtml האופציה מופעלת ו tree הוא אפשרות ה-calltree המוחלת, קובץ
בשם CallTree.html, יופק המתאר את העץ בפורמט HTML.
-חשבון בצע בדיקה. ברירת מחדל = כן.
-עמודות=NUM
הגדר את אורך הקו המרבי ל NUM עמודות. (מעבר לכך מתעלמים.) הפעלה = מקסימום =
132. ברירת מחדל = 72.
-נפוץ=רשימה
הגדר את מידת ההקפדה בבדיקת בלוקים COMMON. ברירת מחדל = הפעלה = הכל.
-crossref=רשימה
הדפס רשימת הפניות מוצלבות של קריאות לתוכניות משנה, שימוש בתווית ו/או בלוק COMMON
להשתמש. ברירת מחדל = אין.
-לְהַכרִיז
הדפס רשימה של כל המזהים שסוג הנתונים שלהם לא הוצהר במפורש. בְּרִירַת מֶחדָל
= לא.
-חֲלוּקָה
התריע בכל מקום שבו מתבצעת חלוקה (למעט חלוקה בקבוע). ברירת מחדל = לא.
-שגיאות=NUM
הגדר את המספר המרבי של הודעות שגיאה בכל מפל. ברירת מחדל = הפעלה = 3.
-חיצוני
אזהרה אם תוכניות משנה חיצוניות המופעלות לעולם אינן מוגדרות. ברירת מחדל = כן.
-f77=רשימה
בקרת אזהרות ספציפיות לגבי הרחבות נתמכות לתקן Fortran 77.
ברירת מחדל = אין, הפעלה = הכל.
-f90=רשימה
בקרת אזהרות ספציפיות לגבי הרחבות נתמכות לתקן Fortran 77
שלא אומצו כחלק מתקן Fortran 90. ברירת מחדל = אין, הפעל
= הכל.
-f95=רשימה
בקרת אזהרות ספציפיות לגבי תכונות Fortran 77 סטנדרטיות שנמחקו מהן
תקן Fortran 95. ברירת מחדל = אין, הפעלה = הכל.
עזרה הדפס תקציר פקודות. ברירת מחדל = לא.
-מזהה-תווים=רשימה
הגדר תווים שאינם אלפאנומריים שניתן להשתמש בהם במזהים. ברירת מחדל =
הפעלה = סימן דולר וקו תחתון.
-include=נתיב
הגדר ספרייה לחיפוש קבצי INCLUDE לפני חיפוש בכל המערכת
מַדרִיך. מִצטַבֵּר. ברירת מחדל = הפעלה = אין.
-מוטבעי=רשימה
טיפול בקרה של פונקציות פנימיות לא סטנדרטיות. ברירת מחדל = הכל מלבד vms ל
גרסת יוניקס, הכל מלבד יוניקס עבור גרסת VMS, הכל מלבד יוניקס ו vms לאחר
גרסאות. הדלקה = הכל.
-ליבררי
התחל מצב ספרייה: אל תזהיר על תוכניות משנה בקובץ המוגדרות אבל
מעולם לא נעשה בו שימוש. ברירת מחדל = לא.
-רשימה הדפס את רשימת המקור של התוכנית. ברירת מחדל = לא.
-makedcls=רשימה
הכן תיק הצהרות. ה רשימה מציין אפשרויות עבור הפורמט של זה
קוֹבֶץ. ברירת מחדל = אין, הפעלה = הצהרות.
-mkhtml=רשימה
צור קובצי HTML בודדים מניתוח ftnchek והערות קוד.
בדרך כלל תרצו גם לפרט -קריאה=עץ כדי ליצור את קובץ ה-HTML הבסיסי
CallTree.html. ברירת מחדל = אין, הפעלה = מסמכים.
-טִירוֹן
תן פלט מתאים למשתמשים מתחילים. ברירת מחדל = כן.
-פלט=שם הקובץ
שלח פלט לקובץ הנתון. ברירת מחדל והפעלה שולחת פלט למסך.
(סיומת ברירת המחדל של שם הקובץ היא .lis).
-pointersize=NUM
הגדר את הגודל של משתני ``Cray pointer'' ל NUM בתים. מינימום = 1, מקסימום = 16.
ברירת מחדל = הפעלה = 4
-ניידות=רשימה
הזהר לגבי שימושים שאינם ניידים. ברירת מחדל = אין, הפעלה = הכל.
-יפה=רשימה
תן אזהרות על מראה אולי מטעה של קוד המקור. ברירת מחדל = תור-
על = הכל.
-פרויקט=רשימה
צור קובץ פרויקט (ראה הסבר למטה). ברירת מחדל = לא.
טהור נניח שהתפקודים טהורים, כלומר אין להם תופעות לוואי. ברירת מחדל = כן.
-שֶׁקֶט הפקת פלט פחות מילולי. ברירת מחדל = לא.
-התייחסות
הדפס טבלה של תוכניות משנה שאליהן מתייחס כל תוכנית משנה. ברירת מחדל = לא.
מקורות
הדפס את כמות המשאבים המשמשים בניתוח התוכנית. ברירת מחדל = לא.
-שישה צ'אר
רשום כל שמות משתנים שמתנגשים באורך של 6 תווים. ברירת מחדל = לא.
-סוג הדפס רשימה של תוכניות משנה ממוינות בסדר הדרוש. ברירת מחדל = לא.
-מקור=רשימה
בחר אפשרויות עיצוב מקור: צורה קבועה או חופשית, DEC Fortran בפורמט לשונית
קווים, הצהרת INCLUDE בסגנון VMS, רצפי בריחה לאחור בסגנון UNIX, ו
הקלדה מרומזת של פרמטרים. ברירת מחדל = אין, הפעלה = הכל.
-סגנון=רשימה
הפק אזהרות בררניות במיוחד לגבי תכנות מיושנות או מיושנות
מבנים. ברירת מחדל = אין, הפעלה = הכל.
-סימטאב
הדפס טבלת סמלים וטבלת תוויות עבור כל תת תוכנית. ברירת מחדל = לא.
-קטיעה=רשימה
בדוק אם יש אובדן אפשרי של דיוק על ידי חיתוך. ברירת מחדל = הפעלה = הכל.
-שימוש=רשימה
אזהרות בקרה על משתנים שאינם בשימוש או לא מאותחלים, בלוקים נפוצים וכו'.
ברירת מחדל = הפעלה = הכל.
-vcg הפק פורמט VCG של גרף שיחות.
-הפך
מספר גרסה להדפסה. ברירת מחדל = לא.
-נָדִיף
נניח שבלוקים COMMON מאבדים את ההגדרה בין הפעלות. ברירת מחדל = לא. (מְיוּשָׁן.
השתמש -נפוץ=נדיף במקום זאת.)
-גודל מילים=NUM
הגדר את ברירת המחדל של גודל המילה עבור כמויות מספריות ל NUM בתים. ברירת מחדל = הפעלה =
4 בתים.
-לעטוף=NUM
הגדר את עמודת הפלט שבה תעביר את הודעות השגיאה והאזהרות הארוכות אל הבא
קַו. אם מוגדר ל-0, כבה את העטיפה. ברירת מחדל = הפעלה = 79.
כאשר משתמשים ביותר מאפשרות אחת, יש להפריד ביניהם ברווח ריק, למעט ב
מערכות כגון VMS שבהן האפשרויות מתחילות בקו נטוי ( / ). אין להציב רווחים ריקים
סביב סימן השוויון (=) בהגדרה. ftnchek "?" יפיק תקציר פקודה
פירוט כל האפשרויות וההגדרות.
עבור הגדרות שלוקחות רשימה של מילות מפתח, כלומר -טיעונים, -מַעֲרָך, -calltree, -מְשׁוּתָף,
-crossref, -F77, -F90, -F95, -פְּנִימִי, -makedcls, -mkhtml, -הִטַלטְלוּת, -יפה,
-פּרוֹיֶקט, -מָקוֹר, בסגנון, -גְמִימָה, ו -נוֹהָג, הרשימה מורכבת ממילות מפתח
מופרדים בפסיקים או נקודתיים. אם רשימת מילות המפתח נשמטת, ההשפעה היא להגדיר
האפשרות לערך ההפעלה שלה (זהה כמו ``הכל'' ברוב המקרים). כמו כן, אם הרשימה כן
מושמט, ניתן להקדים את שם ההגדרה לא or לא- לבטל את כל האפשרויות
בקרות. לדוגמה, -F77 מפעיל את כל האזהרות לגבי מבנים לא סטנדרטיים, בעוד
-nof77 מכבה את כולם. שלוש מילות מפתח מיוחדות הן:
לעזור הדפס את כל מילות המפתח של האפשרויות הנשלטות על ידי ההגדרה, עם קצר
הסבר על המשמעויות שלהם. לא ניתן לתת מילת מפתח זו ברשימה עם אחר
מילות מפתח.
את כל הגדר את כל האפשרויות. זה מפעיל את כל האפשרויות הנשלטות על ידי ההגדרה.
אף לא אחד נקה את כל האפשרויות. זה מכבה את כל האפשרויות הנשלטות על ידי ההגדרה.
שלוש מילות מפתח מיוחדות אלו חייבות להינתן במלואן. עבור כל שאר מילות המפתח, רק כמה שיותר
יש לתת אותיות של מילת המפתח הנחוצות כדי לזהות אותה באופן חד משמעי, או א
ניתן להשתמש בדפוס תווים כלליים. הכללת מילת מפתח ברשימה הופכת את המתאים
אפשרות מופעלת. לדוגמה, -f77 = מהותי יפעיל רק את האזהרות לגבי השימוש ב
פונקציות פנימיות לא סטנדרטיות. קידומת מילת מפתח על ידי לא- מכבה את האפשרות שלו. ל
דוגמא, -יפה=לא-קו ארוך מכבה אזהרות לגבי שורות החורגות מ-72 עמודות
אורך תוך השארת כל שאר האזהרות לגבי מראה מטעה בתוקף. אם
להגדרה יש ברירת מחדל אף לא אחד, תוכל להפעיל את כל האפשרויות מלבד אחת או שתיים על ידי שימוש את כל
ראשון. לדוגמה, -f77=הכל,לא כולל מאפשר אזהרות לגבי כל ההרחבות הלא סטנדרטיות
למעט הצהרות INCLUDE. אם להגדרה יש ברירת מחדל את כל, אתה יכול לכבות את כל האזהרות
למעט אחד או שניים באמצעות אף לא אחד ראשון. לדוגמה, -קטיעה=אין, הורדה בדרגה היה מסתובב
לבטל את כל האזהרות הקשורות לדייק פרט לגבי הורדות בדרגה. דפוסי תווים כלליים מכילים
כוכבית שתייצג מחרוזת תווים כלשהי. אם נעשה שימוש בדפוס תווים כלליים, כל
אזהרות התואמות לו מושפעות. אם לא- הוא מקודם לתבנית, כל ההתאמה
אזהרות כבויות, אחרת כולן מופעלות. האורך המינימלי החד משמעי
הכלל אינו חל על התאמת תווים כלליים. לדוגמה, השתמש -usage=no-*var* לכבות
כל האזהרות הנוגעות לשימוש משתנה (מקומי ונפוץ כאחד). (ייתכן שמשתמשי יוניקס יצטרכו
ציטוט כל אפשרויות המכילות תווים כלליים על מנת למנוע מהקליפה לנסות
הרחב אותם.) תווים כלליים מזוהים רק ברשימות של מילות מפתח אזהרה, לא בראש-
אפשרויות הרמה עצמן.
מתי ftnchek מופעל, הוא מחפש משתני סביבה וגם העדפות
קוֹבֶץ. כל האפשרויות המוגדרות בסביבה או בקובץ ההעדפות משמשות כ
ברירות מחדל במקום ברירות המחדל המובנות. הם מוחקים על ידי כל שורת פקודה
אפשרויות. עיין בסעיף על שינוי ברירות המחדל לפרטים על הסביבה
אפשרויות וקובץ ההעדפות.
כאשר נותנים שם של קובץ קלט, הסיומת היא אופציונלית. אם לא תינתן ארכה,
ftnchek תחילה יחפש קובץ פרויקט עם סיומת .prj, וישתמש בזה אם זה
קיים. אם לא, אז ftnchek יחפש קובץ מקור Fortran עם הסיומת .ל
עבור מערכות VMS, .f עבור מערכות UNIX. ניתן לתת ליותר משם קובץ אחד ftnchek,
והוא יעבד את המודולים בכל הקבצים כאילו היו בקובץ בודד.
תווים כלליים מותרים במפרט שמות הקבצים בשורת הפקודה עבור ה-VMS
וגרסאות MS-DOS, כמו גם כמובן תחת UNIX וכל מערכת אחרת שמבצעת
הרחבת תווים כלליים במעבד הפקודות.
אם לא ניתן שם קובץ, ftnchek יקרא קלט מהקלט הסטנדרטי.
אפשרויות
סעיף זה מספק דיון מפורט יותר על ftnchek אפשרויות שורת הפקודה. אפשרויות
ושמות קבצים עשויים להיות משולבים בשורת פקודה. רוב האפשרויות הן מיקום: כל אחת
האופציה נשארת בתוקף מהנקודה שבה היא נתקלת עד שהיא תידחה על ידי a
שינוי מאוחר יותר. כך למשל, הרישום עשוי להידחק עבור קבצים מסוימים ולא עבור
אחרים. יוצאי דופן הם: ה -פְּנִימִי, - גודל נקודתי, ו -גודל מילים הגדרות, אשר
לא ניתן לשנות לאחר שהחל עיבוד קבצי קלט; ה -טיעונים, -מַעֲרָך,
-calltree, -מְשׁוּתָף, -crossref, -חיצוני, -התייחסות, מקורות, -סוג, -vcg, ו -נָדִיף
אפשרויות, כאשר הפעולה תלויה רק בערך האופציה לאחר העיבוד של
קבצי הקלט הסתיימו; וה -לִכלוֹל הגדרה, שהיא מצטברת.
שמות האפשרויות ברשימה הבאה הם בסדר אלפביתי.
-טיעונים=רשימה
שולט באזהרות לגבי חוסר התאמה בין ארגומנטים של תת תוכנית בפועל לבין ארגומנטים דמים,
וגם לגבי חוסר התאמה בין סוג המשנה הצפוי לממשי. (ממשי
ארגומנט הוא ארגומנט המועבר לתת-התוכנית על ידי המתקשר; טיעון דמה הוא
ארגומנט שהתקבל על ידי תת-התוכנית.) כברירת מחדל, כל האזהרות מופעלות.
השמיים רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. מאז כל אלה
אזהרות פועלות כברירת מחדל, כלול מילת מפתח עם קידומת של לא- לכבות א
אזהרה מיוחדת. ישנן שלוש מילות מפתח מיוחדות: את כל להפעיל את כל
אזהרות לגבי ויכוחים, אף לא אחד כדי לכבות את כולם, ו לעזור כדי להדפיס את הרשימה של
כל מילות המפתח עם הסבר קצר על כל אחת מהן. אם רשימה מושמט, -טיעונים
שווה -טיעונים=הכל, ו -ויכוחים שווה -טיעונים=אין.
מילות המפתח האזהרות עם המשמעויות שלהן הן כדלקמן:
מערך:
להזהיר מפני שימוש לא עקבי בארגומנטים שהם מערכים. אזהרות אלו יכולות
להיות נשלט עוד יותר על ידי -מַעֲרָך אוֹפְּצִיָה.
סוג:
אזהרה לגבי ארגומנטים דמה מסוג נתונים שונה מהארגומנטים בפועל.
סוג פונקציה:
אזהרה אם ההפעלה מניחה שערך ההחזרה של הפונקציה הוא מסוג אחר
ממה שהוא בפועל. מזהיר גם אם פונקציה נקראת כתת שגרה, או
להיפך.
מספר:
להזהיר על הפעלת תת-תוכנית עם מספר שונה של ארגומנטים מה-
תוכנית המשנה מצפה.
לתאימות עם גרסאות קודמות של ftnchek, צורה מספרית של זה
מקובלת גם ההגדרה: ה רשימה מוחלף במספר מ-0 עד 3. ערך של
0 מכבה את כל האזהרות, 1 מדליק בלבד מספר, 2 סיבובים כולם למעט מספר,
ו-3 מפעילים את כל האזהרות.
הגדרה זו אינה חלה על בדיקת הפעלת פונקציות פנימיות או
פונקציות הצהרה, שניתן לכבות רק על ידי ה -לא צ'ק אוֹפְּצִיָה.
ראה גם: -מַעֲרָך, -ליבררי, -נוֹהָג.
-מערך=רשימה
שולט במידת ההקפדה בבדיקת הסכמה בין בפועל לדמה
ארגומנטים של תת תוכנית שהם מערכים. האזהרות הנשלטות על ידי הגדרה זו הן
עבור קונסטרוקציות שעשויות לשמש באופן לגיטימי מתכנת בעל ידע,
אבל זה מצביע לעתים קרובות על שגיאות תכנות. כברירת מחדל, כל האזהרות הופכות
על.
השמיים רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. מאז כל אלה
אזהרות פועלות כברירת מחדל, כלול מילת מפתח עם קידומת של לא- לכבות א
אזהרה מיוחדת. ישנן שלוש מילות מפתח מיוחדות: את כל להפעיל את כל
אזהרות לגבי ארגומנטים של מערך, אף לא אחד כדי לכבות את כולם, ו לעזור כדי להדפיס את
רשימה של כל מילות המפתח עם הסבר קצר על כל אחת מהן. אם רשימה מושמט,
-מַעֲרָך שווה -מערך=הכל, ו -נוארי שווה -מערך=אין. ה
מילות מפתח אזהרה עם המשמעויות שלהן הן כדלקמן:
ממדים:
אזהרה אם הטיעונים שונים במספר הממדים שלהם, או אם בפועל
ארגומנט הוא אלמנט מערך בעוד הארגומנט הדמה הוא מערך שלם.
גודל:
אזהרה אם שני הארגומנטים הם מערכים, אך הם שונים במספר האלמנטים.
לתאימות עם גרסאות קודמות של ftnchek, צורה מספרית של זה
מקובלת גם ההגדרה: ה רשימה מוחלף במספר מ-0 עד 3. ערך של
0 מכבה את כל האזהרות, 1 מדליק בלבד ממדים, 2 הדלקות בלבד גודל, ו
3 מפעיל את כל האזהרות.
הערה: תמיד ניתנת אזהרה ללא קשר להגדרה זו אם הארגומנט בפועל
הוא מערך בעוד הארגומנט הדמה הוא משתנה סקלרי, או אם בפועל
ארגומנט הוא משתנה או ביטוי סקלרי בעוד הארגומנט הדמה הוא מערך.
מקרים אלה הם לעתים רחוקות מכוונים. (כדי לכבות אפילו אזהרות אלה, השתמש
-טיעונים=אין מערך.) לעולם לא ניתנת אזהרה אם הטיעון בפועל הוא an
אלמנט מערך בעוד הארגומנט הדמה הוא משתנה סקלרי. במידות משתנות
מערכים ומערכים בגודל 1 או כוכבית תואמים כל מספר של מערכים
אלמנטים. אין בדיקה האם מערכים רב מימדיים מסכימים בגודל
של כל מימד בנפרד.
ראה גם: -טיעונים, -ליבררי, -נוֹהָג.
-קָצָר
בוחר פורמט קצר יותר עבור חלק מהודעות האזהרה. נכון לעכשיו, האזהרות היחידות
נשלטים על ידי דגל זה הם אלה שמודפסים בסוף העיבוד של כל אחד מהם
תת תוכנית. אלה כוללים אזהרות לגבי משתנים שמוגדרים אך אינם בשימוש או
בשימוש לפני הגדרה, שמות משתנים שאינם תואמים לתקן Fortran 77,
וכו' (אזהרות אלו עשויות להידחק לחלוטין בהתאם לדגלים אחרים, כגון
מה היא -נוֹהָג or -F77 דגלים.) בפורמט ברירת המחדל כל משתנה רשום ב-a
שורה נפרדת, יחד עם מספר השורה שבה המשתנה מוצהר, מוגדר או
בשימוש, בהתאם לאופי האזהרה. הפורמט הקצר יותר פשוט מפרט את כולם
משתנים עליהם חלה האזהרה, עם עד 4 משתנים בשורה.
ראה גם: -שֶׁקֶט.
-calltree=רשימה
סיבות ftnchek כדי להדפיס את מבנה השיחה של התוכנית השלמה.
השמיים רשימה מורכב ממילות מפתח המופרדות בפסיקים או נקודתיים. יש שני מיוחדים
מילות מפתח: אף לא אחד לבטל את כל האפשרויות, ו לעזור כדי להדפיס את הרשימה של כל
מילות מפתח עם הסבר קצר על כל אחת מהן. (מילת המפתח את כל מדליק את כל
אפשרויות, אך בדרך כלל אין להשתמש בהם מכיוון שרק פורמט אחד צריך להיות
צוין.) אם רשימה מושמט, -calltree שווה -calltree=עץ, ו
-נוקלטרי שווה -calltree=אין. כברירת מחדל לא מודפס גרף שיחות.
אם האופציה -mkhtml מופעלת ו tree הוא אפשרות ה-calltree המוחלת, קובץ
בשם CallTree.html, יופק גם המתאר את העץ בפורמט HTML. זֶה
הקובץ שימושי כנקודת התחלה לעיון בקובצי HTML המתארים כל אחד מהם
מרכיב של התוכנית.
מילות המפתח השולטות באיזה פורמט נעשה שימוש הן כדלקמן:
עץ:
לייצר את גרף השיחות בפורמט עץ.
הפניה:
הפק את גרף השיחות בפורמט מי-מתקשר-למי (זהה כמו -התייחסות החלף).
vcg:
הפק את גרף השיחות בפורמט VCG (זהה כמו -vcg החלף).
רק אחד מהפורמטים עץ, הפניה, או vcg ניתן לפרט.
מילות המפתח הבאות שולטות באפשרויות המשפיעות על הפלט:
לִגזוֹם:
לגזום תתי-עצים חוזרים ונשנים (מתאים רק עם עץ). זו ברירת המחדל.
sort:
למיין את הילדים של כל שגרה לפי סדר אלפביתי. זוהי ברירת המחדל.
ראה את הדיון ב -התייחסות ו -vcg דגלים לפרטים על אלה
פורמטים.
בעד עץ פורמט, גרף השיחה מודפס החל מהתוכנית הראשית,
אשר רשום בשורה הראשונה בשוליים השמאליים. ואז בשורות הבאות,
כל שגרה שנקראת על ידי התוכנית הראשית מופיעה ברשימה, מסומנת כמה רווחים, ואחריה
לפי תת-עץ שמתחיל בשגרה זו.
במצב ברירת המחדל, אם שגרה נקראת על ידי יותר משגרה אחת אחרת, שלה
תת-עץ שיחה מודפס רק בפעם הראשונה שנתקל בו שיחות מאוחרות יותר נותנות בלבד
השם השגרתי וההודעה ``(ראה לעיל)''. כדי להדפיס עבורו את עץ המשנה
כל התרחשות של השגרה, השתמש באפשרות ללא גזם.
שים לב שעץ השיחות לא יהיה שלם אם אחד מקבצי הקלט הוא פרוייקט
קבצים המכילים יותר ממודול אחד שנוצרו ב -ליבררי מצב. ראה את
דיון על קבצי הפרויקט להלן.
נקודות טכניות: כל רשימה של שגרות שנקראות על ידי שגרה נתונה מודפסת
סדר אלפביתי אלא אם כן ללא מיון ניתנת אפשרות. אם מספר תוכניות עיקריות
נמצאות, עץ השיחות של כל אחד מהם מודפס בנפרד. אם אין תוכנית ראשית
נמצא, דוח על כך מודפס, ועצי השיחות של כל רמה עליונה
שגרות שאינן ספריות מודפסות. דגל זה שולט רק בהדפסת השיחה
עֵץ: ftnchek בונה את עץ השיחה בכל מקרה כי הוא משמש לקביעה
אילו מודולי ספרייה ייבדקו. ראה את הדיון ב -ליבררי
דגל.
לתאימות עם גרסאות קודמות של ftnchek, צורה מספרית של זה
מקובלת גם ההגדרה: ה רשימה מוחלף במספר מ-0 עד 15. זה
מספר נוצר מ-1 עבור עץ פורמט, 2 עבור הפניה פורמט, או 3 עבור vcg
פורמט, פלוס 4 עבור ללא גזם, ו 8 עבור ללא מיון.
ראה גם: -crossref, -ליבררי, -התייחסות, -סוג, -סימטאב, -vcg.
-חשבון
מתג זה מסופק כדי שניתן יהיה לכבות שגיאות והודעות אזהרה כאשר
ftnchek משמש למטרות אחרות מלבד מציאת באגים, כגון הצהרות
או הדפסת עץ השיחה. זה מיקום, אז לאחר ביטול כל הסימון,
ניתן להפעיל מחדש את ההמחאות שנבחרו. האפקט של -לא צ'ק הוא לשים הכל
מתגים, הגדרות מספריות והגדרות השולטות ברשימות האזהרות שלהם
ערכי כיבוי, כאילו כולם צוינו עם הקידומת -no. מתגים
והגדרות המפרטות אפשרויות ואופני פעולה, במקום שליטה
אזהרות, אינן מושפעות. אלו הם עמודים, -crossref, -לִכלוֹל, -פְּנִימִי,
-ליבררי, -רשימה, -makedcls, -טִירוֹן, -תְפוּקָה, - גודל נקודתי, -פּרוֹיֶקט, -שֶׁקֶט,
-התייחסות, מקורות, -סוג, -מָקוֹר, -סימטאב, -vcg, -הפך, -גודל מילים, ו
-לַעֲטוֹף. ברירת מחדל = כן.
שגיאות ניתוח (שגיאות תחביר עקב הצהרות לא מזוהות או שגויות) אינן
מדוכא על ידי מתג זה, מכיוון שהתוצאות עשויות להיות שגויות אם ftnchek אין
ניתח את התוכנית בצורה נכונה.
ישנן כמה שגיאות שונות והודעות אזהרה שאינן נשלטות על ידי
כל מתג אחר, ולכן ניתן לכבות אותו רק על ידי מתג זה. שימו לב שהשימוש
-חשבון הבא -לא צ'ק יש רק את ההשפעה של הפיכת האזהרות המיוחדות הללו
מופעל מחדש, ואינו משחזר את כל הבדיקות שהוא כיבה. אזהרות אלו הן:
o המודול אינו מכיל הצהרות ניתנות להפעלה.
o בצורת מקור חופשי, רווח חסר במקום שבו נדרש רווח (למשל בין א
מילת מפתח ומזהה) או רווח קיים במקום שבו אסור (למשל בתוך
מזהה).
o מפרט אורך אפס או שלילי בהצהרת סוג נתונים של הטופס
סוג*לן.
o אופרנד/ים לא חוקיים בביטוי.
o מערך שהוקצה לסקלרי.
o חוסר התאמה בין DO index ו-bounds.
o בלוק משותף לא מוגדר שהוכרז במשפט SAVE.
o פונקציה פנימית שהוכרזה במפורש עם סוג לא תואם.
o פונקציה פנימית לא ידועה המוצהרת במפורש במשפט INTRINSIC.
o פונקציה פנימית המועברת כארגומנט של תת-תוכנית אינה מוכרזת ב-an
הצהרה פנימית.
o פונקציה פנימית או פונקציית משפט שהופעלה בצורה שגויה.
o הפונקציה לא מגדירה ערך החזרה לפני הצהרת RETURN.
o ערך קבוע של פרמטר לא הוערך (זהו ftnchekאשמתו, והיא צודקת
ליידע אותך על העובדה).
o נקודת הכניסה של תת-תוכנית משמשת מאוחר יותר כשם של תת-תוכנית אחרת.
o מילת מפתח לא ידועה בשימוש בהצהרת קלט/פלט.
o הפניה לא חוקית לתווית (למשל GOTO מתייחסת להצהרה שאינה ניתנת להפעלה; I/O
הצהרה מתייחסת להצהרה שאינה בפורמט).
ראה גם: -שגיאות.
-עמודות=NUM
הגדר את אורך ההצהרה המקסימלי ל NUM עמודות. (מעבר לזה מתעלמים.) זה
ההגדרה מסופקת כדי לאפשר בדיקה של תוכניות שעלולות להפר את Fortran
מגבלה סטנדרטית של 72 עמודות לאורך ההצהרה. על פי
סטנדרטי, מתעלמים מכל התווים שעברו עמודה 72. אם נעשה שימוש בהגדרה זו מתי
מה היא -f77=קו ארוך האפשרות בתוקף, תינתן אזהרה עבור כל שורות פנימה
אילו תווים מעבר לעמודה 72 מעובדים. הפעלה = מקסימום = 132. ברירת מחדל = 72.
הגדרה זו אינה מדחיקה אזהרות לגבי נוכחותם של תווים מעבר
עמודה 72. כדי לעבד קוד עם טקסט תוכנית משמעותי מעבר לעמודה 72, השתמש בזה
הגדרה והיו בטוחים שה -F77 קו ארוך האפשרות כבויה. לעיבוד קוד עם
מספרי רצף בעמודות 73 עד 80, השאר את הגדרת העמודות כברירת מחדל
ערך והשתמש ב -יפה=לא-קו ארוך דגל.
ראה גם: -F77, -יפה.
-נפוץ=רשימה
הגדרה זו שולטת בהקפדה על הבדיקה של בלוקים COMMON. כברירת מחדל, הכל
אזהרות למעט נדיף מופעלות.
השמיים רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. מאז רוב אלה
אזהרות פועלות כברירת מחדל, כלול מילת מפתח עם קידומת של לא- לכבות א
אזהרה מיוחדת. ישנן שלוש מילות מפתח מיוחדות: את כל להפעיל את כל
אזהרות, אף לא אחד כדי לכבות את כולם, ו לעזור כדי להדפיס את רשימת כל מילות המפתח
עם הסבר קצר על כל אחד. אם רשימה מושמט, -מְשׁוּתָף שווה
-משותף=מידות,מדויק,אורך,סוג, ו -לא נפוץ שווה -נפוץ=אין.
מילות המפתח האזהרות עם המשמעויות שלהן הן כדלקמן:
ממדים:
מערכים תואמים בכל הצהרה של בלוק חייבים להסכים בגודל ו
מספר מידות. אפשרות זו משפיעה רק בשימוש יחד עם
מְדוּיָק.
מְדוּיָק:
ההשוואה של שני בלוקים נעשית משתנה אחר משתנה ולא פשוט
המחייב הסכמה בין מקומות אחסון תואמים. השתמש בזה אם הכל
הצהרות של בלוק COMMON נתון אמורות להיות זהות, כלומר א
תרגול תכנות טוב.
אורך:
אזהרה אם הצהרות שונות של אותו בלוק אינן שוות באורך הכולל.
תקן Fortran 77 דורש כל בלוק משותף בעל שם, אך לא משותף ריק,
להיות באותו אורך בכל המודולים של התוכנית.
סוג:
בכל הצהרה של בלוק COMMON נתון, מיקומי זיכרון מתאימים
(מילים או בתים) חייבים להסכים בסוג הנתונים. אם משתמשים בו יחד עם מְדוּיָק, זה
ידרוש שהמשתנים המתאימים יסכימו בסוג הנתונים.
נדיף:
נניח שבלוקים COMMON הם נדיפים.
מתכנתי Fortran רבים מניחים שמשתנים, בין אם מקומיים ובין אם ב-COMMON, כן
סטטי, כלומר שברגע שהוקצו ערך, הם שומרים על ערך זה לצמיתות עד
הוקצה ערך שונה על ידי התוכנית. עם זאת, למעשה ה-Fortran 77
התקן אינו מחייב שזה יהיה המצב. משתנים מקומיים עשויים להיות
לא מוגדר בין הפעלות של מודול שבו הן מוצהרות. באופן דומה,
בלוקים COMMON עשויים להפוך ללא מוגדרים אם אין מודול שבו הם מוכרזים
פָּעִיל. (המונח הטכני עבור ישויות עם התנהגות זו הוא ``אוטומטי'', אבל
ftnchek משתמש במילה ``נדיף'' מכיוון שהיא ברורה יותר למי שאינו מומחה.) בלבד
בלוקים COMMON המוצהרים במשפט SAVE, או מוצהרים בתוכנית הראשית או ב-a
תוכנית המשנה של נתוני בלוק תישאר מוגדרת כל עוד התוכנית פועלת. משתנים
ו-COMMON בלוקים שיכולים להפוך לבלתי מוגדרים בשלב מסוים נקראים נדיפים.
אם -נפוץ=נדיף הדגל מופעל, ftnchek יזהיר אותך אם ימצא א
בלוק COMMON נדיף. אם, במקביל, ה -usage=com-block-volatile אוֹפְּצִיָה
מופעל (שזו ברירת המחדל), ftnchek ינסה לבדוק האם בלוק כזה
יכול לאבד את המצב המוגדר שלו בין הפעלת המודולים היכן שהוא נמצא
הכריז. ftnchek לא עושה עבודה טובה מאוד בזה: הכלל המשמש הוא לראות
האם הבלוק מוכרז בשני תתי עצים נפרדים של עץ השיחה. ל
למשל, זה יהיה המקרה אם שני מודולים, שניהם נקראים מהתוכנית הראשית,
שיתף בלוק COMMON נדיף. בלוק יכול גם להפוך ללא מוגדר בין שניים
קריאות עוקבות של אותה תת-תוכנית, אבל ftnchek אינו חכם מספיק כדי לספר
האם ניתן לקרוא לתת-תוכנית יותר מפעם אחת, אז לא נבדק במקרה זה.
השמיים -נפוץ=נדיף הדגל אינו משפיע על הדרך ftnchek בודק את השימוש של מקומי
משתנים.
לתאימות עם גרסאות קודמות של ftnchek, צורה מספרית של זה
מקובלת גם ההגדרה: ה רשימה מוחלף במספר מ-0 עד 3. ערך של
0 מכבה את כל האזהרות, 1 או יותר מופעל סוג, 2 דלקות או יותר
אורך, ו-3 דלקות ממדים ו מְדוּיָק גַם. הטופס המספרי אינו יכול להידלק
מה היא נדיף אוֹפְּצִיָה.
ראה גם: -ליבררי, -נוֹהָג.
-crossref=רשימה
מדפיס טבלאות הצלבה. ברירת מחדל = אין.
השמיים רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. מילות המפתח עם
המשמעויות שלהם הן כדלקמן:
שיחות:
הטבלה מפרטת כל תת-תוכנית ואחריה רשימה של שגרות שקוראות לה.
רישום זה משמיט מודולי ספרייה שאינם נמצאים בעץ השיחות של הראשי
תכנית. הרשימה מסודרת באלפבית.
משותף:
הטבלה מפרטת כל בלוק COMMON ואחריו רשימה של השגרות שהגישה אליהן
זה. השגרות המפורטות הללו הן אלו שבהן משתנים מסוימים ב-COMMON
ניגשים לחסום, לא רק לאותן השגרות שמצהירות על החסימה. (ל
גלה אילו שגרות מכריזות על בלוק COMMON אך אל תשתמש בו, ראה את
-נוֹהָג דֶגֶל.)
תוויות:
טבלה מפרטת כל תווית ואחריה רשימה של כל ההפניות אליה. תווית
הפניה מסומנת במספר השורה וסוג ההצהרה של המפנה
הַצהָרָה. רשימת התוויות היא בסדר עוקב. ההפניות הן
רשומים לפי הסדר שבו הם נתקלים בתוכנית.
ראה גם: -calltree, -התייחסות, -סוג, -סימטאב, -vcg.
-לְהַכרִיז
אם דגל זה מוגדר, כל המזהים שסוג הנתונים שלהם אינו מוצהר בכל מודול
יהיה רשום. דגל זה שימושי כדי לעזור למצוא שמות משתנים באיות שגוי,
וכו'. אותו רישום יינתן אם המודול מכיל IMPLICIT NONE
הַצהָרָה. ברירת מחדל = לא.
ראה גם: -שישה צ'אר, -נוֹהָג.
-חֲלוּקָה
מתג זה מסופק כדי לעזור למשתמשים לזהות חלוקה פוטנציאלית לפי אפס בעיות. אם
מתג זה נבחר, כל חלוקה למעט קבועה תסומן. (זה
ההנחה היא שהמשתמש אינטליגנטי מספיק כדי לא לחלק בקבוע שהוא
שווה לאפס!) ברירת מחדל = לא.
ראה גם: -הִטַלטְלוּת, -גְמִימָה.
-שגיאות=NUM
הגדר את המספר המקסימלי של הודעות שגיאה ב-``מפלד''. במהלך בדיקה של
הסכמה של טיעוני משנה, הצהרות בלוק נפוצות, וכן הלאה,
לפעמים מקרה בודד ייצור שורה ארוכה של אזהרות. לעתים קרובות זה פשוט
מציין סיבה אחרת מלבד אי התאמה אמיתית של פריט אחר פריט, כגון עבור
לדוגמה, משתנה חסר ברשימה אחת. אז במקרים כאלה ftnchek מפסיק להדפיס
האזהרות לאחר הגעת גבול המפל, והקרוואן `` וכו'...'' הוא
מודפס כדי לציין שהיו שגיאות נוספות שלא הודפסו. אם אתה חושב ש
סביר להניח שהאזהרות אלו אמיתיות, השתמש בהגדרה זו כדי לראות יותר מהן.
הפעלה = ברירת מחדל = 3, מקסימום = 999. ערך של 0 פירושו שאין גבול.
הגדרה זו אינה מגדירה מגבלה כוללת על מספר הודעות השגיאה המודפסות,
רק המספר המודפס בכל מפל אחד. רוב סוגי האזהרות והטעויות
הודעות אינן כפופות לאפקט המפל ולכן אינן מושפעות מכך
הגדרה. כדי לכבות אזהרות באופן כללי, השתמש בבקרת האזהרה הפרטנית
אפשרויות או את -לא צ'ק אוֹפְּצִיָה.
ראה גם: -חשבון.
-חיצוני
סיבות ftnchek לדווח אם תוכניות משנה כלשהן שהופעלו על ידי התוכנית לעולם אינן
מוּגדָר. בדרך כלל, אם ftnchek מופעל על תוכנית שלמה, כל אחד
תת-תוכנית מלבד הפונקציות הפנימיות צריכה להיות מוגדרת איפשהו. תור
כבה את המתג הזה אם אתה רק רוצה לבדוק תת-קבוצה של קבצים המהווים חלק מ-a
תוכנית שלמה גדולה יותר. עדיין ייבדקו ארגומנטים של תת תוכנית
נְכוֹנוּת. ברירת מחדל = כן.
השמיים -חיצוני הדגל מוחלף כעת על ידי -usage=ext-undefined אוֹפְּצִיָה. בשביל ה
מטעמי נוחות, ה -חיצוני הדגל נשמר, כך ש -לא חיצוני שווה ערך
ל -usage=no-ext-undefined אוֹפְּצִיָה. ה -חיצוני יתכן שיתפטר בסופו של דבר.
ראה גם: -ליבררי.
-f77=רשימה
השתמש בהגדרה זו כדי לתפוס הרחבות שפה שמפרות את Fortran 77
תֶקֶן. הרחבות כאלה עלולות לגרום לתוכנית שלך לא להיות ניידת. דוגמאות
לכלול שימוש בקווים תחתונים בשמות משתנים; שמות משתנים ארוכים משישה
דמויות; שורות הצהרה ארוכות מ-72 תווים; והצהרות לא סטנדרטיות
כגון מבנה DO ... ENDDO. ftnchek אינו מדווח על השימוש ב
אותיות קטנות. כברירת מחדל, כל האזהרות כבויות.
הגדרה זו מספקת שליטה מפורטת על האזהרות לגבי תוספים נתמכים
לתקן Fortran 77. (פרטים נוספים על ההרחבות עצמן
ניתן להלן בסעיף על הרחבות.) ה רשימה מורכב ממילות מפתח מופרדות
לפי פסיקים או נקודתיים. ישנן שלוש מילות מפתח מיוחדות: את כל להפעיל את כל
אזהרות לגבי הרחבות לא סטנדרטיות, אף לא אחד כדי לכבות את כולם, ו לעזור להדפיס
את רשימת כל מילות המפתח עם הסבר קצר על כל אחת מהן. אם רשימה מושמט,
-F77 שווה -f77=הכל, ו -nof77 שווה -f77=אין. האזהרה
מילות המפתח עם המשמעויות שלהן הן כדלקמן:
קבל-סוג:
הצהרות קבל וסוג I/O.
גבולות מערך:
ביטויים המגדירים גבולות מערך המכילים רכיבי מערך או פונקציה
הפניות.
משימה-stmt:
הצהרות מטלות הכוללות מערכים. ב-Fortran 90, מערך יכול להיות
מוקצה למערך אחר של צורה תואמת, או שניתן להקצות לו סקלאר
מערך. אף אחת מהמשימות הללו אינה מותרת ב-Fortran 77.
אזהרה קשורה מתרחשת כאשר מערך מוקצה לסקלר. מאז
אינו חוקי גם ב-Fortran 90, הוא תמיד מוזהר לגביו ללא קשר ל
-F77 הגדרה (אלא אם כל הבדיקה כבויה עם -לא צ'ק דגל).
תכונות-מבוססות-decl:
הקלד הצהרות בסגנון החדש המבוסס על תכונות Fortran 90. הסגנון הזה של
ההצהרה נבדלת על ידי שימוש בנקודתיים כפולה (::) בין ה
רשימת התכונות ורשימת המשתנים המוצהרים. גם אפשרות זו
שולט באזהרות לשימוש באורך Fortran 90 או במפרטי סוג בסוג
הצהרות. (למרות שניתן להשתמש במפרטים אלה בכתובות שאינן מבוססות תכונות
הצהרות, הם נשלטים על ידי אפשרות זו כדי למנוע הפצה של
-F77 אפשרויות.)
מערך אוטומטי:
מערכים מקומיים (לא דמה) בעלי גודל משתנה. אלה יתאימו ל
מערכים שהאחסון שלהם יצטרך להיות מוקצה באופן דינמי בזמן הריצה.
מַהֲלָך סְרָק:
בריחת קו נטוי של יוניקס במיתרים. אזהרה זו תינתן רק אם
-source=unix-backslash ההגדרה מוגדרת כדי לגרום לבריחה
פרשנות לאחור..
בייט: הצהרת סוג נתונים של BYTE.
בניית מקרה:
המבנה של SELECT CASE.
אופי:
הרחבות לתקן Fortran 77 לגבי נתוני תווים. בהווה,
זה שולט רק באזהרות לגבי משתני אופי המוצהרים עם אפס או
אורך שלילי. ב-Fortran 77, כל משתני התווים חייבים להיות חיוביים
אורך. ב-Fortran 90, הם יכולים להיות באורך אפס, והצהרות על כך
ציין אורכים שליליים מותרים, והופכים לאפס עבור המוצהר
אורך. הערה: מכיוון שמפרטי אורך שלילי עשויים להצביע על תכנות
שגיאה, האזהרה לגביהם ניתנת גם אם אפשרות זו כבויה, ו
מדוכא רק על ידי -לא צ'ק דגל.
שם תת-פרוג משותף:
בלוק ותת-תוכנית נפוצים בעלי אותו שם.
מבנה-שם:
שימוש במבנה-שם כדי לתייג הצהרת שליטה.
המשך:
יותר מ-19 קווי המשך רצופים.
cpp: הנחיות קדם-מעבד Unix C בקוד המקור.
קריי-פוינטר:
תחביר ``Cray pointer''.
מחזור-יציאה:
הצהרות CYCLE ו-EXIT.
d-comment:
איתור באגים בהערות המתחילות ב-D בקוד המקור.
dec-tab:
קוד מקור בפורמט כרטיסייה בסגנון DEC Fortran. אזהרה זו תינתן בלבד
אם -source=dec-tab ההגדרה צוינה כדי לגרום לפרשנות של כרטיסיות
בסגנון הזה.
לעשות-אנדו:
הרחבות לולאת DO: תווית הצהרת מסוף הושמטה, END DO ו-WHILE.
קומפלקס כפול:
סוג נתונים מורכב דיוק כפול.
פורמט-דולרסימן:
קוד בקרה של סימן דולר בהצהרות FORMAT.
format-edit-descr:
מתארי עריכה לא סטנדרטיים בהצהרות FORMAT.
function-noparen:
הגדרת פונקציה ללא סוגריים.
מרומז-אין:
הצהרת IMPLICIT NONE.
לכלול:
כלול הצהרה.
inline-comment:
הערות מוטבעות המתחילות בסימן קריאה.
internal-list-io:
קלט/פלט מכוון רשימה לקובץ פנימי או ממנו.
מהותי:
פונקציות פנימיות לא סטנדרטיות.
io-מילות מפתח
מילות מפתח לא סטנדרטיות בשימוש בהצהרות קלט/פלט. אלה מתחלקים לשלוש קבוצות.
הקבוצה הראשונה כוללת מילות מפתח המקובלות ב-Fortran 90:
פנקס פעולה כתוב
גודל מיקום מתקדם
DELIM קרא כתוב
EOR
הקבוצה השנייה כוללת את מילות המפתח הבאות של VMS Fortran:
BLOCKSIZE EXENDSIZE לקריאה בלבד
שיא גודל ראשוני של BUFFERCOUNT
CARIAGECONTROL MAXREC RECORDTYPE
שם קובץ ברירת המחדל (ב-OPEN) משותף
DISP NOSPANBLOCK TYPE
להיפטר מהארגון
(מילת המפתח NAME היא סטנדרטית רק בהצהרת INQUIRE.) השלישית
הקבוצה מורכבת ממילת המפתח הבאה של IBM/MVS:
NUM
דגל זה שולט גם באזהרה לגבי השימוש ב-ACCESS='APPEND', כלומר
מקובל על ידי כמה מהדרים. הערך של 'APPEND' אינו תקף עבור קלט/פלט כלשהו
יש להשתמש במפרט ב-Fortran 77 הסטנדרטי, וב-Fortran 90 'APPEND'
כערך של מפרט POSITION, לא ACCESS.
קו ארוך:
הצהרות עם קוד משמעותי לאחר 72 עמודות. אזהרה זו ניתנת בלבד
אם עמודים נעשה שימוש בהגדרה כדי להגדיל את רוחב שדה ההצהרה.
שם ארוך:
מזהים באורך של יותר מ-6 תווים.
מעורב-נפוץ:
נתונים מעורבים של תווים ונתונים שאינם תווים בבלוק COMMON.
מעורב-exp:
שילובי טיפוסים לא סטנדרטיים בביטויים, למשל DOUBLE PRECISION
עם COMPLEX, הקצאת hollerith למספר שלם, פעולות לוגיות על מספרים שלמים.
שם-סימן דולר:
סימן דולר המשמש כתו במזהים.
שם-קו תחתון:
קו תחתון משמש כתו במזהים.
רשימת שמות:
הצהרת NAMELIST.
param-implicit-type:
הקלדה מרומזת של פרמטר לפי סוג הנתונים של הערך שהוקצה. זֶה
אזהרה יכולה להתרחש רק אם הקלדת פרמטר מרומז הופעלה על ידי
-source=param-implicit-type אפשרות, או אם הצהרת PARAMETER היא של
צורה לא סטנדרטית ללא סוגריים. אם אפשרות זו מופעלת, אז כל
מקרים שבהם מתרחשת הקלדת פרמטר מרומז יקבל אזהרה. אם
אתה רוצה לקבל אזהרה רק באותם מקרים שבהם סוג הנתונים המרומז
שונה מסוג ברירת המחדל, השתמש -ניידות=סוג-param-implicit במקום.
לפי תקן Fortran 77, ניתן סוג הנתונים של פרמטר
לפי אותם כללים כמו למשתנה, ובמידת הצורך המרת טיפוס היא
נעשה כאשר הערך מוקצה.
param-intrinsic:
פונקציה פנימית או אקספוננציה על ידי ריאל המשמשת להגדרת הערך של a
הגדרת פרמטר.
param-noparen:
משפט PARAMETER ללא סוגריים. המשתמש צריך להיות מודע לכך שה
הסמנטיקה של צורה זו של ההצהרה שונה מזו של התקן
form: בצורה זו, הפרמטר לוקח את סוג הנתונים שלו מהערך
מוקצה, במקום לקבל את סוג הנתונים המוגדר כברירת מחדל על סמך האות הראשונה
של שם הפרמטר. (צורה זו של הצהרת PARAMETER הוצגה
עד DEC לפני שהוגדר תקן Fortran 77, ויש להימנע ממנו).
מצביע:
תחביר הקשור למצביע סטנדרטי Fortran 90, כולל POINTER, TARGET ו
הצהרות מסוג ALLOCATABLE, הצהרות ALLOCATE, DEALLOCATE ו- NULLIFY,
והקצאת מצביע באמצעות =>.
quad-constant:
קבועים ממשיים של ארבע דיוק, למשל בצורה 1.23Q4.
ציטוט:
מחרוזות מופרדות במרכאות ולא באגרות.
חוזרת:
אופרטורים יחסיים (השוואה) המורכבים מסימני פיסוק, כלומר: < <= == /=
> >=.
נְקוּדָה וּפְסִיק:
נקודה-פסיק משמש כמפריד הצהרות.
הצהרת-סדר:
הצהרות מחוץ לרצף שנקבע על ידי התקן. המותר
הרצף מודגם בטבלה 1 בסעיף על פרשנות הפלט.
חסר טיפוס-קבוע:
קבועים חסרי סוג, למשל Z'19AF'.
גודל סוג:
סוג הצהרות המציינות גודל, למשל REAL*8.
פורמט משתנה:
מפרט חוזר משתנה או גודל שדה ב-FORMAT. אלה מהצורה
< ביטוי >.
vms-io:
מְיוּשָׁן. עכשיו יש אותה משמעות כמו ה io-מילות מפתח מילת מפתח.
ראה גם: -F90, -F95, -הִטַלטְלוּת, -יפה, בסגנון, -גודל מילים.
-f90=רשימה
הגדרה זו מספקת שליטה מפורטת על האזהרות לגבי תוספים נתמכים
לתקן Fortran 77 שלא אומצו כחלק מה-Fortran 90
תֶקֶן. ציין זאת ftnchek אינו תומך בשפת Fortran 90 המלאה.
עם זאת, הוא תומך בכמה הרחבות נפוצות ל-Fortran 77 שהיו נפוצות
לפני הגדרת Fortran 90. חלק מהרחבות אלו הפכו לחלק מהפורטרן
90 Standard, אבל אחרים לא. ה -F90 ההגדרה מזהירה רק לגבי האחרון.
כלומר, הדגל הזה מכסה דברים שהם לא חוקי Fortran 77 ולא חוקי
Fortran 90. לכן, האזהרות הנשלטות על ידי דגל זה הן בעצם תת-קבוצה
מהאזהרות שבשליטת -F77. ישנם כמה מקרים, המתוארים להלן, שבהם
הנסיבות שבהן ניתנת האזהרה שונות מעט עבור השניים
דגלים.
השמיים רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. ישנם שלושה
מילות מפתח מיוחדות: את כל כדי להפעיל את כל האזהרות לגבי הרחבות לא סטנדרטיות,
אף לא אחד כדי לכבות את כולם, ו לעזור כדי להדפיס את רשימת כל מילות המפתח עם א
הסבר קצר על כל אחד מהם. אם רשימה מושמט, -F90 שווה -f90=הכל, ו
-nof90 שווה -f90=אין.
למילות המפתח הבאות יש משמעויות זהות עבור -F90 בנוגע ל -F77. הקורא הוא
התייחס להסברים למטה -F77.
קבל-סוג קומפלקס כפול param-noparen
מַהֲלָך סְרָק פורמט-דולרסימן קריי-פוינטר
בייט format-edit-descr quad-constant
cpp function-noparen גודל סוג
d-comment שם-סימן דולר פורמט משתנה
dec-tab param-implicit-type vms-io
מילות המפתח שונות במקצת מהמילות המפתח המקבילות -F77 מילות המפתח הן כמו
הבא.
המשך:
הגבלה על מספר שורות ההמשך להצהרה במקור קבוע
הצורה זהה, כלומר 19, ב-Fortran 90 כמו ב-Fortran 77. למקור חינמי
צורת הגבול היא 39 שורות המשך, ושורה המכילה המשך
הסימון אינו יכול להיות ריק או להכיל רק הערה.
מהותי:
זה אותו דבר לגבי -F77 למעט הפונקציות הפנימיות המוגדרות ב
MIL-STD 1753, הכלולים כולם ב-Fortran 90, ולכן אינם מוזהרים
על אודות. (לִרְאוֹת -פְּנִימִי לרשימה.)
io-מילות מפתח:
זה אותו דבר לגבי -F77 אלא שלא ניתנות אזהרות עבור הקלט/פלט
מילות מפתח שהן סטנדרטיות ב-Fortran 90.
קו ארוך:
למרות שה-Fortran 90 Standard מאפשר שורות ארוכות מ-72 תווים
טופס מקור חופשי, הגבלה זו עדיין חלה על טופס מקור קבוע. ב
מקור חופשי מגבלת אורך השורה היא 132 תווים, ולא כמו קבוע
טופס, ftnchek אינו מאפשר הגדלת מגבלה זו.
מעורב-exp:
זה אותו דבר לגבי -F77 למעט ביטויים המשלבים דיוק מורחב
אמיתי עם סוגי נתונים מורכבים, המותרים ב-Fortran 90.
הצהרת-סדר:
זה דומה לזה המקביל -F77 אזהרה, אבל מיישם במידת מה
הגבלות רופפות יותר על צו ההצהרה של תקן Fortran 90. ב
במיוחד, Fortran 90 מאפשר הצהרות DATA ופונקציית הצהרות
הגדרות שיתערבבו עם הצהרות מפרט.
חסר טיפוס-קבוע:
ב-Fortran 90, קבועים בינאריים, אוקטליים והקסדצימליים בצורת B'ddd',
O'ddd', ו-Z'ddd', בהתאמה, מותרים. כאן 'ddd' מייצג את א
מחרוזת ספרות. ftnchek מזהה צורות אלה, כמו גם גרסה של
הצורה X'ddd' עבור קבוע הקסדצימלי, וגרסאות אחרות שבהן
מחוון הבסיס B, O, Z או X עוקב אחר מחרוזת הספרות. גרסאות אלה היו
לא אומץ ב-Fortran 90, אז רק הם מוזהרים מתי הדגל הזה נמצא
נדלק.
ראה גם: -F77, -F95, -הִטַלטְלוּת, -יפה, בסגנון, -גודל מילים.
-f95=רשימה
הגדרה זו מספקת שליטה מפורטת על אזהרות לגבי Fortran 77 הסטנדרטי
תכונות שנמחקו מהתקן Fortran 95. לא כמו ה -F77 ו -F90
הגדרות, אזהרות אלה חלות על תחביר שהוא חוקי Fortran 77. עם זאת, מאז
תכונות אלה נמחקו מהתקן, ייתכן שתוכניות
המכיל אותם לא יהיה מקובל על כמה מהדרים חדשים יותר.
השמיים רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. ישנם שלושה
מילות מפתח מיוחדות: את כל כדי להפעיל את כל האזהרות לגבי הרחבות לא סטנדרטיות,
אף לא אחד כדי לכבות את כולם, ו לעזור כדי להדפיס את רשימת כל מילות המפתח עם א
הסבר קצר על כל אחד מהם. אם רשימה מושמט, -F95 שווה -f95=הכל, ו
-nof95 שווה -f95=אין. מילות המפתח האזהרות עם המשמעויות שלהן הן כמו
הבא.
אמיתי לעשות:
משתנה DO מכל סוג מספרי אמיתי.
הפסקה:
הצהרת PAUSE.
להקצות:
הצהרת ASSIGN, שהוקצה GOTO, או פורמט שהוקצה.
h-edit:
מתאר העריכה H בפורמט.
יש עוד תכונה תחביר אחת של Fortran 77 שנמחקה ב-Fortran 95, כלומר
הסתעפות ל-ENDIF מחוץ לבלוק ה-IF. למרות זאת, ftnchek אינו מסוגל
מנתח את זרימת התוכנית, ולכן הוא אינו מספק אזהרה לכך.
ראה גם: -F77, -F90, -הִטַלטְלוּת, -יפה, בסגנון, -גודל מילים.
עזרה
מדפיס רשימה של כל אפשרויות שורת הפקודה עם תיאור קצר של כל אחת מהאפשרויות
יחד עם ערך ברירת המחדל שלו. פקודה זו זהה בתפקוד ל- ``?''
טיעון, והוא מסופק כנוחות עבור אותן מערכות שבהן השאלה
לסימן משמעות מיוחדת עבור מתורגמן הפקודה. ברירת מחדל = לא.
רישום העזרה מדפיס גם את מספר הגרסה ורמת התיקון של ftnchek וכן
הודעת זכויות יוצרים.
הערה: ערכי ``ברירת המחדל'' המודפסים בסוגריים מרובעים ברשימת העזרה הם,
למהדרין, לא ברירות המחדל המובנות אלא הערכים הנוכחיים לאחר כל
אפשרויות סביבה וכל אפשרויות שורת הפקודה שלפני עזרה אפשרות יש
עבר עיבוד.
ראה גם: -טִירוֹן, -הפך, ו לעזור אפשרות של כל ההגדרות שמקבלות רשימה של
מילות מפתח.
-מזהה-תווים=רשימה
הגדר תווים שאינם אלפאנומריים שניתן להשתמש בהם במזהים. כברירת מחדל,
ftnchek מקבל רק את סימן הדולר והקו תחתון כתווים שאינם אלפאנומריים
בשמות מזהים. הדמויות ב- רשימה להחליף כל סט של מקובל
תווים שאינם אלפאנומריים היו בתוקף בעבר. לפיכך, אם סימן דולר או
קו תחתון אינו נכלל ברשימה, הם מאבדים את מעמדם כמקובל
תווים.
אפשרות זו ניתנת כדי להפעיל ftnchek לטפל בקבצי מקור המכילים לא-
שמות מזהים סטנדרטיים שעשויים להיות נחוצים, למשל, כדי לגשת לחלקים מסוימים
שירותי מערכת הפעלה. עיין בסעיף על מגבלות והרחבות עבור ה
טיפול במזהים המכילים תווים אלו בהקלדה מרומזת.
שימוש -noidentifer-chars משבית את הקבלה של תווים שאינם אלפאנומריים
לגמרי.
ראה גם: -מָקוֹר.
-include=נתיב
מציין ספרייה לחיפוש אחר קבצים שצוינו על ידי הצהרות INCLUDE.
בניגוד לאפשרויות אחרות של שורת הפקודה, הגדרה זו היא מצטברת; כלומר, אם כן
נתון יותר מפעם אחת בשורת הפקודה, כל הספריות שצוינו כך הן
ממוקמים ברשימה שיחפשו באותו סדר כפי שהם ניתנים. ה
סדר שבו ftnchek חיפוש אחר קובץ שייכלל הוא: הנוכחי
מַדרִיך; הספרייה שצוינה על ידי משתנה הסביבה FTNCHEK_INCLUDE אם יש;
המדריכים שצוינו על ידי כל אחד -לִכלוֹל אפשרויות; הספרייה שצוינה על ידי
משתנה סביבה INCLUDE; ולבסוף בספרייה סטנדרטית כלל מערכת
(/ usr / include עבור UNIX, SYS$LIBRARY עבור VMS ו-\include עבור MSDOS).
ראה גם: -F77, -מָקוֹר.
-מוטבעי=רשימה
שולט אם ftnchek מזהה פונקציות פנימיות לא סטנדרטיות מסוימות כ
פְּנִימִי. ה רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. חלק מ
מילות המפתח קובעות אם לזהות קבוצות מסוימות של פונקציות ואחרות
מילות מפתח שולטות בתחביר הצפוי להפעלת כמה מרכיבים לא סטנדרטיים.
כלול מילת מפתח כדי להפעיל זיהוי של הסט התואם של מאפיינים פנימיים או
כדי לאפשר את התחביר המתאים. כלול מילת מפתח עם קידומת של לא- לכבות
ההכרה הזו.
ישנן שלוש מילות מפתח מיוחדות: את כל מפעיל זיהוי של כל הלא סטנדרטיים
מאפיינים פנימיים (מפורטים להלן) ומקבל כל תחביר עבור אלה שיש להם וריאציות.
השתמש אף לא אחד לבטל את הזיהוי של כל המרכיבים הבלתי סטנדרטיים מלבד אלו שצוינו
לְהַלָן. להשתמש לעזור כדי להדפיס את רשימת כל מילות המפתח עם הסבר קצר על
כל אחד. אם רשימה מושמט, -פְּנִימִי שווה -מוטמי=הכל, ו
- לא מהותי שווה -אינטרינסיק=אין.
הפונקציות הפנימיות הלא סטנדרטיות הדרושות לתמיכה בפונקציות הלא סטנדרטיות מורחבות
סוגי נתונים מדויקים (קומפלקס כפול ודיוק מרובע) מזוהים תמיד.
המהותיות לסוג הנתונים המורכבים הכפולים הם:
CDABS CDSQRT DREAL ZLOG
CDCOS DCMPLX IMAG ZSIN
CDEXP DCONJG ZABS ZSQRT
CDLOG DIMAG ZEXP ZCOS
CDSIN
המרכיבים המהותיים של דיוק מרובע וסוגי מרובע מורכבים הם:
CQABS QARCOS QEXT QNINT
CQCOS QARSIN QEXTD QPROD
CQEXP QATAN QFLOAT QREAL
CQLOG QATAN2 QIMAG QSIGN
CQSIN QCMPLX QINT QSIN
CQSQRT QCONJG QLOG QSINH
DBLEQ QCOS QLOG10 QSQRT
IQINT QCOSH QMAX1 QTAN
IQNINT QDIM QMIN1 QTANH
QABS QEXP QMOD SNGLQ
מילות המפתח השולטות בזיהוי של פונקציות פנימיות לא סטנדרטיות אחרות הן
באופן הבא:
נוסף:
להכיר את המאפיינים הלא סטנדרטיים הבאים הנפוצים (כולם מלבד
EXIT ו-LOC מוגדרים ב-MIL-STD 1753):
BTEST IBCLR IEOR ISHFTC
יציאה IBITS IOR LOC
IAND IBSET ISHFT NOT
יוניקס: להכיר את הפונקציות הפנימיות הנפוצות הללו הספציפיות ל-Unix:
בטל את GMTIME LTIME SRAND
ו-IARGC או מערכת
GETARG IRAND RAND TIME
GETENV LSHIFT RSHIFT XOR
vms: להכיר את הפונקציות הפנימיות הנפוצות הללו הספציפיות ל-VMS:
תאריך IDATE שניות שעה
ERRSNS RAN SIZEOF
iargc-no-gument:
ציין כי ניתן להפעיל את IARGC ללא טיעונים.
iargc-one-gument:
ציין שניתן להפעיל את IARGC באמצעות ארגומנט אחד.
ראנד-אין-וויכוח:
ציין שניתן להפעיל RAND ו- IRAND ללא ארגומנטים.
ראנד-אחד-טיעון:
ציין שניתן להפעיל RAND ו- IRAND באמצעות ארגומנט אחד.
השמיים אין ויכוח ו טיעון אחד מילות מפתח פועלות באופן הבא: הפעלת האפשרות
גורמים ftnchek כדי לקבל את התחביר המתאים להפעלת הפונקציה,
מבלי לשלול את האפשרות של התחביר החלופי. הפיכת האפשרות
off גורם לכך שהתחביר המתאים לא יתקבל. אם שתי האפשרויות הופכות
פועל בבת אחת (ברירת המחדל), אז כל אחד מהתחביר יתקבל. מכבה את שתי האפשרויות
בבת אחת לא יהיה משמעותי. לאפשרויות אלה אין השפעה אם זיהוי של
Unix intrinsics כבוי.
שים לב שהגדרה זו אינה קובעת אם ניתנות אזהרות לא סטנדרטיות
לגבי הפונקציות הללו. זה שולט אם ההנחה היא שהפונקציות יהיו
מהותי או לא, מה שקובע כיצד נבדק השימוש בהם. כאשר מתפקד ב
כל אחת מהקבוצות הללו כלולה, הפניות שלהן ייבדקו בהתאם ל-
כללים עבור הפונקציות הפנימיות; אחרת הם ייבדקו כרגיל (משתמש-
כתוב) פונקציות חיצוניות. האזהרות הלא סטנדרטיות נשלטות על ידי
-f77 = מהותי אוֹפְּצִיָה.
ערך ברירת המחדל של הגדרה זו שווה ערך ל -מוטמי=הכל אחריו
-intrinsic=no-vms עבור גרסת יוניקס, -intrinsic=no-unix עבור גרסת VMS, ו
-intrinsic=no-unix,no-vms לגרסאות אחרות.
הערה: בגרסאות של ftnchek לפני 2.10, ה -פְּנִימִי הדגל קיבל מספרי
ארגומנט במקום רשימה של אפשרויות. למען משתמשים שאולי כתבו
סקריפטים מעוררים ftnchek בדרך זו, הצורה המספרית עדיין מקובלת. ה
צורה מספרית של ההגדרה מורכבת משלוש ספרות. ספרת האחדים בוחרת את
סט של פונקציות פנימיות שיש לתמוך בהן. הספרה 0 בוחרת רק את Fortran 77
יסודות סטנדרטיים בתוספת אלה הדרושים כדי לתמוך בדיוק המורחב הלא תקני
סוגי מידע. הספרה 1 שווה ערך ל נוסף, 2 שווה ערך ל אקסטרה, יוניקס, ו
3 שווה ערך ל- תוספת,vms. ספרת העשרות של הגדרה זו שולטת בתחביר
של הפונקציה הפנימית RAND, וספרת המאות שולטת בתחביר של
פונקציית IARGC. עבור ספרות אלה, ציין 0 כדי לדרוש הפעלה עם לא
ארגומנט, 1 כדי לדרוש ארגומנט אחד ו-2 כדי לאפשר כל אחת מהצורות.
ראה גם: -F77.
-ליבררי
מתג זה משמש כאשר מספר תוכניות משנה כלולות בקובץ, אך לא
כולם משמשים את האפליקציה. בדרך כלל, ftnchek מזהיר אותך אם בכלל
תוכניות משנה מוגדרות אך לעולם אינן בשימוש. מתג זה ידכא את האזהרות הללו.
ברירת מחדל = לא.
מתג זה שולט גם אילו קריאות תת-תוכנית והצהרות בלוק COMMON הן
בָּדוּק. אם קובץ נקרא עם ה -ליבררי הדגל בתוקף, תת-התוכנית קוראת
והצהרות COMMON הכלולות בשגרה באותו קובץ ייבדקו רק אם
השגרה נמצאת בעץ השיחות של התוכנית הראשית. מצד שני, אם ה
-ליבררי לאחר מכן, המתג כבוי ftnchek בודק את השיחות של כל שגרה על ידי
כל שגרה אחרת, ללא קשר לשאלה אם השגרות האלה באמת יכולות להיות
מופעל בזמן הריצה, וכמו כן משווים עבור כל הצהרות בלוק COMMON
הֶסכֵּם.
ההבדל בין מתג זה לבין -usage=no-ext-unused אפשרות עבור
תוכניות המשנה היא שהאחרונה מדכאת רק את האזהרה על קיום שגרה
הוצהר אך לא נעשה בו שימוש. ה -ליבררי מתג הולך רחוק יותר ואינו כולל לא בשימוש
שגרות מעובדות בזמן שהיא בתוקף מכל בדיקה צולבת של טיעונים ו
גם הצהרות בלוק נפוצות.
(אם אין תוכנה ראשית בשום מקום בערכת הקבצים ftnchek קרא, אז
שאין עץ קריאה, אם כן ftnchek יחפש כל שגרה שאינה ספרייה
שאינם נקראים בשום שגרה אחרת, ומשתמשים בהם כתחליפים לעיקריים
תוכנית בבניית עץ השיחות והחלטה מה לבדוק. אם אין טופ כזה-
נמצאות שגרות שאינן ספריות ברמה, ואז כל הקריאות בין-מודולים וכל ה-COMMON
הצהרות ייבדקו.)
ראה גם: -טיעונים, -calltree, -מְשׁוּתָף, -חיצוני, -נוֹהָג.
-רשימה
מציין שיש להדפיס רשימה של תוכנית Fortran עם קו
מספרים. אם ftnchek מזהה שגיאה, הודעת השגיאה עוקבת אחר שורת התוכנית
עם סימן ( ^ ) המציין את מיקום השגיאה. אם לא היה רישום מקור
ביקש, ftnchek עדיין ידפיס כל שורה המכילה שגיאה, כדי לסייע ב
משתמש בקביעה היכן התרחשה השגיאה. ברירת מחדל = לא.
ראה גם: -תְפוּקָה, \fB-symtab, fB-שקט.
-makedcls=רשימה
הכן קובץ בפורמט מסודר של הצהרות על משתנים, בלוקים נפוצים ו
רשימות שמות, למיזוג אפשרי לתוך קוד המקור. ההצהרות הן
מאוחסן בקובץ באותו שם כמו קוד המקור, אבל עם הסיומת
שונה ל .dcl. אם לא נכתבות הצהרות לקובץ, הוא נמחק אל
להפחית את העומס מקבצים ריקים.
אם הקלט מגיע מקלט סטנדרטי, במקום קובץ בעל שם, אז הצהרות כן
כתוב לפלט סטנדרטי.
משתנים מוצהרים בסדר אלפביתי בתוך כל מחלקה הכרזה ו
סוג, עם משתנים שלמים תחילה, בגלל השימוש האפשרי מאוחר יותר שלהם במערך
ממדים.
הצהרות PARAMETER הן חריג לכלל הסדר האלפביתי, מכיוון שה
Fortran 77 Standard דורש שהביטויים המגדירים ערכי פרמטר מתייחסים
רק לקבועים ולשמות פרמטרים שהוגדרו כבר. זה מאלץ את המקור
סדר קובץ המקור של הצהרות כאלה ישמר בקובצי ההצהרה.
הצהרה מפורשת של את כל משתנים נחשב לתכנות מודרני טוב
תרגול. על ידי שימוש באפשרויות מהדר כדי לדחות משתנים לא מוכרזים, באיות שגוי
ניתן לתפוס שמות משתנים (או שמות שנמשכים מעבר לעמודה 72) בזמן ההידור.
הצהרות מפורשות גם מקלות מאוד על שינוי דיוק הנקודה הצפה
עם פילטרים כגון dtoq(1 ליטר), dtos(1 ליטר), fd2s(1 ליטר), fs2d(1 ליטר), qtod(1 ליטר), ו
עמד(1 ליטר). תוכניות אלו מסוגלות לשנות סוגים של נקודה צפה מפורשת
סוג הצהרות, פונקציות פנימיות וקבועים, אבל בגלל שהם לא
לבצע ניתוח מילוני ודקדוק קפדני של קוד המקור של Fortran,
הם לא יכולים לספק הצהרות מסוג שונה עבור משתנים לא מוכרזים. בְּרִירַת מֶחדָל
הגדרה = 0, הפעלה = 1.
אפשרויות שונות לצורת קובץ ההצהרות נשלטות על ידי ה רשימה,
המורכב ממילות מפתח המופרדות בפסיקים או נקודתיים. יש שלושה מיוחדים
מילות מפתח: את כל כדי להפעיל את כל האפשרויות, אף לא אחד כדי לכבות את כולם, ו לעזור ל
הדפס את רשימת כל מילות המפתח עם הסבר קצר על כל אחת מהן. אם רשימה is
הושמט, -makedcls שווה -makedcls=הצהרות (כלומר לייצר את
קובץ הצהרות באמצעות אפשרויות ברירת המחדל), ו -nomadecls שווה
-makedcls=אין.
לתאימות עם גרסאות קודמות של ftnchek, צורה מספרית של הגדרה זו
מקובל גם: ה רשימה מוחלף במספר שהוא סכום המספרים
בסוגריים לצד מילות המפתח ברשימה הבאה. מילות המפתח האזהרות
עם המשמעויות שלהם הם כדלקמן:
הצהרות (1):
כתוב קובץ הצהרה. (זה משתמע מכל אחת מהאפשרויות האחרות, ו
ניתן להשמיט אם ניתנות אפשרויות אחרות.)
לא מוצהר בלבד (2):
כברירת מחדל, כל המשתנים כלולים בקובץ ההצהרה. עם זה
אפשרות, לכלול בלבד לא מוצהרת משתנים. הגדרה זו שימושית אם אתה
רוצה לבדוק משתנים לא מוכרזים, שכן קבצי מקור Fortran עם הכל
משתנים שהוכרזו כהלכה לא יביאו ל- a .dcl קוֹבֶץ. עם זה
אפשרות, בלוקים נפוצים ורשימות שמות לא ייכללו ב-
תיק הצהרות, שכן מטבעם לא ניתן לבטלם.
קומפקטי (4):
ההצהרות בדרך כלל מודפסות יפה כדי להסתדר בצורה מסודרת במשותף
עמודות, כמו בפלט קובצי ההצהרה על ידי ה-Extended PFORT Verifier,
pfort(1 ליטר). ערך אפשרות זה בוחר במקום פלט קומפקטי, ללא עמודה
יישור.
השתמש בשורות-המשך (8):
גורם לשימוש בקווי המשך היכן שמותר. ברירת המחדל היא ל
להתחיל הצהרה חדשה בכל שורה. אפשרות זו מתאימה לשימוש
יחד עם קומפקטי.
מילות מפתח-אותיות קטנות (16):
פלט מילות מפתח Fortran באותיות קטנות, במקום ברירת המחדל של אותיות רישיות.
vars-and-consts-אותיות קטנות (32):
משתני פלט וקבועים באותיות קטנות, במקום ברירת המחדל
אותיות רישיות. קבועי מחרוזת תווים אינם מושפעים מאפשרות זו.
exclude-sftran3 (64):
השמט הצהרות של משתנים פנימיים שלמים שנוצרו על ידי SFTRAN3
מעבד קדם, xsf3(1L), כחלק מהתרגום של Fortran מובנה
הצהרות לפורטרן הרגיל. למשתנים אלה יש שמות של שישה תווים
הצורה NPRddd, NXdddd, N2dddd, ו N3dddd, שם d הוא ספרה עשרונית.
מכיוון שהם בלתי נראים בקוד המקור SFTRAN3, וישתנו אם
קוד SFTRAN3 שונה, אין להצהיר על משתנים כאלה במפורש.
במקום זאת, הם צריכים פשוט להניח את ברירת המחדל של סוג הנתונים Fortran INTEGER מבוסס
על האות הראשונית שלהם, N.
כוכבית-הערה (128):
השתמש בכוכבית בתור תו ההערה; ברירת המחדל היא אחרת 'C'.
הערה-char-אותיות קטנות (256):
השתמש ב-'c' במקום 'C' או '*' בתור תו ההערה.
להדחיק-מערך-ממדים (512):
דיכוי מימדים של מערכים בהצהרות שנוצרו. אפשרות זו
מיועד לשימוש עם קוד חסר הצהרות סוג, כדי לאפשר את ההצהרה
קבצים שיוכנסו ללא שינוי בקוד. מאז הקוד יהיה
הצהרות מימד כבר, מימדים את משתני המערך בסוג
ההצהרות של תיק ההצהרה מיותרות. יש להשתמש באפשרות זו
רק בשילוב עם אפשרות 2 = לא מוצהר בלבד כי אחרת כל
מערכים שהיו ממדים בהצהרת סוג יאבדו את שלהם
מימדים.
צורה חופשית (1024):
הפקת הצהרות בצורת מקור חופשית. מצב זה משמש אוטומטית אם
מקור הקלט הוא בצורה חופשית. השתמש באפשרות זו כדי להפיק הצהרות ב
צורה חופשית גם אם הקלט הוא בצורה קבועה. הצהרות בצורה חופשית הן
הכנס רק 2 עמודות במקום 6, השתמש בסימן הקריאה כהערה
תו, ומציינים קווי המשך באמצעות אמפרסנד בסוף ה-
קו להמשך.
קבצי ההצהרה מכילים הערות ייחודיות המסמנות את ההתחלה והסוף של
הצהרות עבור כל יחידת תוכנית, כדי להקל על השימוש בפקודות מאקרו של עורך טקסט עבור
מיזוג ההצהרות בחזרה לקוד המקור.
השמיים ftnchek ההפצה כוללת תוכנית, dcl2inc, שמעבד הצהרה
קבצים להפקת קבצים המכילים הצהרות של כל הבלוקים ה-COMMON, בטופס
מתאים לשימוש כקבצי INCLUDE. ראה את dcl2inc(1L) דף אדם לפרטים של
השימוש של זה.
ראה גם: -mkhtml.
-mkhtml=רשימה
הפקת תיעוד HTML מהמקור. יוצר קובצי HTML בודדים מ-ftnchek
ניתוח והערות קוד. כל ההערות מיד לפני ואחרי
הגדרה של פונקציה או תת שגרה נקלטות בקובץ ה-HTML. אין עיצוב מחדש של
הערות מקור מתבצעות מלבד הפשטה של תווי הערות FORTRAN.
בנוסף, קובץ ה-HTML מפרט את המשתנים המקומיים שהוכרזו, בלוק נפוץ
משתנים בשימוש, פונקציות ותתי שגרות הנקראות, שימוש ביחידת I/O ועוד
מידע על כל תת תוכנית. בדרך כלל תרצו גם לפרט
-קריאה=עץ כדי ליצור את קובץ HTML הבסיס CallTree.html. (אולי הקובץ הזה צריך
ייקרא index.html.)
אפשרויות שונות לצורת קובצי HTML נשלטות על ידי ה רשימה, אשר
מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. יש שלושה מיוחדים
מילות מפתח: את כל כדי להפעיל את כל האפשרויות, אף לא אחד כדי לכבות את כולם, ו לעזור ל
הדפס את רשימת כל מילות המפתח עם הסבר קצר על כל אחת מהן. אם רשימה is
הושמט, -mkhtml שווה -mkhtml=מסמכים (כלומר הפק את מסמך ה-HTML
קבצים באמצעות אפשרויות ברירת המחדל), ו -nomkhtmls שווה -mkhtml=ללא.
למען הפשטות, האפשרויות עבור -mkhtml זהים לאלו עבור
-makedcls למעט אלו שאינם מתאימים. באופן דומה, צורה מספרית של
ניתן להשתמש בהגדרה זו, שנוצרת כסכום המספרים בסוגריים ב-
רשימה למטה. מילות המפתח האזהרות עם המשמעויות שלהן הן כדלקמן:
מסמכים (1):
צור את מסמכי ה-HTML. (זה משתמע מכל אחת מהאפשרויות האחרות, ו
ניתן להשמיט אם ניתנות אפשרויות אחרות.)
קומפקטי (4):
ההצהרות בדרך כלל מודפסות יפה כדי להסתדר בצורה מסודרת במשותף
עמודות. ערך אפשרות זה בוחר במקום פלט קומפקטי, ללא עמודה
יישור.
השתמש בשורות-המשך (8):
גורם לשימוש בקווי המשך במקום להתחיל הצהרה חדשה
על כל שורה. אפשרות זו מתאימה לשימוש יחד עם קומפקטי.
מילות מפתח-אותיות קטנות (16):
פלט מילות מפתח Fortran באותיות קטנות, במקום ברירת המחדל של אותיות רישיות.
vars-and-consts-אותיות קטנות (32):
משתני פלט וקבועים באותיות קטנות, במקום ברירת המחדל
אותיות רישיות. קבועי מחרוזת תווים אינם מושפעים מאפשרות זו.
exclude-sftran3 (64):
השמט הצהרות של משתנים פנימיים שלמים שנוצרו על ידי SFTRAN3
מעבד קדם, xsf3(1 ליטר). (לִרְאוֹת -makedcls לדיון.)
להדחיק-מערך-ממדים (512):
דיכוי מימדים של מערכים בהצהרות שנוצרו. זה
בדרך כלל לא רצוי, אבל זמין אם מסיבה כלשהי אינך רוצה את
ממדי המערך שיופיעו ב-HTML.
צורה חופשית (1024):
הפקת הצהרות משתנים בצורת מקור חופשית. מצב זה הוא
בשימוש אוטומטי אם מקור הקלט הוא בצורה חופשית. זה משפיע בעיקר על
צורה של קווי המשך אם נעשה בהם שימוש.
ראה גם: -calltree, -makedcls.
-טִירוֹן
דגל זה נועד לספק פלט מועיל יותר למתחילים. יש לו שניים
אפקטים:
(א) מספק הודעה נוספת לפיה פונקציה שבה נעשה שימוש אך לא
המוגדר בכל מקום עשוי להיות מערך שהמשתמש שכח להכריז ב-a
משפט DIMENSION (מכיוון שהתחביר של הפניה למערך זהה לזה
של הפניה לפונקציה).
(ב) משנה את צורת הודעות השגיאה והאזהרות. אם הדגל מסובב
יוצא לדרך -לא נודע, הודעות אלה מודפסות בסגנון הדומה יותר ל-UNIX
מוך.
ברירת מחדל = כן.
-פלט=שם הקובץ
הגדרה זו ניתנת לנוחות במערכות שאינן מאפשרות קל
ניתוב מחדש של פלט מתוכניות. כאשר הגדרה זו ניתנת, הפלט אשר
בדרך כלל מופיע על המסך יישלח במקום זאת לקובץ בעל השם. הערה,
עם זאת, שגיאות תפעול של ftnchek עצמו (למשל חסר מקום או לא יכול
קובץ פתוח) עדיין יישלח למסך. הסיומת לשם הקובץ היא
אופציונלי, ואם לא ניתנת הארכה, הארכה .lis יהיה בשימוש.
-pointersize=NUM
מציין את הגודל של משתנה ``Cray pointer'' להיות NUM בתים. ברירת מחדל = תור-
on = 4 בתים.
גודל המצביע משמש כדי להודיע על אזהרות על אי התאמה מדויקות הכוללות מצביע
משתנים, למשל כאשר מצביע מוקצה ערך מהקצאה
שגרתי, או הועבר כפרמטר משנה.
ראה גם: -F77, -הִטַלטְלוּת, -גְמִימָה, -גודל מילים.
-ניידות=רשימה
ftnchek ייתן אזהרות עבור מגוון שימושים שאינם ניידים. דוגמאות מכילות
השימוש בטאבים למעט בהערות או במחרוזות פנימיות, השימוש ב- Hollerith
קבועים, והשוואת משתנים מסוגי נתונים שונים. אפשרות זו
אינו מייצר אזהרות עבור הרחבות נתמכות לתקן Fortran 77,
מה שעלול לגרום גם לבעיות ניידות. כדי לתפוס אותם, השתמש ב- -F77 הגדרה.
כברירת מחדל, כל האזהרות כבויות.
הגדרה זו מספקת שליטה מפורטת על האזהרות לגבי ניידות אפשרית
בעיות. ה רשימה מורכב ממילות מפתח המופרדות בפסיקים או נקודתיים. יש
שלוש מילות מפתח מיוחדות: את כל להפעיל את כל האזהרות לגבי שימושים שאינם ניידים,
אף לא אחד כדי לכבות את כולם, ו לעזור כדי להדפיס את רשימת כל מילות המפתח עם א
הסבר קצר על כל אחד מהם. אם רשימה מושמט, -הִטַלטְלוּת שווה
-ניידות=הכל, ו -אי-ניידות שווה -ניידות=אין. ה
מילות מפתח אזהרה עם המשמעויות שלהן הן כדלקמן:
מַהֲלָך סְרָק:
תו נטוי אחורי במחרוזות. מכיוון שכמה מהדרים מתייחסים לאחור כאל
דמות בריחה, הנוכחות שלו עלולה לגרום לבעיות למרות שהוא בשימוש
בצורה תואמת תקן.
יישור משותף:
משתני בלוק COMMON אינם בסדר יורד של גודל האחסון. כמה
מהדרים דורשים הזמנה זו בגלל דרישות יישור אחסון.
הולירית:
קבועי Hollerith (מלבד מפרטי FORMAT). ההולרית
סוג הנתונים הוא תכונה של Fortran IV שנמחקה ב-Fortran 77
תֶקֶן. הוא מוחלף על ידי סוג נתוני התווים. אחסון הולרית
נתונים במשתנים מסוג נתונים מספרי או לוגי אינם ניתנים לנייד עקב
גדלי מילים שונים.
מחרוזת ארוכה:
קבועי מחרוזת, משתנים או ביטויים באורך של יותר מ-255 תווים.
שקילות מעורבת:
משתנים מסוגי נתונים שונים שקולים.
בגודל מעורב:
משתנים שהוכרזו עם דיוק ברירת מחדל בשימוש עם משתנים שניתנו במפורש
דיוק, בביטויים, מטלות או כטיעונים. לדוגמה, אם א
משתנה המוצהר כ-REAL*8 מטופל כשווה ערך ל-DOUBLE PRECISION.
אמיתי לעשות:
אינדקס וגבולות לולאת DO ללא מספר שלם. אלה עלולים לגרום לתוצאות של תוכנית
תלוי במאפייני החומרה של המחשב המסוים שבו נעשה שימוש.
param-implicit-type:
הקלדה מרומזת של פרמטר לפי סוג הנתונים של הערך שהוקצה, אם זה
שונה מסוג ברירת המחדל. אזהרה זו יכולה להתרחש רק אם היא מרומזת
הקלדת פרמטר הופעלה על ידי -source=param-implicit-type
אפשרות, או אם הצהרת PARAMETER היא בצורה לא סטנדרטית ללא
סוגריים. אם אפשרות זו מופעלת, אז כל המקרים יהיו מרומזים
מתרחשת הקלדת פרמטרים והסוג המרומז שונה מהסוג
סוג ברירת המחדל מבוסס על האות הראשונה של שם הפרמטר, יוזהר
על אודות. הקלדת פרמטר מרומז יכולה לשנות את הסמנטיקה של הצהרות
היכן נעשה שימוש בפרמטר, מה שגורם לבעיות ניידות.
כרטיסייה: כרטיסיות בקוד המקור. כרטיסיות מתפרשות אחרת על ידי שונים
מהדרים. אזהרה זו תינתן פעם אחת בלבד, בסוף הקובץ.
ראה גם: -F77, -F90, -F95, -יפה, בסגנון, -גודל מילים.
-יפה=רשימה
שולט בהודעות מסוימות הקשורות להופעת קוד המקור. אלה מזהירים
על דברים שעלולים להפוך תוכנית לפחות קריאה או להטעות את הקורא.
כברירת מחדל, כל האזהרות מופעלות.
הגדרה זו מספקת שליטה מפורטת על האזהרות לגבי המראה. ה
רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. מכיוון שכל האזהרות פועלות
כברירת מחדל, כלול מילת מפתח עם קידומת של לא- כדי לכבות אזהרה מסוימת.
ישנן שלוש מילות מפתח מיוחדות: את כל להפעיל את כל האזהרות על הטעיה
הופעות, אף לא אחד כדי לכבות את כולם, ו לעזור כדי להדפיס את הרשימה של כל
מילות מפתח עם הסבר קצר על כל אחת מהן. אם רשימה מושמט, -יפה is
שווה ערך ל -יפה=הכל, ו -לא ממש שווה -יפה=אין. ה
מילות מפתח אזהרה עם המשמעויות שלהן הן כדלקמן:
חזרה חלופית:
למשפט RETURN יש קבוע המציין נקודת החזרה חלופית
אינו בין 0 למספר ארגומנטים דמה שהם תוויות. זה
חוקי, ויש לו אותה השפעה כמו RETURN ללא תמורה חלופית
ביטוי, אך מציע שהמתכנת התכוון להשתמש במחליף
תווית החזרה שאינה מסופקת.
מרחב מוטבע:
רווח מוטבע בשמות משתנים או באופרטורים מרובי תווים כגון **.
המשך:
סימן המשך בעקבות שורת הערה.
קו ארוך:
קווים (למעט הערות) על פני 72 עמודות ברוחב (מעבר ל-72 זה בדרך כלל
מהדר מתעלם ממנו).
חסר-מרחב:
חוסר רווח בין משתנה למילת מפתח קודמת.
מרובה-משותף:
בלוק COMMON שהוכרז במספר הצהרות. לא ניתנת אזהרה אם
ההצהרות הן עוקבות למעט שורות הערות.
רשימת שמות מרובים:
NAMELIST הוצהר במספר הצהרות. לא ניתנת אזהרה אם
ההצהרות הן עוקבות למעט שורות הערות.
סוגריים:
סוגריים סביב משתנה בפני עצמו. כטיעון משנה, זה
הופך את הארגומנט לביטוי, שאינו ניתן לשינוי על ידי תת-התוכנית.
שימו לב שבצורת מקור חופשי, שטח נוסף וחלל חסר אסורים על ידי ה-
Fortran 90 Standard, ואינן הפרות סגנון בלבד. במקרה הזה האזהרות
מוחלפים בהודעות שגיאה תחביר, וניתן לכבות אותם רק באמצעות
-לא צ'ק.
ראה גם: -F77, -הִטַלטְלוּת, בסגנון.
-פרויקט=רשימה
ftnchek תיצור קובץ פרויקט מכל קובץ מקור שנקלט בזמן זה
האפשרות מופעלת. קובץ הפרויקט יקבל את אותו שם כמו הקלט
קובץ, אבל עם הסיומת .f or .ל הוחלף על ידי .prj. (אם הקלט הוא מ
קלט רגיל, שם קובץ הפרויקט ftnchek.prj.) ברירת מחדל = אין.
השמיים רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. ישנם שלושה
מילות מפתח מיוחדות: את כל כדי להפעיל את כל האפשרויות, אף לא אחד כדי לכבות את כולם, ו
לעזור כדי להדפיס את רשימת כל מילות המפתח עם הסבר קצר על כל אחת מהן. אם
רשימה מושמט, -פּרוֹיֶקט שווה -פרויקט=הכל, ו -ללא פרויקט is
שווה ערך ל -פרויקט=אין. מילות המפתח עם המשמעויות שלהן הן כדלקמן:
לִיצוֹר:
הפק קובץ פרויקט. ברירת המחדל היא לא לייצר קובץ פרויקט. אם
אפשרות זו אינה מופעלת, לאפשרויות האחרות אין השפעה.
חיתוך-שיחות:
חתוך את כמות המידע המאוחסנת בקובץ הפרויקט על תת-תוכנית
הצהרות ושיחות. זוהי ברירת המחדל. כבה אפשרות זו רק ב
מצבים נדירים. (ראה דיון להלן.) כמות החיתוך משתנה
תלוי ב -ליבררי דֶגֶל. מידע נוסף נחתך אם הדגל הזה הוא
נדלק.
לקצץ-נפוץ:
חתוך את מספר הצהרות הבלוק הנפוצות המאוחסנות בקובץ הפרויקט.
זוהי ברירת המחדל. כבה אפשרות זו רק במצבים נדירים. (לִרְאוֹת
לאפשרות זו אין השפעה אם -ליבררי הדגל מסובב
כבוי: כאשר לא במצב ספרייה, אין חיתוך של הצהרות בלוק נפוצות
נעשה ללא קשר לאפשרות זו.
קובץ פרויקט מכיל סיכום מידע מקובץ המקור, לשימוש ב
בדיקת הסכמה בין שימושים FUNCTION, SUBROUTINE ו-COMMON בקבצים אחרים.
זה מאפשר בדיקה מצטברת, מה שחוסך זמן בכל פעם שיש לך סט גדול של
קבצים המכילים תת-שגרות משותפות, שרובן משתנות לעתים רחוקות. אתה יכול לרוץ
ftnchek פעם אחת בכל קובץ עם ה -פּרוֹיֶקט סט דגל, יצירת קבצי הפרויקט.
בדרך כלל תגדיר גם את -ליבררי ו -לא חיצוני דגלים בזמן זה, ל
לדכא הודעות הקשורות לעקביות עם קבצים אחרים. רק הודעות שגיאה
המתייחסים לכל קובץ בפני עצמו יודפסו בשלב זה. לאחר מכן, רוץ
ftnchek ללא הדגלים הללו בכל קבצי הפרויקט יחד, כדי לבדוק עקביות
בין הקבצים השונים. כל ההודעות הפנימיות לקבצים הבודדים יהיו כעת
לְהִשָׁמֵט. רק כאשר קובץ ישתנה, יהיה צורך ליצור קובץ פרוייקט חדש
בשביל זה.
באופן טבעי, כאשר ה -פּרוֹיֶקט האפשרות מופעלת, ftnchek לא יקרא את הפרויקט
קבצים כקלט.
בדרך כלל, יש להשאיר את אפשרויות החיתוך פועלות כאשר אתה מתכוון ליצור פרויקט
קבצים לקלט עתידי ftnchek. מכיוון שהגזם מופעל כברירת מחדל, זה אומר
זה פשוט לתת את הפקודה -פּרוֹיֶקט ללא רשימת אפשרויות היא המומלצת
מצב. אפשרויות החיתוך ניתנות רק מטעמי נוחות למי שרוצה
לעשות שימוש בקבצי הפרויקט למטרות אחרות מלבד בדיקת התוכנית עם
ftnchek. כדי להשתמש בקבצי פרויקט למטרה המיועדת להם, אפשרויות החיתוך צריכות
לא להיות כבוי.
קובצי פרויקט מכילים רק מידע הדרוש לבדיקת הסכמה בין קבצים.
משמעות הדבר היא שקובץ פרויקט אינו מועיל אם כל המודולים של התוכנית השלמה
כלולים בקובץ בודד.
דיון מפורט יותר ניתן בסעיף על שימוש בקבצי פרויקט.
טהור
נניח שפונקציות הן ``טהורות'', כלומר, לא יהיו להן תופעות לוואי על ידי שינוי
הארגומנטים או המשתנים שלהם בבלוק COMMON. כאשר הדגל הזה בתוקף,
ftnchek יבסס את קביעתו של סטטוס ומצב בשימוש של הטיעונים בפועל
בהנחה שארגומנטים המועברים לפונקציה אינם משתנים. זה יהיה
גם להפיץ אזהרה אם נמצאה פונקציה כדי לשנות את אחד מהארגומנטים שלה או כל אחד מהם
משתנים נפוצים. ברירת מחדל = כן.
כאשר הדגל הזה כבוי, ארגומנטים ממשיים המועברים לפונקציות יטופלו
באותו האופן שבו הועברו טיעונים בפועל לתתי שגרות. זה אומר ש ftnchek
יניח שארגומנטים עשויים להשתנות על ידי הפונקציות. לא יהיו אזהרות
ניתן אם נמצא כי לתפקוד יש תופעות לוואי. כי בדיקה מחמירה יותר היא
אפשרי אם מניחים שהפונקציות טהורות, עליך לכבות את הדגל הזה רק אם
התוכנית שלך למעשה משתמשת בפונקציות עם תופעות לוואי.
-שֶׁקֶט
אפשרות זו מפחיתה את כמות הפלט המתייחסת לפעולה רגילה, כך
הודעות השגיאה ברורות יותר. אפשרות זו ניתנת לנוחיות של
משתמשים שבודקים חבילות גדולות של קבצים. הפלט שבוטל כולל את
שמות של קבצי פרויקט, וההודעה המדווחת שלא נמצאו שגיאות תחביר.
זה גם מבטל כמה שורות ריקות הנכללות בדרך כלל לצורך הבהירות. (כמה
של פלט זה מופעל מחדש על ידי -רשימה ו -סימטאב אפשרויות.) ברירת מחדל = לא.
הערה: הדרך לזכור את ההבדל בין ה -שֶׁקֶט ו -קָצָר הוא כי
-שֶׁקֶט אינו מדכא מידע הקשור לאזהרה, ואילו -קָצָר עושה.
ראה גם: -קָצָר.
-התייחסות
מציין כי מודפס טבלה של מי-קורא למי. טבלה זו מפרטת כל תת תוכנית
ואחריו רשימה של השגרות שהוא קורא. מתג זה שווה ערך ל
-calltree=reference. ברירת מחדל = לא.
רשימת הפניות משמיטה שגרות שנקראות על ידי מודולי ספרייה שאינם בשימוש. כך זה
מכיל את אותו מידע כמו עבור פורמט ה-call-tree, כלומר ההיררכיה של
קריאות לתוכניות משנה, אך מודפסות בצורה אחרת. זה מדפיס ברוחב-ראשון
מעבר של עץ השיחה ואילו -calltree=עץ מדפיס עומק ראשון
חצייה.
ראה גם: -calltree, -crossref, -ליבררי, -סוג, -סימטאב, -vcg.
מקורות
מדפיס את כמות המשאבים בשימוש ftnchek בעיבוד התוכנית. זֶה
רישום עשוי להיות שימושי בניתוח הגודל והמורכבות של תוכנית. זה יכול
גם לעזור בבחירת גדלים גדולים יותר עבור ftnchekהטבלאות הפנימיות של אם הם גם כן
קטן לנתח תוכנית מסוימת. ברירת מחדל = לא.
ברשימה זו, המונח ``גודל נתח'' הוא הגודל של גושי הזיכרון
מוקצה לאחסון הפריט הנדון, ביחידות בגודל של פריט אחד, לא
בהכרח בבתים. כאשר המקום שהוקצה בהתחלה מתמלא, יותר זיכרון
מוקצה בנתחים בגודל זה. להלן הסבר על הפריטים
מודפס:
מָקוֹר קווים מעובד:
מספר כולל של שורות קוד, עם סיכומים נפרדים עבור שורות הצהרה ו
שורות הערה. שורות הערה כוללות שורות עם 'C' או '*' גם בעמודה 1
כשורות ריקות ושורות המכילות רק הערה מוטבעת. שורות הצהרה
הם כל שאר השורות, כולל שורות שיש להן הערה מוטבעת בעקבות כמה
קוד. שורות המשך נספרות כשורות נפרדות. שורות ב כוללים
קבצים נספרים בכל פעם שהקובץ נכלל.
סה"כ הפעלה הצהרות:
מספר ההצהרות בתוכנית, מלבד מפרט, נתונים, הצהרה-
הצהרות function, FORMAT, ENTRY ו-END.
סה"כ מספר of מודולים:
מודול הוא כל תת תוכנית חיצונית, כולל התוכנית הראשית, תתי שגרות,
פונקציות ויחידות נתונים לחסימה. ספירה זו היא של מודולים שהוגדרו בתוך
מקור, לא מודולים שהוזכרו. פונקציות הצהרות אינן כלולות. א
תוכנית משנה עם מספר נקודות כניסה נספרת פעם אחת בלבד.
סה"כ הצהרה תוויות מוגדר
מספר התוויות המוצמדות להצהרות (נקרא לעתים קרובות מספרי הצהרות). ה
ניתנת ספירת התוויות הכוללת עבור התוכנית כולה, כמו גם המקסימום
מספר בכל תת תוכנית בודדת.
מקס מזהה שם תווים:
מספר התווים המשמשים לאחסון שמות מזהים. מזהה הוא א
משתנה, תת-תוכנית או שם בלוק משותף. שמות מקומיים הם אלה של מקומיים
משתנים בתת-תוכנית, בעוד ששמות גלובליים מתייחסים לתת-תוכנית ומשותף
שמות בלוקים, כמו גם שמות ארגומנטים דמה ושמות משתנים נפוצים. מַמָשִׁי
טקסט ארגומנט (עד 15 תווים לכל ארגומנט) נכלל גם כאן.
הרווח המשמש לשמות מקומיים אינו משוחזר בסוף כל מודול, אז
המספר הזה, כמו החלל הגלובלי, גדל עד שכל התוכנית מנותחת.
למרבה הצער, נתון זה עשוי לכלול טקסט כלשהו המאוחסן יותר מפעם אחת,
אם כי נעשה שימוש בהיוריסטיקה שתמנע כפילויות במקרים רבים.
מקס אסימון טֶקסט תווים:
אסימון הוא היחידה התחבירית הקטנה ביותר של שפת FORTRAN מעל הרמה
של דמויות בודדות. לדוגמה, אסימון יכול להיות שם משתנה, א
קבוע מספרי, מחרוזת טקסט במירכאות או תו פיסוק. אֲסִימוֹן
טקסט מאוחסן בזמן עיבוד מודול. מסיבות טכניות,
אסימונים של תו בודד אינם כלולים בסכום זה. פריטים שלא
מיוצג בטבלת הסמלים עשוי להיות משוכפל. המקום לטקסט אסימון הוא
התאושש בסוף כל מודול, אז נתון זה מייצג את המקסימום עבור
כל מודול אחד.
מקס מקומי סמלים:
זהו המספר הגדול ביותר של ערכים בטבלת הסמלים המקומית עבור כל מודול.
ערכי טבלת סמלים מקומיים כוללים את כל המשתנים והפרמטרים, בלוק משותף
שמות, פונקציות הצהרות, תוכניות משנה חיצוניות ופונקציות פנימיות
שמוזכר על ידי המודול. קבועים מילוליים אינם מאוחסנים בסמל המקומי
השולחן.
מקס גלוֹבָּלִי סמלים:
זהו מספר הערכים בטבלת הסמלים הגלובלית בסוף
מעבד. ערכי טבלת סמלים גלובליים כוללים תת-תוכנית חיצונית ומשותף
שמות בלוקים. פונקציות פנימיות ופונקציות הצהרות אינן כלולות.
מקס מספר of רשימות אסימונים:
רשימת אסימונים היא רצף של אסימונים המייצגים את הארגומנט הממשי או הדמי
רשימה של תת-תוכנית, או רשימת המשתנים בבלוק משותף או ברשימת שמות.
לכן מספר זה מייצג את הסכום הגדול ביותר של COMMON, CALL, NAMELIST ו
הצהרות ENTRY וקריאת פונקציות עבור כל מודול אחד. החלל הוא
משוחזר בסוף כל מודול.
מקס אסימון רשימה/עץ מֶרחָב:
זהו המספר הגדול ביותר של אסימונים בכל רשימות האסימונים ועצי האסימונים של
כל מודול אחד. עץ אסימון נוצר כאשר מנתחים ביטוי: כל אחד
אופרנד הוא עלה של העץ, והאופרטורים הם הצמתים. לכן זה
מספר הוא מדד למורכבות המקסימלית של מודול בודד. ל
דוגמה למודול עם הרבה ביטויים אריתמטיים ארוכים יהיה גבוה
מספר. שימו לב שבניגוד לטקסט האסימון המתואר לעיל, מספר האסימונים הוא
ללא תלות באורך שמות המשתנים או קבועים מילוליים ב-
ביטויים.
מספר of תוכנית משנה קריאות:
זהו הסכום על כל המודולים של מספר הצהרות ה-CALL והפונקציה
קריאות (למעט פונקציות פנימיות ופונקציות הצהרות).
מספר of משותף בלוק מצהיר:
זהו הסכום על כל המודולים של מספר הצהרות הבלוק הנפוצות.
כלומר, כל הצהרה של בלוק במודול אחר נספרת
לְחוּד. (התקן מאפשר הצהרות מרובות של בלוק בתוך
אותו מודול; אלה נספרים כהצהרה אחת בלבד מאחר שכן
שווה ערך להצהרה אחת ארוכה.)
מספר of מערך שמש & להפסיק pts:
זהו הסכום על כל המודולים של מספר ממד ופרמטר המערך
מחרוזות טקסט הגדרה שנשמרו לשימוש על ידי -makedcls אוֹפְּצִיָה. האורך של
מחרוזות הטקסט לא נספרות. כל מימד של מערך רב מימדי הוא
נספר בנפרד.
המספרים האלה כמובן אינם זהים כאשר משתמשים בקבצי פרויקט במקום
קוד המקור המקורי. אפילו המספרים של ישויות גלובליות עשויים להיות שונים,
מכיוון שמידע מיותר מסולק בקבצי הפרויקט.
-שישה צ'אר
אחת המטרות של ftnchek התוכנית היא לעזור למשתמשים לכתוב Fortran נייד
תוכניות. מקור פוטנציאלי אחד לאי-ניידות הוא השימוש בשמות משתנים
הם ארוכים משש תווים. כמה מהדרים פשוט מתעלמים מהתווים הנוספים.
התנהגות זו עלולה להוביל לכך ששני משתנים שונים ייחשבו כאל
אותו הדבר. לדוגמה, משתנים בשם AVERAGECOST ו-AVERAGEPRICE זהים
בשש התווים הראשונים. אם אתה רוצה לתפוס קונפליקטים אפשריים כאלה, השתמש
הדגל הזה. ברירת מחדל = לא.
השתמש -f77=שמות ארוכים אם אתה רוצה לרשום את כל משתנים יותר משישה
תווים, לא רק הזוגות שהם זהים בששת הראשונים.
ראה גם: -F77, -הִטַלטְלוּת.
-סוג
מציין שתודפס רשימה ממוינת של כל המודולים המשמשים בתוכנית. זֶה
הרשימה היא בסדר ``קדם'', כלומר כל מודול מודפס רק לאחר כל ה-
מודולים שמהם זה נקרא הודפסו. זה נקרא גם א
``מיון טופולוגי'' של עץ השיחה. כל מודול מופיע רק פעם אחת. שגרות
שאינם נמצאים בעץ השיחות של התוכנית הראשית נשמטים. אם יש כאלה
מחזורים בגרף השיחות (לא חוקי ב-Fortran הרגיל) הם יתגלו ו
מאובחן. ברירת מחדל = לא.
ראה גם: -calltree, -crossref, -התייחסות, -סימטאב, -vcg.
-מקור=רשימה
הגדרה זו שולטת באפשרויות מסוימות לגבי צורת קוד המקור של Fortran.
השמיים רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. ישנם שלושה
מילות מפתח מיוחדות: את כל כדי להפעיל את כל האפשרויות, אף לא אחד כדי לכבות את כולם, ו
לעזור כדי להדפיס את רשימת כל מילות המפתח עם הסבר קצר על כל אחת מהן. אם
רשימה מושמט, -מָקוֹר שווה -מקור=הכל, ו -nosource שווה ערך
ל -מקור=אין.
לתאימות עם גרסאות קודמות של ftnchek, צורה מספרית של הגדרה זו
מקובל גם: ה רשימה מוחלף במספר שהוא סכום המספרים
בסוגריים לצד מילות המפתח ברשימה הבאה. (ה קבוע ו חופשי
לאפשרויות אין ערכים מספריים.) מילות המפתח האזהרות עם המשמעויות שלהן הן
באופן הבא:
קבוע:
פרש את המקור כצורה קבועה (עם הרחבות נתמכות כגון
סימן קריאה להערות). ההצהרות חייבות להיות בעמודות 7 עד 72
(אלא אם כן ה -קולות נעשה שימוש בהגדרה כדי לשנות זאת), והחסרים אינם
הקשר דמות חיצוני משמעותי (אבל הזהיר מפני תחת -יפה
אוֹפְּצִיָה). זהו מצב ברירת המחדל אלא אם כן סיומת קובץ המקור היא .f90
or .XXXXX. לא ניתן לתת אפשרות זו יחד עם -מקור=חינם.
חופשי: פרש את המקור כצורה חופשית. הצהרות עשויות להיות בכל מקום בעמודות 1
עד 132, הערות יכולות להתחיל רק בסימן קריאה, וחסרים
נדרש במקומות מסוימים, כגון בין מזהים ומילות מפתח. זה
מצב ברירת המחדל אם סיומת קובץ המקור היא .f90 or .XXXXX. אפשרות זו
לא ניתן לתת יחד עם -מקור=תוקן or -source=dec-tab
dec-tab (1):
קבל מקור בפורמט כרטיסייה בסגנון DEC. שורה שמתחילה בטאב ראשוני
יטופל כשורת הצהרה חדשה אלא אם כן התו שאחרי הכרטיסייה
ספרה שאינה אפס, ובמקרה זה מתייחסים אליה כאל קו המשך. ה
העמודה הבאה אחרי הכרטיסייה או סימן ההמשך נלקח כעמודה 7. א
אזהרה תינתן במקרה בו הקו הוא המשך, אם
-f77=dec-tab הוא בתוקף.
vms-include (2):
קבל הצהרות INCLUDE בסגנון VMS. אלה עוקבים אחר התחביר הרגיל, אבל
עם התכונות הנוספות הבאות: (1) סיומת הקובץ, אם לא ניתנה,
ברירת המחדל היא זהה לסיומת קובץ מקור רגילה; ו-(2) האפשרות
ניתן להוסיף /LIST או /NOLIST לשם הקובץ הכולל, כדי לשלוט ברישום
של תוכנו.
unix-backslash (4):
טפל בהמלטות לאחור בסגנון UNIX במחרוזות תווים. הבריחה
רצף העוקב לאחור יוערך בהתאם ל-ANSI
תקן עבור מחרוזות ב-C: עד שלוש ספרות מסמלות ערך אוקטלי, x
מסמל את ההתחלה של קבוע הקסדצימלי, כל אחת מהאותיות abfnrt
מסמל קודי בקרה מיוחדים, וכל תו אחר (כולל שורה חדשה)
מסמל את הדמות עצמה. כאשר אפשרות קוד מקור זו בתוקף, א
תינתן אזהרה אם -f77 = קו נטוי אחורי ההגדרה מוגדרת.
התנהגות ברירת המחדל היא להתייחס לאחור כמו כל רגיל אחר
תו, אך תיווצר אזהרה לגבי ניידות אם
-הִטַלטְלוּת הדגל מוגדר. בגלל העובדה שכמה מהדרים מתייחסים ל-
נטוי אחורי בצורה לא סטנדרטית, זה אפשרי להתאמה לתקן
תוכניות יהיו בלתי ניידות אם הן משתמשות בתו הנטוי האחורי במחרוזות.
השאלה היא איך? ftnchek לא עושה הרבה עם המחרוזת המתפרשת, זה רק לעתים רחוקות
הכרחי כדי להשתמש באפשרות זו. זה נחוץ כדי למנוע זיוף
אזהרות רק אם (א) התוכנית הנבדקת משתמשת בהטמעה לאחור כדי להטמיע
גרש או מרכאה במחרוזת במקום להשתמש במנגנון הסטנדרטי
של הכפלת המפריד; (ב) הצלף האחורי משמש כדי לחמוק מהסוף של-
קו כדי להמשיך מחרוזת על פני שורות מקור מרובות; או (ג) א
הגדרת PARAMETER משתמשת בפונקציית מחרוזת פנימית כמו LEN עם כזו
מחרוזת כארגומנט, וערך זה משמש מאוחר יותר להגדרת מערך
מידות וכו'.
param-implicit-type (8):
הקלדה מרומזת של פרמטר לפי סוג הנתונים של הערך שהוקצה. כמה
מהדרים לא סטנדרטיים עשויים לאפשר לסוג הנתונים של הערך לעקוף את
Fortran 77 סוג ברירת מחדל של פרמטר המבוסס על האות הראשונה של
שם הפרמטר. אפשרות זו חלה רק על הצהרות PARAMETER של
טופס סטנדרטי שיש לו סוגריים. פרמטר שהיה במפורש
שהוכרז בהצהרת סוג לפני הצהרת PARAMETER אינה מושפעת
לפי אפשרות זו. תינתן אזהרה תחת -f77=סוג-param-implicit
or -ניידות=סוג-param-implicit אוֹפְּצִיָה.
שים לב שהקלדה מרומזת זו מטופלת כשוות ערך לסוג מפורש
הצהרה עבור הפרמטר. לכן, אם אתה משתמש
-makedcls=לא מוצהר בלבד להפיק הצהרות רק של לא מוצהר
משתנים, פרמטרים אלה יהיו לֹא להיכלל.
dec-param-standard-type (16):
פעל לפי כלל Fortran 77 להקלדת נתונים של פרמטרים בסגנון DEC Fortran.
אלה מוצהרים באמצעות צורה לא סטנדרטית של הצהרת PARAMETER אשר
חסר סוגריים. לפי DEC Fortran, פרמטרים מוגדרים על ידי טופס זה
של ההצהרה, סוג הנתונים שלהם נתון על ידי סוג הנתונים של הערך
שהוקצה. השתמש באפשרות זו כדי לספר ftnchek לא לפעול לפי הכלל הזה אבל
במקום זאת להשתמש באותו כלל כמו עבור הצהרות PARAMETER סטנדרטיות. זֶה
האפשרות אינה חלה על הצהרות PARAMETER של הטופס הסטנדרטי.
כברירת מחדל, כל אפשרויות קוד המקור הללו כבויות, פרט ל-
vms-include אפשרות, המופעלת כברירת מחדל בגרסת VMS..
ראה גם: -F77, -לִכלוֹל, -הִטַלטְלוּת.
-סגנון=רשימה
מספק אזהרות בררניות במיוחד לגבי תכנות מיושנות או מיושנות
מבנים. אפשרות זו מועילה למאמצים לעקוב אחר תכנות מודרני
סִגְנוֹן. (רוב הדברים שהתלוננו עליהם במסגרת אפשרות זו אסורים ב
F תת-קבוצה שפה.) By ברירת מחדל את כל אזהרות יש לו פנה הנחה.
השמיים רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. ישנם שלושה
מילות מפתח מיוחדות: את כל כדי להפעיל את כל האפשרויות, אף לא אחד כדי לכבות את כולם, ו
לעזור כדי להדפיס את רשימת כל מילות המפתח עם הסבר קצר על כל אחת מהן. אם
רשימה מושמט, בסגנון שווה -סגנון=הכל, ו -לא סטייל שווה
-סגנון=אין. מילות המפתח האזהרות עם המשמעויות שלהן הן כדלקמן:
חסום-אם:
להתלונן על הצהרת IF אריתמטית. קבל בלוק IF או לוגי IF (אשר
שולט בהצהרה בודדת).
מבנה-שם:
התלונן על מבני בלוק ללא שם: IF, DO ו-SELECT CASE. ציין זאת
אם שם מבנה קיים בהצהרת הפתיחה של מבנה, אז
הוא נדרש להיות נוכח בכל שאר הצהרות הרכיבים (ELSE, END IF,
וכו') של המבנה. במקרה כזה שם מבנה חסר על אלה
הצהרות מייצרות שגיאת תחביר ללא קשר לאפשרות זו. המטרה
של אפשרות זו היא להזהיר אם המבנה חסר לחלוטין את האופציונלי
שם.
מובחן-לעשות:
התלונן אם שתי לולאות DO חולקות הצהרת קטלנית משותפת.
לעשות-בנה:
התלונן אם terminator של לולאת DO הוא משהו אחר מלבד END DO או
הצהרת המשך. זו הדרישה על מנת שהלולאה תעמוד
ההגדרה של Fortran 90 ל-do-construct.
לעשות-אנדו:
התלונן אם terminator של לולאת DO הוא משהו אחר מאשר END DO
הַצהָרָה. (אפשרות זו עוקפת את לעשות-בנה אפשרות, להיות זוגי
מחמירים יותר.)
שם קצה:
התלונן על היעדר שם המשנה ב-END המובנה
הצהרות.
format-stmt:
התלונן על נוכחותם של הצהרות FORMAT. רק הצהרות FORMAT
עצמם מסומנים, לא ההפניות אליהם ברשימות I/O.
goto: להתלונן על נוכחות של GOTO ללא תנאי, מחושב או מוקצה
הצהרות. מתלוננים גם על החזרות חלופיות (אך לא על תוויות כמו
ארגומנטים של תת תוכנית).
labeled-stmt:
להתלונן על נוכחות של תוויות (מספרים) על הצהרות אחרות מאשר
הצהרות FORMAT. (מכיוון שהצהרות FORMAT הן ללא ספק נוחות ולא
התעללות קלה, תלונות עליהם נשלטות על ידי הנפרד
format-stmt מילת מפתח.)
program-stmt:
להתלונן על היעדר הצהרת PROGRAM בראש הראשית
תכנית.
קצה מובנה:
להתלונן על השימוש במשפט END רגיל כדי לסיים תת-תוכנית, במקום זאת
מאשר משפט END מובנה (END PROGRAM, END SUBROUTINE, END FUNCTION,
או END BLOCK DATA).
ראה גם: -F77, -F90, -F95, -יפה, -הִטַלטְלוּת.
-סימטאב
תודפס טבלת סמלים עבור כל מודול, המפרטת את כל המזהים
מוזכר במודול. טבלה זו נותנת את השם של כל משתנה, סוג הנתונים שלו,
ומספר הממדים עבור מערכים. כוכבית (*) מציינת שה-
המשתנה הוקלד באופן מרומז, במקום לקבל שם בסוג מפורש
הצהרת הצהרה. הטבלה מפרטת גם את כל תוכניות המשנה שהופעלו על ידי המודול,
כל הבלוקים ה-COMMON שהוכרזו וכו'. ברירת מחדל = לא.
כמו כן, עבור כל מודול, תודפס טבלת תוויות. הטבלה מפרטת כל תווית
מוגדר במודול; הקו שעליו מוגדרת תווית ההצהרה האמורה; וה
סוג הצהרה (קובץ הפעלה, פורמט או מפרט). התוויות רשומות ב
לפי סדר.
כמו כן מודפסת טבלה המתארת את יחידות ה-I/O המשמשות את המודול, יחד עם
מידע על אופן השימוש בהם: אילו פעולות מבוצעות, האם
הגישה היא רציפה או ישירה, והאם ה-I/O מעוצב או לא מעוצב.
ראה גם: -calltree, -crossref, -רשימה, -התייחסות, -סוג, -vcg.
-קטיעה=רשימה
הזהר לגבי שגיאות חיתוך (או עיגול) אפשריות. רובם קשורים ל
אריתמטיקה של מספרים שלמים. כברירת מחדל, כל האזהרות מופעלות.
הגדרה זו מספקת שליטה מפורטת על האזהרות לגבי חיתוך אפשרי
שגיאות. ה רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. מאז הכל
אזהרות פועלות כברירת מחדל, כלול מילת מפתח עם קידומת של לא- לכבות א
אזהרה מיוחדת. ישנן שלוש מילות מפתח מיוחדות: את כל להפעיל את כל
אזהרות לגבי קטיעה, אף לא אחד כדי לכבות את כולם, ו לעזור כדי להדפיס את הרשימה של
כל מילות המפתח עם הסבר קצר על כל אחת מהן. אם רשימה מושמט, -גְמִימָה
שווה -קטיעה=הכל, ו -לא קצץ שווה
-קטיעה=אין. מילות המפתח האזהרות עם המשמעויות שלהן הן כדלקמן:
int-div-exponent:
שימוש בתוצאת חלוקה שלמים כמעריך. זה מצביע על כך שא
מיועדת המנה האמיתית. דוגמה תהיה כתיבת X**(1/3) כדי להעריך
שורש הקובייה של X. הביטוי הנכון הוא X**(1./3.).
int-div-real:
המרה של ביטוי הכולל חלוקה שלמה לאמיתי. זֶה
מצביע על כך שמיועדת מנה אמיתית.
int-div-XNUMX:
חלוקה בביטוי קבוע של מספר שלם המניב תוצאה של אפס.
int-neg-power:
אקספוננציה של מספר שלם במספר שלם שלילי (שמניב אפס אלא אם כן
מספר הבסיס הוא 1 בגודל). זה מרמז על בסיס אמיתי
התכוון.
קידום:
המרה אוטומטית של כמות דיוק נמוכה יותר לכמות גבוהה יותר
דיוק. אובדן הדיוק של משתנים אמיתיים בתהליך זה הוא
דומה להורדה המקבילה. לא ניתנת אזהרה לקידום
של כמויות שלמות לאמיתיות מכיוון שזה בדרך כלל מדויק.
מדד אמיתי לעשות:
שימוש באינדקס DO שאינו שלם בלולאה עם גבולות שלמים. מספר שלם DO
אינדקס עם גבולות אמיתיים מוזהרת תמיד ללא קשר להגדרה זו.
מנוי אמיתי:
שימוש במתנה של מערך שאינו שלמים.
דמויות משמעותיות:
ציון יתר של קבוע דיוק יחיד. זה עשוי להצביע על כפול
נועד קבוע דיוק.
גודל-הורדה:
המרה אוטומטית של כמות דיוק גבוהה יותר לכמות בעלת דיוק נמוך יותר
מאותו סוג. אזהרה זו מתרחשת רק כאשר נעשה שימוש בגודל מפורש
הכרזה על סוג האופרנד אחד או שניהם במטלה. לדוגמה, א
תינתן אזהרה כאשר משתנה REAL*8 מוקצה למשתנה REAL,
אם ברירת המחדל של גודל המילים של 4 בתוקף. ניתנת אזהרה גם אם א
מספר שלם ארוך מוקצה למספר קצר יותר, לדוגמה, אם מספר שלם
ביטוי מוקצה למשתנה INTEGER*2. יש חריג אחד
מקרה אחרון זה, כלומר אם הצד הימני של המשימה הוא קטן
קבוע מילולי (פחות מ-128). טיפוס-הורדה: המרה אוטומטית של א
כמות דיוק גבוהה יותר לכמות דיוק נמוכה יותר מסוג שונה. זֶה
האזהרה כוללת המרה של כמויות אמיתיות למספר שלם, דיוק כפול
לדיוק יחיד אמיתי, והקצאה של מחרוזת תווים ארוכה יותר ל-a
אחד קצר יותר.
האזהרות לגבי קידום והורדה בדרגה חלות גם על קבועים מורכבים,
בהתחשב בדיוק של החלק האמיתי או הדמיוני. אזהרות לגבי
מבצעים והורדות בדרגה ניתנים רק כאשר ההמרה מתבצעת באופן אוטומטי,
למשל בביטויים של דיוק מעורב או בהצהרת משימה. אם מהותי
פונקציות כגון INT משמשות לביצוע ההמרה, לא ניתנת אזהרה.
ראה גם: -הִטַלטְלוּת, -גודל מילים.
-שימוש=רשימה
אזהרה לגבי משתנים שאינם בשימוש או אפשריים לא מאותחלים, בלוקים נפוצים שאינם בשימוש,
תוויות הצהרות לא מוגדרות או לא בשימוש, ותת תוכניות שאינן בשימוש או לא מוגדרות. על ידי
ברירת מחדל, כל האזהרות מופעלות.
הגדרה זו מספקת שליטה מפורטת על האזהרות לגבי שימוש אפשרי
שגיאות. ה רשימה מורכב ממילות מפתח מופרדות בפסיקים או נקודתיים. מאז הכל
אזהרות פועלות כברירת מחדל, כלול מילת מפתח עם קידומת של לא- לכבות א
אזהרה מיוחדת. ישנן שלוש מילות מפתח מיוחדות: את כל להפעיל את כל
אזהרות לגבי שימוש, אף לא אחד כדי לכבות את כולם, ו לעזור כדי להדפיס את הרשימה של כולם
מילות המפתח עם הסבר קצר על כל אחת מהן. אם רשימה מושמט, -נוֹהָג is
שווה ערך ל -שימוש=הכל, ו - עצבנות שווה -שימוש=אין. אלה
אזהרות מכסות ארבע קטגוריות עיקריות של אובייקטים: ארגומנטים דמה של תת-תוכנית, נפוצים
בלוקים ומשתנים, תוכניות משנה ופונקציות ומשתנים מקומיים. אזהרות
לכלול פריטים לא מוגדרים, להכפיל פריטים מוגדרים, פריטים שאינם בשימוש וכו'. האזהרה
מילות המפתח עם המשמעויות שלהן הן כדלקמן:
arg-alias:
טיעון דמה סקלרי זהה למעשה לאחר והוא (או עשוי להיות)
שונה. תקן Fortran 77 (סעיף 15.9.3.6) אוסר על שינוי
טיעון שהוא כינוי לאחר.
ערכת-ארג-כינוי:
ארגומנט דמה שהוא מערך או אלמנט מערך נמצא באותו מערך כמו
אחר והוא שונה. דגל זה דומה ל arg-alias אלא מספק
שליטה נפרדת על ארגומנטים של מערך. קשה יותר לדעת אם כינוי כן
מתרחש במקרה של מערכים, אז אם ftnchek נותן יותר מדי אזהרות שווא,
דגל זה מאפשר לכבות את אלה הקשורים למערך מבלי לדכא
האזהרות לסקלרים.
arg-common-alias:
ארגומנט דמה סקלרי זהה למשתנה נפוץ בתת-התוכנית,
ואחד מהם שונה. זה גם אסור על פי תקן Fortran 77.
אם הבדיקה הנפוצה אינה מדויקת (ראה את -מְשׁוּתָף הגדרה), קשה יותר לעשות זאת
לדעת אם מתרחש כינוי, אז האזהרה ניתנת אם המשתנה הוא
בכל מקום בבלוק משותף המוכרז על ידי תת-התוכנית.
arg-common-array-alias:
ארגומנט דמה שהוא מערך או אלמנט מערך נמצא באותו מערך כמו a
משתנה משותף, וכל אחד מהם שונה. אם הבדיקה הנפוצה אינה מדויקת,
המשתנה יכול להיות בכל מקום בבלוק משותף המוצהר על ידי ה-
תת תוכנית.
arg-const-modified:
תת-תוכנית משנה ארגומנט שהוא קבוע או ביטוי. כגון
פעולה עלולה לגרום להתנהגות חריגה של התוכנית.
arg-לא בשימוש:
טיעון דמה מוכרז אך מעולם לא נעשה בו שימוש. זה דומה ל
var-unused מילת מפתח המתוארת להלן, אך חלה רק על ארגומנטים.
com-block-unused:
מוכרז בלוק משותף אך אף אחד מהמשתנים בו אינו בשימוש על ידי אף אחד
תת תוכנית. אזהרה זו נדחית אם הגדרת ההקפדה הנפוצה היא
0.
com-block-volatile:
בלוק משותף עלול לאבד את הגדרת התוכן שלו אם בלוקים משותפים
נָדִיף. אפשרות זו משפיעה רק אם -נפוץ=נדיף הדגל נמצא בפנים
השפעה. ראה את הדיון ב -מְשׁוּתָף ההגדרה למעלה.
com-var-set-unused:
למשתנה משותף מוקצה ערך, אך הערך שלו אינו בשימוש על ידי אף אחד
תת תוכנית. אזהרה זו נדחית אם הגדרת ההקפדה הנפוצה היא
0.
com-var-uninitialized:
ערך של משתנה נפוץ נמצא בשימוש בתת-תוכנית כלשהי, אך אינו מוגדר
בְּכָל מָקוֹם. לצערי, ftnchek לא עושה ניתוח מספיק יסודי של
רצף השיחות כדי לדעת אילו שגרות נקראות לפני אחרים. לכן
אזהרות על טעות מסוג זה יינתנו רק במקרים בהם א
משתנה משמש בשגרה כלשהי אך אינו מוגדר בשום שגרה אחרת. בודק
של משתנים COMMON בודדים נעשה רק אם -מְשׁוּתָף ההגדרה היא 3
(משתנה לפי הסכם משתנה). אזהרה זו מדוכאת אם הנפוץ
הגדרת ההקפדה היא 0.
com-var-unused:
משתנה משותף מוכרז אך אינו בשימוש על ידי כל תת תוכנית. האזהרה הזו
מדוכא אם הגדרת ההקפדה הנפוצה היא 0.
עשה-אינדקס-שינוי:
משתנה שהוא האינדקס של לולאת DO משתנה על ידי משפט כלשהו
בטווח של הלולאה. התקן מתיר למשתנה DO פעיל
ישתנה רק על ידי מנגנון ההגדלה של הצהרת ה-DO.
ext-multiple-defined:
חיצוני (תת שגרה או פונקציה) מוגדר יותר מפעם אחת. הַגדָרָה
של אמצעי חיצוני המספק את גוף קוד המקור שלו.
ext-declared-בלבד:
שם מוצהר במשפט EXTERNAL במודול כלשהו, אך לא
מוגדר או בשימוש בכל מקום.
ext-undefined:
נעשה שימוש חיצוני (מופעל) אך אינו מוגדר בשום מקום. אפשרות זו היא
שווה ערך ל -חיצוני דֶגֶל. אם תת-תוכנית מופעל יותר מ
פעם אחת, הפניות הללו עדיין ייבדקו לגבי עקביות.
ext-לא בשימוש:
מוגדר חיצוני (גוף המשנה שלו קיים) אך אינו בשימוש.
תת-תוכנית נחשבת ללא שימוש גם אם היא מופעלת על ידי מישהו אחר
תת-תוכנית, אם לא ניתן לקרוא לה מכל שרשור ביצוע שמתחיל ב-
התוכנית הראשית. הסכמת טיעוני המשנה עימה
קריאות עדיין נבדקות גם אם אזהרה זו כבויה. אם יש
ללא תוכנית ראשית, אזהרה זו מונפקת רק אם תת-התוכנית אינה
מופעל בכל מקום. אזהרה זו מדוכאת במצב ספרייה, אבל ספרייה
למצב יש השפעה נוספת של דיכוי בדיקת ארגומנטים ללא שימוש
שגרות.
תווית לא מוגדרת:
הצהרה מתייחסת לתווית שלא הוגדרה.
תווית ללא שימוש:
תווית הצהרה מוגדרת, אך לעולם אינה מתייחסת אליה.
var-set-unused:
למשתנה מקומי מוקצה ערך, אבל הערך הזה אינו בשימוש.
var-uninitialized:
ניתן להשתמש בערך של משתנה מקומי לפני הקצאתו. לִפְעָמִים
ftnchek עושה טעות באזהרות לגבי שימוש במשתנה מקומי. בְּדֶרֶך כְּלַל
הוא שוגה בצד של מתן אזהרה כאשר לא קיימת בעיה, אך לעיתים נדירות
במקרים שהוא עלול לא להזהיר היכן הבעיה אכן קיימת. עיין בסעיף בנושא
באגים לדוגמאות. אם משתנים הם שקולים, הכלל המשמש על ידי ftnchek
הוא שהפניה לכל משתנה מרמזת על אותה התייחסות לכולם
משתנים שהוא שווה ערך אליהם. עבור מערכים, הכלל הוא שהתייחסות ל
כל רכיב מערך מטופל כהתייחסות לכל רכיבי המערך.
var-unused:
משתנה מקומי מוכרז (לדוגמה, בהצהרת טיפוס) אבל לא
בשימוש במודול. לא חל על טיעוני דמה: אזהרות לגביהם
נשלטים על ידי מילת המפתח arg-לא בשימוש מתואר לעיל.
הערה: בגרסאות של ftnchek לפני 2.10, ה -נוֹהָג הדגל לקח טיעון מספרי
במקום רשימה של אפשרויות. למען משתמשים שאולי כתבו סקריפטים
מזמין ftnchek בדרך זו, הצורה המספרית עדיין מקובלת. המספרי
ההגדרה מורכבת משלוש ספרות. הספרה הראשונה (מקום של מאות) שולטת
אזהרות לגבי תוכניות משנה (פונקציות ותתי שגרות), הספרה השנייה (עשרות
מקום) אזהרות לגבי בלוקים נפוצים ומשתנים נפוצים, והספרה השלישית
(מקום אחד) אזהרות לגבי משתנים מקומיים. כל ספרה שולטת באזהרות
לפי המוסכמה ש-1 פירושו להתריע על פריטים ומשתנים לא מוגדרים
שבהם נעשה שימוש לפני ההגדרה, 2 פירושו להזהיר על פריטים שאינם בשימוש, ו-3 פירושו
להזהיר על שני הסוגים. מספרים אלה מומרים כעת לערכים המתאימים
עבור מילות המפתח המפורטות למעלה, למעט com-block-volatile, שאינו מושפע
לפי הארגומנט המספרי.
ראה גם: -מְשׁוּתָף, -לְהַכרִיז, -חיצוני, -ליבררי.
-vcg
הפק את גרף השיחות בצורה של תיאור גרף VCG. התיאור הזה הוא
נכתב לקובץ נפרד, עם אותו גזע כמו הקובץ המכיל את ה-main
תוכנית, וסיומת .vcg. ניתן לתת קובץ זה ישירות ל xvcg(1 ליטר) ל
דמיינו את גרף השיחות. (אם הקלט הוא מהקלט הסטנדרטי, אז הגרף
תיאור נשלח לפלט סטנדרטי.) מתג זה שווה ערך ל
-calltree=vcg. ברירת מחדל = לא.
תיאור ה-VCG כפי שנוצר מורכב יותר ממה שהוא צריך להיות. VCG מאפשר גרפים
ותת-גרפים מקוננים: כל תת-שגרה נוצרת כתת-גרף מקונן בתוכה
שגרות שיחות. זה מאפשר לך להציג תת-גרפים באופן אינטראקטיבי או לסכם
אותם.
השמיים -vcg אפשרות עבור ftnchek נכתב על ידי ד"ר פיליפ רוביני מקרנפילד
אוניברסיטה, בריטניה.
xvcg הוא כלי להדמיה של גרפים הפועל תחת מערכת X windows. זה
זמין בחינם מ-ftp.cs.uni-sb.de. הוא נכתב על ידי ג' סנדר מה-
אוניברסיטת סערלנד, גרמניה.
ראה גם: -calltree, -crossref, -התייחסות, -סוג.
-הפך
אפשרות זו גורמת ftnchek כדי להדפיס שורה המציינת את מספר הגרסה, תאריך היציאה,
ורמת התיקון של התוכנית. אם לא ניתנים קבצים, הוא יוצא. אם קבצים
ניתנים, ההשפעה של אפשרות זו היא לכלול את רמת התיקון (בדרך כלל
מושמט) במידע הגרסה שהודפס בתחילת העיבוד. ברירת מחדל =
לא.
ראה גם: עזרה.
-נָדִיף
נניח שבלוקים COMMON הם נדיפים. ברירת מחדל = לא.
דגל זה מוחלף על ידי -נפוץ=נדיף, ואין להשתמש בו יותר. יכול להיות
יבוטל במהדורה עתידית של ftnchek.
ראה גם: -מְשׁוּתָף, -נוֹהָג.
-גודל מילים=NUM
מציין את גודל המילה המוגדר כברירת מחדל NUM בתים. זהו הגודל של לוגי ו
משתנים מספריים בעלי דיוק יחיד שאינם מקבלים דיוק מפורש.
(דיוק מפורש למשתנים שאינם אופי הם הרחבה ל-Fortran 77
סטנדרטיים, וניתנים לפי הצהרות סוג כגון REAL*8 X.) דיוק כפול
ומשתנים מורכבים יהיו כפול מהערך הזה, ומשתנים מורכבים כפולים ארבעה
פִּי. קבועים של ארבע דיוק ותוצאות פונקציות פנימיות יהיו פי ארבעה
הערך הזה. שימו לב שמשתנים שהוכרזו כ-REAL*16 ייחשבו כ-quad
דיוק רק אם גודל המילה הוא 4 בתים. ברירת מחדל = הפעלה = 4 בתים.
ערך גודל המילה אינו משנה לבדיקת תוכניות התואמות לתקן
אין להצהיר על דיוק מפורש למשתנים שאינם אופי או לאחסן Hollerith
נתונים במשתנים. הגדרה זו גם אינה משפיעה על גודל ברירת המחדל של התו
משתנים, שהם תמיד 1 בייט. מניחים שגם קבועי הולרית תופסים
1 בייט לכל תו.
המילה גודל משמשת כדי לקבוע אם חיתוך מתרחש בהקצאה
הצהרות, וכדי לתפוס אי-התאמה מדויקת ברשימות ארגומנטים של תת-תוכנית ו
רשימות חסימות נפוצות. האזהרות המדויקות שיונפקו יהיו תלויות בסטטוס
של דגלים אחרים. תחת שני ה -ניידות=גודל מעורב ו -גודל לא דֶגֶל,
כל ערבוב של אובייקטים מפורשים עם דיוק ברירת מחדל (ביטויי תווים לא
כלול) מוזהרת. זה חל על ביטויים אריתמטיים המכילים את שניהם
סוגי אובייקטים ולתכנת ארגומנטים ומשתנים COMMON. תחת שליטה
של -קטיעה=הורדה בדרגה ו קידום אפשרויות, ניתנת אזהרה עבור
הקצאת ביטוי למשתנה קצר יותר מאותו סוג, או עבור
קידום של ערך דיוק נמוך יותר לדיוק גבוה יותר בחשבון
ביטוי או הצהרת משימה.
מתן גודל מילה של 0, או שווה ערך, באמצעות -גודל לא אומר שאין ברירת מחדל
יונח ערך. זה שווה ערך לציון -ניידות=גודל מעורב.
השתמש בו כדי למצוא מקרים של ערבוב ברירת מחדל ודיוק מפורש, למשל לסמן
מקומות שבהם מתייחסים ל-REAL*8 כשווה ערך ל-DOUBLE PRECISION.
ראה גם: - גודל נקודתי, -הִטַלטְלוּת, -גְמִימָה.
-לעטוף=col
שולט על גלישת הודעות שגיאה. הודעות שגיאה ארוכות שיחלפו
העמודה שצוינה תחולק לשורות נפרדות בין המילים של ה
הודעה לקריאות טובה יותר. אם כבוי עם -עכשיו לעטוף, כל שגיאה נפרדת
ההודעה תודפס על שורה אחת, ותותיר אותה לתצוגה כדי לעטוף את
הודעה או לקטוע אותה. ברירת מחדל = הפעלה = 79.
מִשְׁתַנֶה LA מחדל
ftnchek כולל שני מנגנונים לשינוי ערכי ברירת המחדל של כל האפשרויות: by
הגדרת משתני סביבה או על ידי יצירת קובץ העדפות. מתי ftnchek מתחיל,
הוא מחפש בסביבתו כל משתנים ששמותיהם מורכבים על ידי הקדמת ה-
מחרוזת FTNCHEK_ על הגרסה האותיות של שם האופציה. אם משתנה כזה הוא
נמצא, הערך שלו משמש לציון ברירת המחדל עבור המתג או ההגדרה המתאימים.
במקרה של הגדרות (לדוגמה, ה -מְשׁוּתָף הגדרת הקפדה) הערך של ה
משתנה הסביבה נקרא כערך ברירת המחדל. במקרה של מתגים, ה
מתג ברירת המחדל ייחשב כ-true או כן, אלא אם כן למשתנה הסביבה יש את הערך
0 או לא.
שים לב ששם משתנה הסביבה חייב להיות בנוי עם האפשרות באורך מלא
שם, שחייב להיות באותיות רישיות. למשל, להכין ftnchek להדפיס רישום מקור על ידי
ברירת מחדל, הגדר את משתנה הסביבה FTNCHEK_LIST ל-1 או YES או כל דבר אחר מלבד 0 או
לא. השמות FTNCHEK_LIS (לא שם האופציה המלא) או ftnchek_list (אותיות קטנות)
לא להיות מוכר.
להלן כמה דוגמאות כיצד להגדיר משתני סביבה במערכות שונות. ל
בפשטות, כל הדוגמאות קובעות את ברירת המחדל -רשימה לעבור ל-YES.
1. UNIX, מעטפת בורן: $ FTNCHEK_LIST=YES
$ ייצוא FTNCHEK_LIST
2. מעטפת UNIX, C: % setenv FTNCHEK_LIST YES
3. VAX/VMS: $ הגדר FTNCHEK_LIST כן
4. MSDOS: $ SET FTNCHEK_LIST=כן
לאחר עיבוד כל משתני סביבה, ftnchek מחפש קובץ העדפות
המכיל אפשרויות והגדרות. הוא יחפש בסדר הבא, תוך שימוש רק ב-
הקובץ הראשון שנמצא: (1) .ftnchekrc בספרייה הנוכחית, (2) ftnchek.ini בנוכחי
ספרייה, (3) .ftnchekrc בספריית הבית של המשתמש, (4) ftnchek.ini בבית
מַדרִיך. אם נמצא קובץ כזה, האפשרויות המוגדרות בו משמשות כברירת מחדל ב
מקום ברירות המחדל המובנות ועקוף כל ברירות המחדל שנקבעו בסביבה.
כל אפשרות או הגדרה בקובץ ההעדפות חייבת להיות בשורה נפרדת. הם ניתנים
באותה צורה כמו בשורת הפקודה, למעט ללא המקף הראשוני. ההעדפות
הקובץ יכול להכיל שורות ריקות והערות. הערות מוצגות בכל נקודה בשורה
על ידי תו רווח (ריק או טאב) או התו '#', ומסתיימים בסוף
השורה.
אפשרויות שורת הפקודה עוקפות את ברירות המחדל המוגדרות בסביבה או בהעדפות
קובץ, באותו אופן שבו הם עוקפים את ברירות המחדל המובנות.
משתמש PROJECT קבצים
חלק זה מכיל מידע מפורט כיצד להשתמש בקבצי הפרויקט בצורה היעילה ביותר,
וכיצד להימנע מכמה מלכודות.
אפשר לחלק את הצ'קים ftnchek עושה לשתי קטגוריות, מקומית וגלובלית. מְקוֹמִי
הבדיקה מוגבלת לשגרה אחת, ותופסת דברים כמו לא אתחול
משתנים, אובדן לא מכוון של דיוק בביטויים אריתמטיים וכו'
ניתן לבצע בדיקה על כל תת תוכנית באופן עצמאי. יתר על כן, בדיקה מקומית של א
אין צורך לחזור על תוכנית משנה כאשר משנה תוכנית משנה אחרת. גלוֹבָּלִי
בדיקה תופסת דברים כמו קריאה לשגרת משנה עם סוגי הארגומנטים הלא נכונים, או
חולקים בהצהרות בלוק נפוצות. זה דורש להסתכל על כל הסט של
תוכניות משנה המקיימות אינטראקציה זו עם זו.
מטרת קבצי הפרויקט היא לאפשר את שלבי הבדיקה המקומית והבדיקה הגלובלית
להיות מופרד. בהנחה שכל תת-תוכנית נמצאת בקובץ המקור שלה, אתה יכול להפעיל
ftnchek פעם אחת על כל אחד לבצע בדיקה מקומית תוך דיכוי בדיקה גלובלית. לאחר מכן
ftnchek ניתן להפעיל פעם אחת על כל קבצי הפרויקט יחד כדי לבצע את הבדיקה הגלובלית. ה
דוגמה makefile למטה מראה כיצד להפוך משימה זו לאוטומטי. יעד ה-``.f.prj'' מעדכן א
קובץ פרוייקט עבור קובץ מסוים בכל פעם שקובץ המקור משתנה. המידע
הדרוש לבדיקה גלובלית נשמר בקובץ הפרויקט. היעד ``בדוק'' עושה את
בדיקה גלובלית משולבת. בדרך כלל ``בצע בדיקה'' יחזור על ``ftnchek -project''
צעד רק על קבצי מקור שהשתנו, ואז בצע את הבדיקה הגלובלית. ברור שזה גדול
יתרון לתוכניות גדולות, כאשר תוכניות משנה רבות משתנות לעתים רחוקות אם בכלל.
עדיף כאשר משתמשים בקבצי פרויקט למקם כל תת-תוכנית בקובץ מקור נפרד.
אם כל קובץ מקור עשוי להכיל יותר מתת-תוכנת אחת, זה מסבך את ההגדרה
של בדיקה ``מקומית'' ו``גלובלית'' כי יש בדיקה בין-מודולים שהיא
הכלולים בתוך קובץ. ftnchek מנסה לעשות את הדבר הנכון במקרה הזה, אבל יש
כמה סיבוכים (מתוארים להלן) עקב הפשרה בין הימנעות מביצוע מחדש
בודק ושימור מידע על מבנה התוכנית.
בדרך כלל, כדי לבצע את הכמות המינימלית של בדיקה חוזרת, יש ליצור קבצי פרויקט עם
מה היא -ליבררי הדגל בתוקף והגזם מופעל. במצב זה, המידע נשמר
בקובץ הפרויקט מורכב מכל ההצהרות של תת-תוכנות, כל הפניות לתוכנית המשנה
לא נפתר על ידי הצהרות באותו קובץ, ומופע אחד של כל בלוק COMMON
הַצהָרָה. זוהי כמות המידע המינימלית הדרושה לבדיקת הסכמה ביניהם
קבצים.
אם קובץ המקור מכיל יותר משגרה אחת, ישנן כמה בעיות אפשריות
יכול לנבוע מיצירת קובץ הפרויקט במצב ספריה, בגלל ההיררכיה הקוראת
בין השגרות המוגדרות בתוך הקובץ אבד. כמו כן, אם השגרות בקובץ עושות
שימוש בלוקים COMMON המשותפים עם שגרות בקבצים אחרים, לא יהיה
מספיק מידע נשמר לבדיקה נכונה של סטטוס ומצב בשימוש של בלוקים COMMON
ומשתנים COMMON לפי ה -נוֹהָג הגדרה. לכן אם אתה מתכנן להשתמש
קבצי פרוייקט מתי -נוֹהָג הבדיקה מופעלת (שזה מצב ברירת המחדל), ואם
שגרות מרובות בקובץ פרויקט אחד חולקות בלוקים COMMON עם שגרות בקבצים אחרים,
יש ליצור את קבצי הפרויקט עם ה -ליבררי הדגל כבוי. במצב זה,
ftnchek שומר, מלבד המידע המפורט לעיל, הפעלה אחת של כל תת-תוכנית על ידי
כל תת תוכנית אחרת באותו קובץ, וכל הצהרות ה-COMMON בלוק. זה אומר ש
קובץ הפרויקט יהיה גדול מהנדרש, וכאשר הוא ייקרא, ftnchek אולי
חזור על כמה בדיקות בין-מודולים שכבר עשו כאשר קובץ הפרויקט נוצר. אם
כל קובץ פרויקט מכיל רק מודול אחד, אין אובדן מידע ביצירה
קבצי הפרויקט במצב ספריה.
בגלל אובדן מידע אפשרי הכרוך ביצירת קובץ פרויקט עם
-ליבררי דגל בתוקף, בכל פעם שקובץ הפרויקט הזה ייקרא מאוחר יותר, הוא יטופל
כקובץ ספריה ללא קשר להגדרה הנוכחית של -ליבררי דֶגֶל. מנגד
ביד, קובץ פרויקט שנוצר עם מצב ספרייה כבוי ניתן לקרוא מאוחר יותר בכל אחד מהם
מצב.
הדיון שלעיל מניח שאפשרויות החיתוך של ה -פּרוֹיֶקט הגדרה הם
מופעל כאשר קובץ הפרויקט נוצר. זה המצב הרגיל. ה ללא חיתוך
אפשרויות של -פּרוֹיֶקט הגדרות מסופקות למקרה שרוצים להשתמש בקבצי הפרויקט
למטרות אחרות מלבד בדיקת התוכנית עם ftnchek. למשל, אפשר לכתוב
סקריפט Perl לנתח את קבצי הפרויקט לקבלת מידע על איך הם שונים
תוכניות משנה נקראות. אתה לא צריך להשתמש ב ללא חיתוך אפשרויות להתמודד עם הבעיות של
אובדן מידע שנדון לעיל, מכיוון שהם גורמים ליותר מידע מהנדרש
מְאוּחסָן. זה הופך את קבצי הפרויקט לגדולים יותר וגורמים ftnchek לעשות יותר עבודה מאוחר יותר מתי
זה קורא אותם כדי לבדוק את התוכנית המלאה שלך. בדרך כלל, אתה צריך להשתמש ב -ליבררי
אפשרות לשלוט בכמה מידע לאחסן לשימוש מאוחר יותר על ידי ftnchek בבדיקת שלך
תכנית.
הנה דוגמה לשימוש ב-UNIX לעשות כלי ליצירת אוטומטית חדשה
קובץ הפרויקט בכל פעם שקובץ המקור המתאים משתנה, ולבדוק את הסט של
קבצים לצורך עקביות. הוסף שורות אלה לקובץ המייקאפ שלך. הדוגמה מניחה שא
הוגדר מאקרו OBJS המפרט את כל השמות של קבצי האובייקט שיש לקשר
יחד כדי ליצור את תוכנית ההפעלה השלמה. (בתיק זה, השורות המוזחות
כל אחד צריך להתחיל בכרטיסייה, לא בריקים.) אם קובץ מקור כלשהו מכיל מספר שגרות
שחולקים בלוקים משותפים בינם לבין עצמם, אז יש להסיר את האפשרות no-com-\*
מ-NOGLOBAL, ו/או שחרר את דגל הספרייה.
# ספר make מהי סיומת קובץ פרוייקט
.SUFFIXES: .prj
# אפשרויות אלו מדכאות בדיקות גלובליות.
NOGLOBAL=-usage=no-ext-undefined,no-com-\*
# tell make כיצד ליצור קובץ .prj מקובץ .f
.f.prj:
ftnchek -project $(NOGLOBAL) -ספריית $
# הגדר מאקרו PRJS המכיל שמות קבצים של פרויקטים
PRJS= $(OBJS:.o=.prj)
# "בצע בדיקה" יבדוק את כל מה שהשתנה.
בדוק: $(PRJS)
ftnchek $(PRJS)
כאשר תוכנית משתמשת בשגרות רבות המוגדרות במספר רב של קבצי מקור שונים ב
ספריות שונות, זה יכול להיות מסורבל לציין את כל קבצי הפרויקט השונים
נדרש כדי לבדוק את התוכנית כראוי. כדי לטפל במקרים כאלה, ftnchek מאפשר פרויקט
קבצים שיושרו לקובץ גדול אחד. לאחר מכן ניתן לתת לקובץ בודד זה
ftnchek לספק את המידע לבדיקת השימוש באחת מהשגרות או בכולן
מוגדר בקבצי הפרויקט המשולבים. כאשר אתה משתמש בקובץ פרוייקט ``ספרייה'' כזה, אתה
אולי תרצה ftnchekהשגיאה של מדווחת לתעד במדויק את שם הקובץ שבו
פונקציה ספציפית מוגדרת. אם קבצי המקור השונים נמצאים במספר ספריות, א
דוח שגיאה המעניק רק את שם הקובץ עשוי להיות מעורפל, ודווקא צריך לכלול את
נתיב לקובץ. הפתרון הוא ליצור כל אחד מקבצי הפרויקט הבודדים על ידי
נותן את הנתיב המלא לקובץ המקור. אז הנתיב השלם הזה יופיע ב-
דוחות שגיאות. לדוגמה, נניח שכל קבצי המקור של תוכניות המשנה של הספרייה הם
בספריות משנה של ספרייה בשם /util/lib. אז קבצי הפרויקט הבודדים יכולים
תחילה נוצר על ידי פקודה כגון
מצא /util/lib -name '*.f' -exec ftnchek -project '{}' ';'
(ייתכן שיסופקו אפשרויות אחרות ftnchek כפי שנדון לעיל. כמו כן, שלב זה
יכול להיות מטופל במקום זאת על ידי כלל makefile מתוקן שיספק את המקור המלא
נתיב הקובץ במקום רק השם המקומי בעת הפעלתו ftnchek.) לאחר מכן, שרשרת את כולם
קבצי פרויקט אלה באופן ידני.
מצא /util/lib -name '*.prj' -exec cat '{}' ';' > ourlib.prj
לאחר מכן ניתן לבדוק קובץ מקור של תוכנית באמצעות הפקודה
ftnchek prog.f ... -lib ourlib.prj
והודעת שגיאה הקשורה לכל שגרת ספרייה תכלול את הנתיב המלא אל
קובץ המקור של השגרה.
נכון לעכשיו, אין כלי עזר לארכיון כמו ar לנהל את התוכן של משורשר
קובץ פרויקט כמו זה באיור למעלה. אם יבוצעו שינויים באחד מה
שגרות הספרייה, הדרך היחידה לעדכן את קובץ הפרויקט המשולב היא לשרשר את כולם
שוב את קבצי הפרויקט הבודדים. כלי כזה יהיה די קל לכתוב.
מישהו צריך לעשות זאת ולתרום את זה ל ftnchek מאמץ.
AN דוגמא
תוכנית Fortran הפשוטה הבאה ממחישה את ההודעות שניתנו על ידי ftnchek. ה
התוכנית נועדה לקבל מערך של ציוני מבחן ולאחר מכן לחשב את הממוצע עבור
סדרה.
C מחברים: מייק מיירס ולוצ'יה ספאגנוולו
C תאריך: 8 במאי 1989
משתנים C:
C SCORE -> מערך של ציוני מבחן
C SUM -> סכום ציוני המבחן
C COUNT -> מונה של ציונים שנקראו
CI -> מונה לולאות
REAL FUNCTION COMPAV (ציון, ספירה)
סכום שלם,מספר,J,SCORE(5)
עשה 30 I = 1,COUNT
SUM = SUM + SCORE(I)
30 המשך
COMPAV = SUM/COUNT
הסוף
תוכנית AVENUM
C
C תוכנית עיקרית
C
C מחבר: לואיס ביגבי
C תאריך: 15 במאי 1990
C
משתנים C:
C MAXNOS -> המספר המרבי של ערכי קלט
C NUMS -> מערך של מספרים
C COUNT -> מספר מדויק של ערכי קלט
C AVG -> ממוצע שהוחזר על ידי COMPAV
CI -> מונה לולאות
C
PARAMETER(MAXNOS=5)
מספר שלם I, ספירה
REAL NUMS(MAXNOS), ממוצע
COUNT = 0
עשה 80 I = 1,MAXNOS
READ (5,*,END=100) NUMS(I)
COUNT = COUNT + 1
80 המשך
100 AVG = COMPAV(NUMS, COUNT)
הסוף
המהדר לא נותן הודעות שגיאה כאשר תוכנית זו מורכבת. ובכל זאת הנה מה
קורה כאשר הוא מופעל:
ממוצע ריצה של $
70
90
85
$
מה קרה? למה התוכנית לא עשתה כלום? להלן הפלט מ
ftnchek כאשר הוא משמש לניפוי באגים בתוכנית לעיל:
$ ftnchek -list -symtab ממוצע
FTNCHEK גרסה 3.3 נובמבר 2004
קובץ average.f:
1 C מחברים: מייק מיירס ולוצ'יה ספאגנוולו
2 C תאריך: 8 במאי 1989
3
4 משתני C:
5 C SCORE -> מערך של ציוני מבחן
6 C SUM -> סכום ציוני המבחן
7 C COUNT -> מונה של ציונים שנקראו
8 CI -> מונה לולאות
9
10 פונקציות אמיתיות COMPAV (ציון, ספירה)
11 סכום שלם,ספירה,J,SCORE(5)
12
13 עשה 30 I = 1,COUNT
14 SUM = SUM + SCORE(I)
15 30 המשך
16 COMPAV = SUM/COUNT
^
אזהרה ליד קו 16 קול 20: מנה שלם expr SUM/COUNT הומר ל
ממשי
17 סיום
מודול COMPAV: func: אמיתי
משתנים:
Name Type Dims Name Type Dims Name Type Dims Name Type Dims
COMPAV real COUNT intg I intg* J intg
SCORE intg 1 SUM intg
* משתנה לא הוצהר. סוג הוגדר באופן מרומז.
אזהרה במודול COMPAV: משתנים שהוכרזו אך אף פעם לא התייחסו אליהם:
J הכריז בשורה 11
אזהרה במודול COMPAV: ניתן להשתמש במשתנים לפני ההגדרה:
SUM בשימוש בשורה 14
סכום מוגדר בשורה 14
תוויות הצהרות מוגדרות:
Label Line StmtType
<30> 15 מנהלים
18
19
20 תוכנית AVENUM
21 C
22 C תוכנית עיקרית
23 C
24 C מחבר: לואיס ביגבי
25 C תאריך: 15 במאי 1990
26 C
27 משתני C:
28 C MAXNOS -> המספר המרבי של ערכי קלט
29 C NUMS -> מערך של מספרים
30 C COUNT -> מספר מדויק של ערכי קלט
31 C AVG -> ממוצע שהוחזר על ידי COMPAV
32 CI -> מונה לולאות
33 C
34
35 PARAMETER(MAXNOS=5)
36 שלם I, ספירה
37 REAL NUMS(MAXNOS), ממוצע
38 COUNT = 0
39 DO 80 I = 1,MAXNOS
40 READ (5,*,END=100) NUMS(I)
41 COUNT = COUNT + 1
42 80 המשך
43 100 AVG = COMPAV(NUMS, COUNT)
44 סיום
מודול AVENUM: פרוג
תוכניות משנה חיצוניות להתייחסות:
COMPAV: אמיתי*
משתנים:
Name Type Dims Name Type Dims Name Type Dims Name Type Dims
ממוצע COUNT intg I intg MAXNOS intg*
NUMS אמיתי 1
* משתנה לא הוצהר. סוג הוגדר באופן מרומז.
אזהרה במודול AVENUM: משתנים מוגדרים אך מעולם לא היו בשימוש:
AVG מוגדר בקו 43
פעולות I/O:
מזהה יחידה מספר יחידה. שורת פעולת טופס גישה
5 SEQ FMTD קרא 40
תוויות הצהרות מוגדרות:
Label Line StmtType Label Line StmtType
<80> 42 exec <100> 43 exec
0 שגיאות תחביר זוהו בקובץ average.f
6 אזהרות ניתנו בקובץ ממוצע.ו
אזהרה: חוסר התאמה בין סוג הנתונים של הארגומנט של תוכנית המשנה COMPAV במיקום 1:
Dummy arg SCORE במודול COMPAV שורה 10 קובץ average.f הוא סוג intg
arg NUMS בפועל במודול AVENUM שורה 43 קובץ average.f הוא סוג אמיתי
לפי ftnchek, התוכנית מכילה משתנים שניתן להשתמש בהם לפני שהם
הוקצה ערך התחלתי, ומשתנים שאינם נחוצים. ftnchek גם מזהיר את
משתמש שמנת מספר שלם הומרה לריאל. זה עשוי לסייע למשתמש
תופס שגיאת עיגול לא מכוונת. מאז -סימטאב דגל ניתן, ftnchek הדפסים
להוציא טבלה המכילה מזהים מהמודול המקומי וסוג הנתונים המתאים להם
ומספר מידות. סוף כל סוף, ftnchek מזהיר שלא נעשה שימוש בפונקציה COMPAV
עם סוג הטיעונים המתאים.
עם ftnchekלעזרה, נוכל לנפות באגים בתוכנית. אנו יכולים לראות שהיו את הדברים הבאים
שגיאות:
1. SUM ו-COUNT היו צריכים להיות מומרים לריאל לפני ביצוע החלוקה.
2. צריך היה לאתחל את SUM ל-0 לפני הכניסה ללולאה.
3. AVG מעולם לא הודפס לאחר חישוב.
4. היה צריך להכריז על NUMS INTEGER במקום REAL.
אנו רואים גם שאני, לא J, היה צריך להיות מוכרז INTEGER בפונקציה COMPAV. גַם,
MAXNOS לא הוכרז כ-INTGER, ולא COMPAV כ-REAL, בתוכנית AVENUM. אלה לא
שגיאות, אך הן עשויות להעיד על חוסר זהירות. כפי שקרה, סוג ברירת המחדל של אלה
משתנים עולים בקנה אחד עם הסוג המיועד.
הנה התוכנית המתוקנת והפלט שלה בעת הפעלה:
C מחברים: מייק מיירס ולוצ'יה ספאגנוולו
C תאריך: 8 במאי 1989
C
משתנים C:
C SCORE -> מערך של ציוני מבחן
C SUM -> סכום ציוני המבחן
C COUNT -> מונה של ציונים שנקראו
CI -> מונה לולאות
C
REAL FUNCTION COMPAV (ציון, ספירה)
סכום שלם, ספירה, אני,SCORE(5)
C
SUM = 0
עשה 30 I = 1,COUNT
SUM = SUM + SCORE(I)
30 המשך
COMPAV = FLOAT(SUM)/FLOAT(COUNT)
הסוף
C
C
תוכנית AVENUM
C
C תוכנית עיקרית
C
C מחבר: לואיס ביגבי
C תאריך: 15 במאי 1990
C
משתנים C:
C MAXNOS -> המספר המרבי של ערכי קלט
C NUMS -> מערך של מספרים
C COUNT -> מספר מדויק של ערכי קלט
C AVG -> ממוצע שהוחזר על ידי COMPAV
CI -> מונה לולאות
C
C
שלם MAXNOS
PARAMETER(MAXNOS=5)
שלם I, NUMS(MAXNOS), COUNT
REAL AVG,COMPAV
COUNT = 0
עשה 80 I = 1,MAXNOS
READ (5,*,END=100) NUMS(I)
COUNT = COUNT + 1
80 המשך
100 AVG = COMPAV(NUMS, COUNT)
WRITE(6,*) 'AVERAGE =',AVG
הסוף
ממוצע ריצה של $
70
90
85
ממוצע = 81.66666
$
עם ftnchekעזרה, התוכנית שלנו מוצלחת!
פרשנות LA תפוקה
ההודעות שניתנו על ידי ftnchek כולל לא רק שגיאות תחביר אלא גם אזהרות ו
הודעות אינפורמטיביות על דברים שהם חוקיים של Fortran אך עשויים להצביע על שגיאות או
חוסר זהירות. ניתן לכבות את רוב ההודעות הללו באמצעות אפשרויות שורת הפקודה. איזה
אפשרות שולטת בכל הודעה תלויה באופי המצב שעליו מתריעים.
ראה את התיאורים של דגלי שורת הפקודה בסעיפים הקודמים, ושל יחידים
הודעות למטה. לכל הודעה יש קידומת מילה או ביטוי המציינים את אופי
המצב וחומרתו.
``שגיאה'' פירושה שגיאת תחביר. הסוג הפשוט ביותר של שגיאות תחביר הן טיפוגרפיות
שגיאות, למשל סוגריים לא מאוזנים או איות שגוי של מילת מפתח. הסוג הזה של
השגיאה נתפסת על ידי המנתח ומופיעה עם התיאור ``שגיאת ניתוח'' או ``תחביר
שגיאה'' (תלוי בגרסה של מחולל הנתח והאם זה GNU בִּיזוֹן or
UNIX יאק). לא ניתן לדכא סוג זה של הודעת שגיאה. שים לב שסוג זה של
שגיאה אומרת לעתים קרובות את זה ftnchek לא פירש כראוי את ההצהרה שבה השגיאה
מתרחשת, כך שפעולות הבדיקה הבאות שלו ייפגעו. אתה צריך
הסר את כל שגיאות התחביר לפני שתמשיך לפרש את ההודעות האחרות ftnchek
נותן.
``אזהרה: תחביר לא תקני'' מציין הרחבה ל-Fortran ftnchek תומך
אבל זה לא לפי תקן Fortran 77. ההרחבות ש ftnchek מקבלת
מתוארים בסעיף על הרחבות להלן. דוגמה אחת היא ה-DO ... ENDDO
בְּנִיָה. אם תוכנית משתמשת בהרחבות אלו, יינתנו אזהרות בהתאם
מפרטים תחת ה -F77 הגדרה. התנהגות ברירת המחדל היא לא לתת אזהרות.
``אזהרה'' במקרים אחרים פירושו מצב שהוא חשוד אבל יכול להיות או לא
שגיאת תכנות. לעתים קרובות תנאים אלה חוקיים לפי התקן. חלקם כן
לא חוקי אך אינם נופלים תחת הכותרת של שגיאות תחביר. שגיאות שימוש הן דוגמה אחת.
אלה מתייחסים לאפשרות שניתן להשתמש במשתנה לפני שהוקצה לו א
ערך (בדרך כלל שגיאה), או שמשתנה מוכרז אך מעולם לא נעשה בו שימוש (לא מזיק אבל
עלול להעיד על חוסר זהירות). כמות הבדיקה לאיתור שגיאות שימוש נשלטת על ידי ה
-נוֹהָג flag, המציין את כמות הבדיקה המקסימלית כברירת מחדל.
אזהרות קטיעה מכסות מצבים בהם הדיוק עלול לאבד שלא במתכוון, עבור
לדוגמה כאשר ערך דיוק כפול מוקצה למשתנה אמיתי. אזהרות אלו הן
נשלט על ידי -גְמִימָה הגדרה, המופעלת כברירת מחדל.
``שימוש לא נייד'' מזהיר על תכונה כלשהי שאולי לא תתקבל על ידי כמה מהדרים
למרות שזה לא מנוגד לתקן Fortran 77, או שעלול לגרום לתוכנית
לביצוע שונה בפלטפורמות שונות. לדוגמה, שוויון אמיתי ו
משתנים שלמים הם בדרך כלל תרגול שאינו נייד. השימוש בהרחבות ל-
שפה סטנדרטית היא, כמובן, מקור נוסף של אי-ניוד, אבל זה מטופל כמו
מקרה נפרד. כדי לבדוק תוכנית ניידות אמיתית, הן -הִטַלטְלוּת ו
-F77 יש להשתמש בדגלים. שניהם כבויים כברירת מחדל. ה -גודל מילים ההגדרה היא
מסופק כדי לבדוק רק את אותם שימושים שאינם ניידים התלויים במכונה מסוימת
גודל מילים.
``מראה אולי מטעה'' משמש להבניות משפטיות שאולי לא אומרות מה
נראה שהם מתכוונים במבט ראשון. לדוגמה, Fortran אינו רגיש לשטח ריק,
כל כך רווח זר בתוך שמות משתנים או היעדר רווח בין מילת מפתח ל-a
משתנה יכול להעביר את הרושם השגוי לקורא. ניתן לדכא הודעות אלו
על ידי כיבוי ה- -יפה דגל, המופעל כברירת מחדל.
הודעות אחרות שניתנות לאחר עיבוד כל הקבצים, ויש להם קשר
הסכם בין מודולים, אל תשתמש במילה ``אזהרה'' אלא בדרך כלל נכנס לזה
קטגוריה. דוגמאות כוללות אי-התאמות סוג בין משתנים תואמים ב- different
הצהרות בלוק COMMON, או בין ארגומנטים דמה לבין ארגומנטים בפועל של תת-תוכנית. אלה
אזהרות נשלטות על ידי -מְשׁוּתָף ו -טיעונים הגדרות בהתאמה. כברירת מחדל
שניהם מוגדרים להקפדה מרבית של בדיקה.
קבוצה נוספת של אזהרות על מצבים שלעיתים אינם מזיקים מתייחסת למקרים שבהם
מאפייני המערך של משתנה המועבר כארגומנט של תת-תוכנית שונים בין השניים
שגרות. לדוגמה, אלמנט מערך עשוי לעבור לתת-שגרה המצפה ל-a
מערך שלם. זוהי טכניקה נפוצה לעיבוד שורות או עמודות בודדות של
מערכים דו מימדיים. עם זאת, זה יכול גם להצביע על שגיאת תכנות. ה -מַעֲרָך
ההגדרה מאפשרת למשתמש להתאים את מידת ההקפדה שתשמש בבדיקת זה
סוג של הסכמה בין ארגומנטים של מערך דמה בפועל. כברירת מחדל ההקפדה היא
מַקסִימוּם.
``אופס'' מציין בעיה טכנית, כלומר באג ב- ftnchek או שזה
עברו משאבים.
הודעות השגיאה והתחביר והאזהרות כוללות את שם הקובץ יחד עם מספר השורה ו
מספר העמודה. ftnchek יש שתי אפשרויות שונות להופעת השגיאות הללו
הודעות. אם -טִירוֹן בתוקף, שזו ברירת המחדל, ההודעות הן בסגנון
מתקרב לאנגלית רגילה. (בסגנון ברירת המחדל, שם הקובץ לא מודפס בהודעות
בתוך גוף התוכנית אם -רשימה בתוקף.) הסגנון האחר של הודעות השגיאה
נבחר על ידי ה -לא נודע אוֹפְּצִיָה. בסגנון זה, המראה של ההודעות הוא
דומה לזה של UNIX מוך תכנית.
ftnchek עדיין עיוור לסוגים מסוימים של שגיאות תחביר. השניים החשובים ביותר הם
בדיקה מפורטת של הצהרות FORMAT, וכמעט כל מה שקשור לשליטה
זרימת ביצוע באמצעות הצהרות IF, DO ו-GOTO: כלומר קינון נכון של שליטה
מבנים, התאמה של משפטי פתיחה כגון IF ... THEN עם משפטי סיום
כגון ENDIF, ושימוש נכון בתוויות הצהרות (מספרים). רוב המהדרים יעשו זאת
לתפוס את השגיאות האלה. עיין בסעיף על מגבלות לדיון מפורט יותר.
If ftnchek נותן לך הודעת שגיאה תחביר כאשר המהדר לא עושה זאת, יכול להיות שזה בגלל
התוכנית שלך מכילה הרחבה ל-Fortran הסטנדרטית שמתקבלת על ידי המהדר
אבל לא על ידי ftnchek. (ראה סעיף על הרחבות.) במערכת VAX/VMS, אתה יכול להשתמש
אפשרות המהדר /STANDARD כדי לגרום למהדר לקבל רק Fortran סטנדרטי. עַל
ברוב המערכות UNIX או UNIX, ניתן להשיג זאת על ידי הגדרת הדגל -אנסי.
הרבה מההודעות שניתנו על ידי ftnchek מובנים מאליהם. אלה שצריכים קצת
הסבר נוסף מפורט להלן בסדר אלפביתי.
Common בלוק שם: נתונים סוג חוסר התאמה at עמדה n
השמיים nהמשתנה בגוש COMMON שונה בסוג הנתונים בשניים שונים
הצהרות של בלוק COMMON. כברירת מחדל (-מְשׁוּתָף הקפדה על רמה 3), ftnchek
הוא מאוד בררן לגבי בלוקים COMMON: המשתנים הרשומים בהם חייבים להתאים בדיוק
לפי סוג הנתונים וממדי המערך. כלומר, צמד ההצהרות המשפטיות ב
מודולים שונים:
COMMON /COM1/ A,B
ו
COMMON /COM1/ A(2)
יגרום ftnchek לתת אזהרות ברמת הקפדה 3. שתי הצהרות אלו
חוקיים בפורטרן מכיוון ששניהם מצהירים על שני משתנים אמיתיים. בהקפדה
רמה 1 או 2, לא תינתן אזהרה בדוגמה זו, אבל האזהרה תהיה
ניתן אם הייתה חוסר התאמה של סוג הנתונים, למשל, אם B הוכרזה INTEGER.
נשלט על ידי -מְשׁוּתָף הגדרה.
Common בלוק שֵׁם יש ל ארוך נתונים סוג הבא קצר נתונים סוג
כמה מהדרים דורשים יישור של פריטים מרובי-בתים כך שכל פריט מתחיל ב-an
כתובת שהיא כפולה של גודל הפריט. לכן אם קצר (למשל יחיד-
פריט מדויק אמיתי) ואחריו פריט ארוך (למשל דיוק כפול אמיתי), ה
ייתכן שהאחרון אינו מיושר כהלכה. נשלט על ידי -ניידות=יישור משותף
אוֹפְּצִיָה.
Common בלוק שֵׁם יש ל מעורב אופי ו לא אופי משתנים
תקן ANSI דורש שאם משתנה כלשהו בבלוק COMMON הוא מסוג
CHARACTER, אז כל שאר המשתנים באותו בלוק COMMON חייבים להיות גם מסוג
אופי. נשלט על ידי -f77=מעורב-נפוץ אוֹפְּצִיָה.
Common בלוק שם: משתנה אורך
בעד -מְשׁוּתָף הגדרה של רמה 2, הודעה זו פירושה כי בלוק COMMON מוכרז
יש מספר שונה של מילים בשתי תוכניות משנה שונות. מילה היא הכמות
של אחסון תפוס על ידי מספר שלם אחד או משתנה אמיתי. ל -מְשׁוּתָף הגדרה רמה 3,
זה אומר שלשתי ההצהרות יש מספר שונה של משתנים, כאשר an
מערך בכל גודל נחשב למשתנה אחד. זו לא בהכרח טעות,
אבל זה עשוי להצביע על כך שחסר משתנה באחת הרשימות. ציין זאת
על פי תקן Fortran 77, זוהי שגיאה עבור בלוקים COMMON בעלי שם (אבל
לא ריק COMMON) להבדיל במספר המילים בהצהרות בשונות
מודולים. ניתן עבור -מְשׁוּתָף הגדרה 2 או 3.
שְׁגִיאָה: בצורה גרועה נוצר הגיוני/יחסי מפעיל or קבוע
שְׁגִיאָה: בצורה גרועה נוצר ממשי קבוע
מנתח התחביר מצא את ההתחלה של אחת המילים המיוחדות שמתחילות ו
מסתיים עם נקודה (למשל .EQ.), או התחלה של קבוע מספרי, אבל לא
להצליח למצוא פריט שלם מסוג זה.
שְׁגִיאָה: לא יכול be מתכוונן גודל in מודול שֵׁם
לא ניתן להצהיר על משתנה תו בגודל שהוא כוכבית
סוגריים אלא אם זה ארגומנט דמה, פרמטר או שם הפונקציה
מוגדר במודול.
שְׁגִיאָה: לא יכול be מוצהר in לשמור הצהרה in מודול שֵׁם
ניתן להצהיר רק על משתנים מקומיים ובלוקים נפוצים במשפט SAVE.
שְׁגִיאָה: לא נתיב ל זֶה הצהרה
ftnchek יזהה הצהרות שמתעלמות או עוקפות מהן כי אין
דרך צפויה להצהרה. לדוגמה, משפט לא ממוספר (א
הצהרה ללא תווית הצהרה), המתרחשת מיד לאחר הצהרה GOTO,
לא ניתן להוציא להורג.
שְׁגִיאָה: לנתח שגיאה
המשמעות היא שהמנתח, המנתח את תוכנית Fortran לביטויים,
הצהרות וכו' לא הצליחו למצוא פרשנות תקפה לחלק מסוים
של הצהרה בתוכנית. אם המהדר שלך לא מדווח על שגיאת תחביר ב
באותו מקום, ההסברים הנפוצים ביותר הם: (1) שימוש בהרחבה ל-ANSI
Fortran סטנדרטי שאינו מוכר על ידי ftnchek, או (2) ההצהרה מחייבת
יותר מבט קדימה מאשר ftnchek שימושים (ראה סעיף בנושא באגים).
הערה: הודעה זו פירושה שהמשפט המושפע אינו מתפרש.
לכן, ייתכן ש ftnchekהעיבוד שלאחר מכן יהיה בטעות, אם
זה תלוי בכל נושא המושפע מהצהרה זו (סוג הצהרות וכו').
שְׁגִיאָה: תחביר שגיאה
זה זהה ל''שגיאה: שגיאת ניתוח'' (ראה למעלה). זה נוצר אם שלך
גרסה של ftnchek נבנה באמצעות UNIX יאק מחולל מנתח ולא GNU
בִּיזוֹן.
מזהים אשר יש לו לֹא ייחודי in ראשון שש טנקים
מזהיר ששני מזהים שאורכם יותר מ-6 תווים אינם שונים ב-
6 התווים הראשונים. זה נועד לניידות: ייתכן שהם לא ייחשבו מובחנים
על ידי כמה מהדרים. נשלט על ידי -שישה צ'אר אוֹפְּצִיָה.
לא נייד נוֹהָג: טענה דיוק אולי לֹא be לתקן ל מהותי פונקציה
הדיוק של ארגומנט המועבר לפונקציה מהותית עשוי להיות שגוי ב
כמה מחשבים. מופק כאשר משתנה מספרי מוצהר בדיוק מפורש
(למשל REAL*8 X) מועבר לפונקציה מהותית ספציפית (למשל DSQRT(X)).
נשלט על ידי -ניידות=גודל מעורב ו -גודל מילים.
לא נייד נוֹהָג: אופי קבוע/משתנה אורך עולה 255
חלק מהמהדרים אינם תומכים במחרוזות תווים באורך של יותר מ-255 תווים.
נשלט על ידי -ניידות=מחרוזת ארוכה.
לא נייד נוֹהָג: שלח מכיל כרטיסיות
ftnchek מרחיב את הטאבים כך שיהיו שוות ערך לרווחים עד לעמודה הבאה שהיא א
כפולה של 8. כמה מהדרים מתייחסים לטאבים אחרת, וגם זה אפשרי
קבצים שנשלחו בדואר אלקטרוני יומרו את הכרטיסיות לחסר בדרך כלשהי.
לכן ייתכן שקבצים המכילים כרטיסיות לא יורכבו כראוי לאחר ביצועם
הועבר. ftnchek לא נותן הודעה זו אם כרטיסיות מופיעות רק בתוך הערות
או קבועי תווים. נשלט על ידי -ניידות=טאב.
לא נייד נוֹהָג: שאינו מספר שלם DO לולאה גבולות
אזהרה זו ניתנת רק כאשר אינדקס ה-DO והגבולות אינם שלמים. שימוש ב
כמויות שאינן שלמות בהצהרת DO עלולות לגרום לשגיאות בלתי צפויות, או שונות
תוצאות במכונות שונות, עקב השפעות עיגול. נשלט על ידי
-ניידות=ממש-לעשות.
אפשר it is an מערך אשר היה לֹא מוצהר
הודעה זו מצורפת לאזהרות הקשורות להפעלת פונקציה או לא
אי התאמה של סוג הארגומנט, שעבורה קיימת האפשרות שמה שנראה כ- a
הפונקציה נועדה למעשה להיות מערך. אם המתכנת שכח לממד
מערך, הפניות למערך יתפרשו כקריאת פונקציות.
הודעה זו תידחק אם השם המדובר יופיע ב-EXTERNAL או
הצהרה פנימית. נשלט על ידי ה -טִירוֹן אוֹפְּצִיָה.
אפשר מַטעֶה מראה חיצוני: תווים עבר 72 עמודות
התוכנית מעובדת עם רוחב שדה ההצהרה בערך הסטנדרטי שלה
של 72, וכמה תווים לא ריקים נמצאו אחרי עמודה 72. במקרה זה,
ftnchek אינו מעבד את התווים מעבר לעמודה 72, ומודיע למשתמש
שאולי לאמירה אין את המשמעות שנראית לה. אלה
ייתכן שתווים מתוכננים על ידי המתכנת להיות משמעותיים, אבל הם יהיו
המהדר מתעלם ממנו. נשלט על ידי -די=קו ארוך.
אפשר מַטעֶה מראה חיצוני: Common בלוק מוצהר in יותר מֵאֲשֶׁר אחד הצהרה
הצהרות מרובות כאלה הן חוקיות ויש להן השפעה זהה להמשך של
ההצהרה המקורית של הבלוק. אזהרה זו ניתנת רק אם השניים
הצהרות מופרדות על ידי הצהרה אחת או יותר. נשלט על ידי
-יפה=מרובה-נפוץ.
אפשר מַטעֶה מראה חיצוני: הֶמְשֵׁך כדלקמן הערה or ריק קו
ftnchek מוציאה הודעת אזהרה זו כדי להתריע בפני המשתמש כי המשך של א
ההצהרה משובצת בהערות, מה שמקל על התעלמותה. נשלט על ידי
-יפה=המשך.
אפשר מַטעֶה מראה חיצוני: חִיצוֹנִי סוגריים
מזהיר לגבי סוגריים המקיפים משתנה בפני עצמו בביטוי. כש
משתנה בסוגריים מועבר כארגומנט לתוכנית משנה, הוא מטופל כאל
ביטוי, לא כמשתנה שאת ערכו ניתן לשנות על ידי השגרה הנקראת.
נשלט על ידי -יפה=סוגריים.
תוכנית משנה שם: טענה נתונים סוג חוסר התאמה at עמדה n
של תת-התוכנית nארגומנט בפועל (ב-CALL או בשימוש בפונקציה)
שונה בסוג הנתונים או הדיוק מה- nארגומנט הדמה ה-th (ב-SUBROUTINE או
הצהרת FUNCTION). לדוגמה, אם המשתמש מגדיר תת-תוכנית על ידי
SUBROUTINE SUBA(X)
X אמיתי
ובמקום אחר קורא SUBA על ידי
CALL סובה(2)
ftnchek יזהה את השגיאה. הסיבה כאן היא שהמספר 2 הוא מספר שלם,
לא אמיתי. המשתמש היה צריך לכתוב
התקשר לSUBA(2.0)
כאשר בודקים ארגומנט שהוא תת-תוכנית, ftnchek חייב להיות מסוגל לקבוע
בין אם זו פונקציה או תת שגרה. הכללים בהם משתמשים ftnchek לעשות זאת הם
כדלקמן: אם תת-התוכנית, מלבד שהועברה כטיעון ממשי, היא גם כן
מופעל ישירות במקום אחר באותו מודול, ואז הסוג שלו נקבע לפי זה
נוֹהָג. אם לא, אז אם שם התת-תוכנית אינו מופיע במפורש
הצהרת סוג, ההנחה היא שהיא תת שגרה; אם זה מוקלד במפורש זה כן
נלקח כפונקציה. לכן, תתי-שגרות עברו כפי שצריך רק טיעונים ממשיים
להיות מוכרז על ידי משפט EXTERNAL במודול הקורא, בעוד שפונקציות חייבות
יש להקליד גם במפורש כדי להימנע מיצירת הודעת שגיאה זו.
נשלט על ידי -טיעונים הגדרה.
תוכנית משנה שם: טענה מערך חוסר התאמה at עמדה n
דומה למצב הקודם, אבל ארגומנט הדמה של המשנה שונה מ
הארגומנט בפועל המתאים במספר הממדים שלו או במספר
אלמנטים. נשלט על ידי -מַעֲרָך יחד עם -טיעונים הגדרות.
תוכנית משנה שם: טענה חוסר התאמה at עמדה n
ארגומנט דמה של תו גדול מהארגומנט המתאים בפועל, או א
טיעון הדמה של Hollerith גדול יותר מהטיעון המתאים בפועל.
נשלט על ידי -טיעונים הגדרה.
תוכנית משנה שם: טענה שימוש חוסר התאמה
ftnchek מזהה התנגשות אפשרית בין האופן שבו תת-תוכנית משתמשת בארגומנט
והאופן שבו הטיעון מסופק לתוכנית המשנה. הסכסוך יכול
להיות אחד משני סוגים, כפי שמתואר להלן.
דמה גדול מ is שונה, ממשי גדול מ is const or ביטוי
ארגומנט דמה הוא ארגומנט כפי שנקרא במשפט SUBROUTINE או FUNCTION ו
בשימוש בתוך תוכנית המשנה. טיעון ממשי הוא טיעון כפי שהועבר לא
תת שגרה או תפקוד על ידי המתקשר. ftnchek הוא אומר שטענת דמה היא
שונה על ידי תת-התוכנית, מה שמרמז שהערך שלה השתנה בקריאה
מודול. הארגומנט הממשי המתאים לא צריך להיות קבוע או ביטוי,
אלא אלמנט משתנה או מערך שניתן להקצות לו באופן לגיטימי.
נשלט על ידי ה -usage=arg-const-modified אוֹפְּצִיָה.
דמה גדול מ מְשׁוּמָשׁ לפני סט, ממשי גדול מ לֹא סט
כאן ניתן להשתמש בארגומנט דמה בתת-תוכנית לפני הקצאת ערך
אליו על ידי תת התוכנית. לארגומנט הממשי המתאים צריך להיות ערך
שהוקצה לו על ידי המתקשר לפני הפעלת תוכנית המשנה. נשלט על ידי ה
-usage=var-uninitialized אוֹפְּצִיָה.
אזהרה זו אינה מושפעת מה- -טיעונים הגדרה.
תוכנית משנה שֵׁם הופעל באופן לא עקבי
כאן חוסר ההתאמה הוא בין סוג הנתונים של תת-התוכנית עצמה כפי שהיא בשימוש וכמו
מוּגדָר. למשל, אם המשתמש מצהיר
מספר פונקציות שלם (א)
ומפעיל COUNT במודול אחר כ
N = COUNT(A)
מבלי להצהיר על סוג הנתונים שלו, הוא יקבע כברירת מחדל לסוג אמיתי, בהתבסס על הראשון
אות שמו. מודול השיחות היה צריך לכלול את ההצהרה
מספר שלם
ניתן עבור -טיעונים הגדרה 2 או 3.
תוכנית משנה שם: משתנה אורך טענה רשימות:
נמצאה חוסר עקביות בין מספר ארגומנטי הדמה (פרמטרים)
לתת-תוכנית יש ומספר הטיעונים בפועל שניתנו לה בהזמנה.
ftnchek עוקב אחר כל הפניות של תוכניות משנה (הצהרות CALL ו
ביטויים באמצעות פונקציות) ומשווה אותם עם ההגדרות של ה
תוכניות משנה במקום אחר בקוד המקור. מהדר Fortran בדרך כלל לא
לתפוס שגיאה מסוג זה. ניתן עבור -טיעונים הגדרה 1 או 3.
מִשְׁתַנֶה לֹא הכריז. סוּג יש ל היה במשתמע מוגדר
בעת הדפסת טבלת הסמלים עבור מודול, ftnchek ידגל עם כוכבית הכל
מזהים שאינם מוקלדים במפורש ויציגו את סוג הנתונים שהיה
מוקצה באמצעות הקלדה מרומזת. זה מספק תמיכה למשתמשים המעוניינים בכך
להצהיר על כל המשתנים כנדרש בפסקל או בשפות אחרות. זֶה
ההודעה מופיעה רק כאשר -סימטאב האפשרות בתוקף. לחלופין, השתמש ב-
-לְהַכרִיז סמן אם ברצונך לקבל רשימה של כל המשתנים הלא מוכרזים.
משתנים מוצהר אבל לעולם לא הפניה
מזהה כל מזהה שהוכרז בתוכנית שלך אך מעולם לא נעשה בהם שימוש,
או כדי להקצות ערך או כדי לקבל גישה לערך שלהם. משתנים ב-COMMON
אינם נכללים. נשלט על ידי ה -usage=var-unused אוֹפְּצִיָה.
משתנים סט אבל לעולם לא מְשׁוּמָשׁ
ftnchek יודיע למשתמש כאשר למשתנה הוקצה ערך, אך ה-
המשתנה אינו בשימוש אחר בתוכנית. בדרך כלל זה נובע מ- an
מֶחדָל. נשלט על ידי ה -usage=var-set-unused אוֹפְּצִיָה.
משתנים מְשׁוּמָשׁ לפני סט
הודעה זו מציינת שמזהה משמש לחישוב ערך לפניו
אִתחוּל. שימוש כזה עלול להוביל לחישוב ערך שגוי, שכן
הערך ההתחלתי שלו אינו נשלט. נשלט על ידי ה -usage=var-uninitialized
אוֹפְּצִיָה.
משתנים אולי be מְשׁוּמָשׁ לפני סט
דומה לשימוש לפני ההגדרה חוץ מזה ftnchek אינו מסוגל לקבוע את מעמדו
בוודאות. ftnchek מניח שניתן להשתמש במשתנה לפני שנקבע אם הראשון
השימוש במשתנה מתרחש לפני טקסט התוכנית להקצאתו.
נשלט על ידי ה -usage=var-uninitialized אוֹפְּצִיָה.
אַזהָרָה: DO מדד is לֹא מספר שלם
אזהרה זו ניתנת רק כאשר גבולות ה-DO הם מספר שלם, אך אינדקס ה-DO לא.
זה עשוי להצביע על כישלון בהכרזה על האינדקס כמספר שלם. נשלט על ידי
-קטיעה=ממש-לעשות אוֹפְּצִיָה.
אַזהָרָה: מספר שלם מָנָה ביטוי ... הומר ל ממשי
המנה של שני מספרים שלמים מביאה לתוצאה מסוג מספר שלם, שבה ה-
חלק חלקי נשמט. אם כזה ביטוי מספר שלם הכולל חלוקה הוא
מאוחר יותר הומר ל-datatype אמיתי, ייתכן שהייתה חלוקת טיפוס אמיתית
התכוון. נשלט על ידי -קטיעה=int-div-real אוֹפְּצִיָה.
אַזהָרָה: מספר שלם מָנָה ביטוי ... מְשׁוּמָשׁ in מַעֲרִיך
המנה של שני מספרים שלמים מביאה לתוצאה מסוג מספר שלם, שבה ה-
חלק חלקי נשמט. אם ביטוי מספר שלם כזה משמש כמעריך,
סביר מאוד שנועדה חלוקה מסוג אמיתי. נשלט על ידי
-קטיעה=int-div-exponent אוֹפְּצִיָה.
אַזהָרָה: שֵׁם לֹא סט מתי לַחֲזוֹר נתקל ב
הדרך שבה מתפקדים ב-Fortran מחזירה ערך היא על ידי הקצאת הערך ל-
שם הפונקציה. הודעה זו מציינת שהפונקציה לא הוקצתה א
ערך לפני הנקודה שבה נמצאה משפט RETURN. לכן, זה
אפשרי שהפונקציה יכולה להחזיר ערך לא מוגדר.
אַזהָרָה: לא סטנדרטית תחביר: מתכוונן גודל לא יכול be מחובר כאן
תקן Fortran 77 (סעיף 6.2.2) אוסר על שרשרת משתני תווים
שגודלו הוא כוכבית בסוגריים, למעט בהצהרת משימה.
נשלט על ידי -f77=mixed-expr.
אַזהָרָה: לא סטנדרטית תחביר : משמעותי תווים עבר 72 עמודות
אזהרה זו ניתנת תחת -f77=קו ארוך הגדרה אם ה עמודים להגדרה יש
שימש להגדלת רוחב שדה ההצהרה, ולהצהרה יש משמעות
טקסט תוכנית מעבר לעמודה 72. Standard Fortran מתעלם מכל הטקסט בעמודות אלו,
אבל כמה מהדרים לא. לפיכך התוכנית עשויה להיות מטופלת אחרת על ידי
מהדרים שונים.
אַזהָרָה: לא סטנדרטית תחביר : הצהרה הַחוּצָה of סדר.
ftnchek יזהה הצהרות שהן מחוץ לרצף שצוין עבור ANSI
תקן Fortran 77. טבלה 1 ממחישה את רצף ההצהרות המותר ב-
שפת פורטרן. הצהרות שאינן תקינות מתפרשות בכל זאת על ידי
ftnchek, כדי למנוע "מפלים" של הודעות שגיאה. מונה הרצף הוא גם
הוחזר כדי למנוע חזרה על הודעת השגיאה עבור בלוק של דומה
הצהרות. נשלט על ידי ה -f77=הצהרה-סדר אוֹפְּצִיָה.
-------------------------------------------------- ------
| | משתמע
| פרמטר |----------------------
| | מפרט אחר
פורמט |---------------|------------------------
ו | | הצהרת-פונקציה
כניסה | נתונים |------------------------
| | בר הפעלה
-------------------------------------------------- ------
לוח 1
אַזהָרָה: אפשרי חלוק by אפס
הודעה זו מודפסת בכל מקום שבו מתבצעת חלוקה (למעט חלוקה לפי א
קָבוּעַ). השתמש בו כדי לעזור באיתור חלוקת זמן ריצה לפי בעיית אפס. מְבוּקָר
by -חֲלוּקָה אוֹפְּצִיָה.
אַזהָרָה: ממשי קטום ל intg
ftnchek זיהה הצהרת משימה שיש לה ביטוי אמיתי על
ימין, אבל משתנה של מספר משמאל. החלק השברי של הערך האמיתי
יאבד. אם תמיר במפורש את הביטוי האמיתי למספר שלם באמצעות ה
פונקציה פנימית של INT או NINT, לא תודפס אזהרה. הודעה דומה היא
מודפס אם ביטוי דיוק כפול מוקצה לדיוק בודד
משתנה וכו' נשלט על ידי -קטיעה=הורדה בדרגה אוֹפְּצִיָה.
אַזהָרָה: מנוי is לֹא מספר שלם
מכיוון שכתוביות של מערך הן בדרך כלל כמויות שלמות, השימוש במספר שאינו שלם
הביטוי כאן עשוי לאותת על שגיאה. נשלט על ידי -קטיעה=אמת-מנויה
אוֹפְּצִיָה.
אַזהָרָה: לא ידוע מהותי פונקציה
הודעה זו מזהירה את המשתמש ששם המוצהר במשפט INTRINSIC הוא
לא ידוע ל ftnchek. כנראה שזו פונקציה פנימית לא סטנדרטית, וכך
התוכנית לא תהיה ניידת. הפונקציה תטופל על ידי ftnchek בתור משתמש-
פונקציה מוגדרת. אזהרה זו לא נדחית על ידי שום אפשרות, מכיוון שהיא משפיעה
ftnchekניתוח של התוכנית. עם זאת, אם הפונקציה הפנימית נמצאת באחד מ
הקבוצות הנתמכות של מרכיבים לא סטנדרטיים, אתה יכול להשתמש ב- -פְּנִימִי הגדרת ל
לגרום ftnchek לזהות אותו.
מגבלות ו הרחבות
ftnchek מקבל תוכניות Fortran-77 בתקן ANSI עם כמה מגבלות קטנות ורבות
הרחבות נפוצות.
מגבלות:
ארגומנטים הדמה בפונקציות ההצהרה מטופלים כמו משתנים רגילים של
התכנית. כלומר, ההיקף שלהם הוא כל המשנה, לא רק ההצהרה
הגדרת פונקציה.
הבדיקה של הצהרות FORMAT רופפת, סובלת מפרידים חסרים (פסיק,
וכו') בין מתארי פורמט במקומות שבהם התקן מחייב אותם, ו
מאפשר .d שדות על מתארים שאסור להם. זה כן מזהיר מתחת
-f77=format-edit-descr לגבי סוגי מתאר לא סטנדרטיים (כמו O), ונתמכים
הרחבות.
יש כמה הרחבות תחביריות ואלמנטים של Fortran 90 ftnchek מקבלת
אבל עושה מעט מאוד בדיקה. לדוגמה, שימוש במצביעים (בין אם ה
תחביר Cray לא סטנדרטי או תחביר Fortran 90) אינו מסומן מלבד עבור סט
וסטטוס משומש. יש לקוות שיום אחד יהיה בדיקה יסודית יותר
מיושם, אך לעת עתה המשתמש צריך להתייחס לקבלה של תחבירי אלה
תכונות פשוט כנוחות כדי לאפשר בדיקה של היבטים אחרים של קוד זה
מכיל אותם. עיין בסעיף הרחבות לפרטים לגבי התכונות
התקבל אך לא נבדק במלואו.
אם לתוכנית משנה שסופקה על ידי המשתמש יש שם זהה לאחת מהתוכנות הבלתי סטנדרטיות
פונקציות המוכרות על ידי ftnchek, יש להצהיר עליו בהצהרה EXTERNAL ב
כל שגרה שמפעילה אותו. אחרת זה יהיה כפוף לבדיקה בדרך כלל
נתון לפונקציה הפנימית. מכיוון שהמרכיבים הלא סטנדרטיים אינם
תקן, הצהרה חיצונית זו אינה נדרשת על ידי תקן Fortran 77.
משתמש ב -אינטרינסיק=אין הגדרה, הכרה ברוב המרכיבים הלא סטנדרטיים
(למעט אלה הדרושים לתמיכה בסוג הנתונים המורכבים הכפולים) ניתן להפוך
כבוי. עיין ברשימות של פונקציות פנימיות לא סטנדרטיות נתמכות תחת
דיון ב -פְּנִימִי ההגדרה למעלה.
רחבות:
כל ההרחבות הללו (למעט תווים קטנים) ייצרו אזהרות אם
הרלוונטי -F77 האפשרות מוגדרת. חלק מההרחבות המפורטות להלן הן חלק מהן
תקן Fortran-90. אלה מסומנים בסימון (F90).
כרטיסיות מותרות, ומתורגמות לחסר שוות המתאימים לכרטיסייה
מפסיק כל 8 עמודות. התקן אינו מזהה כרטיסיות. שימו לב שחלק
מהדרים מאפשרים כרטיסיות, אבל מתייחסים אליהם אחרת. הטיפול שהוגדר עבור DEC
ניתן להשיג FORTRAN באמצעות -source=dec-tab הגדרה.
מחרוזות עשויות להיות מופרדות באמצעות מרכאות או אפוסתרופים. רצף של שניים
תווי מפריד מתפרשים כתו מפריד מוטבע יחיד.
(F90)
מחרוזות עשויות להכיל רצפי בריחה לאחור בסגנון UNIX. הם יהיו
מתפרש ככזה אם ה -source=unix-backslash ניתנת הגדרה. אחרת ה
תו נטוי אחורי יטופל כתו הדפסה רגיל.
קוד המקור יכול להיות בפורמט חופשי של Fortran 90 או בפורמט קבוע מסורתי.
(F90)
נקודה-פסיק מותר כמפריד הצהרות. (F90)
תווים קטנים מותרים, והם מומרים באופן פנימי לאותיות רישיות
למעט במחרוזות תווים. התקן מציין אותיות רישיות בלבד, למעט ב
הערות ומחרוזות. (F90)
קבועים של Hollerith מותרים, בהתאם לתקן Fortran 77,
נספח ג. אין להשתמש בהם בביטויים, או לבלבל אותם עם datatype
אופי.
האות 'D' (אותיות גדולות או קטנות) בעמודה 1 מטופלת כהתחלה של א
תגובה. אין אפשרות להתייחס לשורות כאלה כאל הצהרות במקום הערות.
הצהרות עשויות להיות יותר מ-72 עמודות בתנאי שההגדרה עמודים היה
משמש להגדלת הגבול. על פי התקן, כל הטקסט מעמודות 73
עד 80 מתעלמים, ואף שורה לא יכולה להיות ארוכה מ-80 עמודות.
שמות משתנים עשויים להיות ארוכים משישה תווים. התקן מציין שישה כ
המקסימום. ftnchek מאפשר שמות באורך של עד 31 תווים (F90).
שמות משתנים עשויים להכיל קווים תחתונים וסימני דולרים (או אחרים שאינם אלפביתיים
תווים כפי שצוין על ידי -מזהה-תווים אוֹפְּצִיָה). הדמויות האלה הן
התייחסו זהה לאותיות אלפביתיות. סוג ברירת המחדל עבור משתנים מתחילים
עם הדמויות האלה הוא אמיתי. במשפטים מסוג IMPLICIT המציינים טווח של
תווים, סימן הדולר אחרי Z ואחריו קו תחתון. (כל אחר
תווים המוגדרים על ידי המשתמש מתייחסים זהה לסימן הדולר.) Fortran 90
מתיר קווים תחתונים בשמות משתנים.
גרסת UNIX סובלת את נוכחותן של הנחיות קדם-מעבד, כלומר קווים
מתחיל בסימן הלירה (#). מתייחסים אליהם כאל הערות, למעט #שורה
הנחיות, שמתפרשות, ומשמשות לקביעת מספר השורה והמקור
שם קובץ עבור אזהרות והודעות שגיאה. שים לב שהנחיות #include אינן
מעובד על ידי ftnchek. תוכניות המשתמשות בהן לכלול קבצי מקור צריכות להיות
עבר דרך הפרה-מעבד לפני שהוקלט אליו ftnchek. כפי שצוין להלן,
ftnchek האם מעבד הצהרות INCLUDE, שיש להן תחביר שונה. א
תוכנית אופציונלית, ftnpp(1L) (זמין בנפרד) מספק עיבוד מקדים זה
מטפל כראוי בקבצי INCLUDE.
מבנה הבקרה Fortran 90 DO ... ENDDO מותר. המחזור והיציאה
הצהרות מתקבלות. לכל אלה עשוי להיות שם אופציונלי לעשות-קונסטרוקציה, אבל
שמות המבנה אינם מסומנים לצורך עקביות. (F90)
מבנה Fortran 90 SELECT CASE מתקבל. (F90)
שמות קונסטרוקטים מתקבלים גם ב-IF, THEN, ELSE, ENDIF ו-SELECT CASE
הצהרות. (F90)
ההצהרות ACCEPT ו-TYPE (עבור מסוף I/O) מותרות, עם אותו הדבר
תחביר כמו PRINT.
התחביר שנקרא ``Cray pointer'' נסבל. זה לא אותו דבר כמו ה
הצהרת Fortran 90 POINTER. אין בדיקה אמיתית של ההצהרה האחרת
מאשר תחביר בסיסי. הצורה של הצהרה זו היא
מצביע (מצביע, pointee) [,(מצביע, pointee)]
למשתני המצביע מוקצה סוג נתונים של INTEGER *4. בדיקת שימוש של
משתני הפואנטה מדוכאים, מכיוון שבפועל נגישות אליהם בעקיפין
דרך המצביעים.
מתקבלים התחבירים הבאים הקשורים למצביע Fortran 90: ALLOCATABLE,
הצהרות POINTER, ו-TARGET ואותן תכונות בהצהרות סוג;
ALLOCATE, DEALLOCATE ו- LLIFY הצהרות ניתנות להפעלה; הקצאת מצביע באמצעות
=> אופרטור; והפונקציות הפנימיות ALLOCATED ו-ASSOCIATED. קצת סמנטי
בדיקת משתני מצביע ופעולות נעשית מעבר לסט הבסיסי ולשימוש
סטָטוּס. למשל, אין בדיקה של שגיאות כמו מצביעים משתלשלים,
או שימוש במערכים לא מוקצים.
להצהרות עשויות להיות כל מספר קווי המשך. ה-Fortran 77 ו-Fortran
90 תקנים מאפשרים מקסימום 19 בצורת מקור קבוע. תקן Fortran 90
מאפשר מקסימום 39 בצורת מקור חופשית.
אופרטורים יחסיים (השוואה) המורכבים מסימני פיסוק, כלומר: < <= == /= > >=
מורשים. (F90)
הערות מוטבעות, המתחילות בסימן קריאה, מותרות. (F90)
NAMELIST I/O נתמך. התחביר זהה לזה של Fortran 90.
הצהרות FORMAT יכולות להכיל סימן דולר כדי לציין דיכוי של גררה-
לַחֲזוֹר. ניתן להשתמש בביטוי מספר שלם המוקף בסוגריים זווית בכל מקום ב-a
משפט FORMAT שבו תקן Fortran 77 מאפשר קבוע מספר שלם (למעט
עבור אורך קבוע Hollerith), כדי לספק ערך זמן ריצה עבור חזרה
מפרט או רוחב שדה.
מילות מפתח לא סטנדרטיות מותרות בהצהרות קלט/פלט, המקבילות לאלו ב-VMS
פורטרן.
ההצהרה IMPLICIT NONE נתמכת. המשמעות של אמירה זו היא כך
כל המשתנים חייבים להצהיר במפורש על סוגי הנתונים שלהם. במקום לסמן את
מופעים של משתנים כאלה עם הודעות שגיאה תחביר, ftnchek מחכה עד ה
סוף המודול, ולאחר מכן מדפיס רשימה של כל המשתנים הלא מוכרזים, כפי שהוא
עושה עבור -לְהַכרִיז אוֹפְּצִיָה. (F90)
לסוגי הנתונים INTEGER, REAL, COMPLEX ו-LOGICAL מותר להיות אופציונלי
מפרט דיוק בהצהרות סוג. לדוגמה, REAL*8 פירושו 8-בתים
סוג נתונים של נקודה צפה. סוג הנתונים REAL*8 אינו נחשב בהכרח
שווה ערך ל-DOUBLE PRECISION, בהתאם ל -גודל מילים הגדרה. הפורטרן 77
התקן מאפשר מפרט אורך רק עבור נתוני CHARACTER.
ftnchek תומך במפרט סוג DOUBLE COMPLEX עבור כמות מורכבת אשר
חלקים אמיתיים ודמיוניים הם דיוק כפול. אריתמטיקה מעורבת הכוללת
קומפלקס בעל דיוק יחיד עם נתונים אמיתיים ברמת דיוק כפולה, אסור לפי ה
סטנדרטי, מניב תוצאה מורכבת כפולה.
מתקבלים הצהרות משולבות של סוגים ומאתחלים דמויי הצהרת נתונים.
לאלה יש צורה של הצהרת Fortran 77 סטנדרטית, ואחריה נטוי-
רשימה מופרדת של קבועים כמו זה המשמש במשפט DATA. דוגמה ל
תחביר הוא
מספר שלם N / 100 /
הצורה הממזרית הזו של הצהרת אתחול לא אומצה ב-Fortran 90. כזו
יש לכתוב הצהרות באמצעות הטופס הסטנדרטי המתואר להלן, כלומר
התקבל על ידי ftnchek.
קיימת תמיכה מוגבלת בהצהרות מסוג Fortran 90 מבוססות תכונות. זֶה
סגנון ההצהרה נבדל על ידי שימוש בנקודתיים כפולה (::) בין ה
רשימת התכונות ורשימת המשתנים המוצהרים. התכונות הנתמכות עשויות
להתאים למתכנתים מתחילים, אבל עדיין לא מספיקים למקצוענים-
תוכניות Fortran 90 איכותיות. אני מקווה להוסיף תמיכה לתכונות נוספות בעתיד
משחרר. אני מזמין מתנדבים לסייע במשימה זו. ראה את קובץ המשימות ב-
הפצת קוד מקור לפרטים. בנוסף, התכונות המקובלות כעת
כל סוגי הנתונים הרגילים הם DIMENSION, EXTERNAL, INTRINSIC, PARAMETER ו-SAVE.
צורת ההצהרה החדשה מאפשרת גם הקצאת ערכים למשתנים
מוּצהָר. נכון לעכשיו, (LEN=ערך) צורה של ציון אורכי תווים היא גם
מְקוּבָּל. מפרטים אדיבים, באמצעות (KIND=ערך) מנותחים אבל לא
מעובד: כל הסוגים מטופלים כסוג ברירת מחדל. כמו כן, יש מעט בדיקה
של הצהרות אלו מעבר לתחביר בסיסי.
פונקציות פנימיות לא סטנדרטיות רבות מסופקות. ראה את
דיון על -פְּנִימִי עבור רשימה של פונקציות וכיצד לשלוט באילו
מוּכָּר.
בדיקת טיעונים אינה צמודה לאותם מרכיבים לא סטנדרטיים שלוקחים מערכים או
סוגי טיעונים מעורבים.
ftnchek מתיר את הצהרת INCLUDE, הגורמת להכללה של הטקסט של ה-
קובץ נתון. התחביר הוא
כלול 'שם הקובץ'
זה תואם ל-Fortran 90. אם -source=vms-include ניתנת אפשרות,
ftnchek עוקב אחר מוסכמות VMS ביחס לאמירה זו: היא מניחה א
ברירת המחדל של .ל אם לא ניתנת סיומת שם קובץ, ומאפשרת את
qualifier /[NO]LIST בעקבות שם הקובץ, כדי לשלוט ברישום של הכלולים
קוֹבֶץ. אין תמיכה לכלול מודולי טקסט VMS.
בפלט אבחון המתייחס לפריטים הכלולים בקבצי include, המיקום של
השגיאה מצוינת הן על ידי המיקום שלה בקובץ include והן על ידי המיקום ב
קובץ האב שבו נכלל הקובץ.
ftnchek מקבל הצהרות PARAMETER שחסרות סוגריים. אלה יוזהרו
על אם ה -f77=param-noparen ניתן דגל.
ftnchek מקבל הגדרות PARAMETER הכוללות פונקציות פנימיות ו
אקספונציה על ידי מעריך שאינו שלם. שני המקרים הללו אסורים על ידי
ה-Fortran 77 Standard, ויוזהר לגבי אם -f77=param-intrinsic דגל
נתון. אם ערך פונקציה פנימית הוא קבוע מספר שלם בזמן הידור,
ftnchek יעריך את זה. זה מאפשר לבדוק טוב יותר אם נעשה שימוש בפרמטר
הצהרת גדלי מערכים. Fortran 90 מאפשר פונקציות פנימיות ב-PARAMETER
הגדרות.
הפונקציות הפנימיות המוערכות הן:
ABS IABS DIM IDIM MAX
MAX0 MIN MIN0 סימן MOD
ISIGN LEN ICHAR INDEX
הפונקציות של ארגומנטים שלמים מוערכים רק אם הארגומנטים הם מספר שלם
ביטויים קבועים. (אלה עשויים לכלול קבועים שלמים, פרמטרים ו
פונקציות פנימיות מוערכות.) הפונקציה LEN מוערכת אם הארגומנט שלה הוא
ביטוי הכולל רק קבועי אופי ומשתנים שאורכם אינו
מתכוונן. הפונקציות ICHAR ו- INDEX מוערכות רק אם הארגומנטים כן
קבועי אופי. ftnchek נותן אזהרה אם הוא צריך את הערך של כמה
פונקציה פנימית שאינה מוערכת.
NEW מאפיינים
להלן השינויים מגרסה 3.2 לגרסה 3.3:
1. החזית הקדמית נכתבה מחדש להסתכלות בלתי מוגבלת, ומבטלת את הבאג רב השנים
שגרמה לפרשנות שגויה של אמירות שעמימותן לא נפתרה בהן
השורה הראשונה.
2. -mkhtml האפשרות זמינה כעת בגרסת MS-DOS.
3. נוספה תמיכה בתחביר הקשור למצביע Fortran 90: ALLOCATE, DEALLOCATE ו- NULLIFY
הצהרות; המאפיינים ALLOCATABLE, POINTER ו-TARGET בהצהרות סוג; ה
אופרטור הקצאת מצביע => ופונקציות פנימיות ALLOCATED ו- ASSOCIATED; ו
הצהרות מערך צורה דחוי. נכון לעכשיו, תכונות התחביר החדשות הללו מקובלות
אך לא נבדק כראוי. תכונה זו נוספה על ידי רוברט לנדריטו.
4. -F77 ו -F90 מצביע האפשרות לשלוט באזהרות לגבי ``מצביעי קריי'' הייתה
שונה לשם קריי-פוינטר. ה -f77=מצביע אפשרות כעת במקום זאת שולטת באזהרות עבור
קוד המכיל תחביר הקשור למצביע Fortran 90.
5. מיושם מחדש -mkhtml עיבוד כך שהוא הרבה יותר מהיר כעת בקבצי מקור המכילים
שגרות רבות.
6. שינה את הסידור של ספריית הבדיקה כך שכבר אין צורך לשנות
ההפצה על מנת להפעיל את חבילת הבדיקה (check.bat) תחת MS-DOS.
7. תוקן באג בקריאת הגדרות מספריות בשורת הפקודה כאשר שם ההגדרה מקוצר ל
3 תווים.
8. תוקן באג שגורם לאזהרה מזויפת עבור GOTO המתייחס להצהרת END שכותרתה
כאשר ההצהרה לפני END הייתה FORMAT.
9. דגל חדש -f77=תו לשלוט באזהרות לגבי הרחבות ל-Fortran 77
סוג נתוני תו. מלווה את הדגל החדש הזה תמיכה בכללי Fortran 90 עבור
הצהרות משתני תווים המוערכות לאפס או אורך שלילי, מה שמאפשר
אותם והתייחסות לערכי אורך שליליים כאפס.
10. תיקן באג קטן בהדפסת הערות ושורות ריקות בעקבות הצהרת END האחרון
in -רשימה מצב.
השתמש ב-ftnchek באינטרנט באמצעות שירותי onworks.net