מקרה
שכיח נוסף, בכתיבת הוראות אריתמטיות כלשהן
בתכנית, הוא מקרה של קבלת תוצאה שגויה, עקב קיצוץ ספרה משמעותית משמאל. כיצד
מתרחש מצב כזה? נראה בדוגמא הבאה:
אם מתבצעת ההוראה דלהלן: AMT1 AMT2 AMT3
התוצאה
המתקבלת היא (800 + 150 + 50 = 1000
) - מספר בן ארבע ספרות; תוצאה זו צריכה להיות
מאוחסנת במשתנה, המוגדר באורך שלושה תווים
בלבד. במקרה כזה הספרה השמאלית מושמטת (קיצוץ
משמעותי לגבי התוצאה), ובשדה AMT3. נקבל 000.
זהו מצב של שגיאת גודל, או, OVERFLOW,
וחשוב לציין שאין המחשב מתריע על כך, ואף
אינו מפסיק את התכנית אם נתהווה מצב שכזה. הדרך
הטובה ביותר למנוע מצב של שגיאת גודל, היא
להגדיר משתנה תוצאה גדול מספיק. אך לפעמים
קורה, שהמתכנת אינו שם לב ששדה מסוים משמש
במהלך התכנית, גם כמשתנה תוצאה, ואז עלול
להתרחש מצב כנ"ל. בשפת COBOL קיים פתרון לקבלת התרעה, כלהלן:
להלן דוגמא לשימוש בהערה לשגיאת גודל:
בכל
הוראה אריתמטית, גם בצורת הכתיבה הרגילה
וגם עם GIVING
ניתן להשתמש באפשרות זו. המונח
IMPERATIVE
STATEMENT
(משפט ציווי) מציין כל משפט COBOL
המורה על ביצוע של הוראה או הוראות מסוימות.
אין לכלול במונח זה משפטי תנאי או הוראות.
משפט הציווי יתבצע אך ורק אם, לאחר ביצוע
ההוראה האריתמטית, באמת נתהווה מצב של
שגיאת גודל. למשל, בדוגמא מספר 1 יועברו
אפסים למשתנה C רק אם הוא אינו מספיק גדול להכיל את
תוצאת הסיכום. אם C מכיל מספיק תווים, כדי
שהתוצאה תאוחסן בו, ללא קיצוץ משמעותי
בשמאל, הרי משפט הציווי לא יתבצע, אלא המחשב
ימשיך למשפט העוקב להוראה הבוכחית. בהוראת
החילוק יכול להתהוות מצב של שגיאת גודל, לא
רק כאשר אין מספיק מקום במשתנה התוצאה, אלא
גם כאשר רוצים בטעות לחלק ב-0, דבר שאסור
לבצע. בכל הוראה אריתמטית, ניתן להשתמש
בצרוף של אפשרות העיגול עם אפשרות שגיאת
גודל (כאשר המלה
ROUNDED תמיד ראשונה), בצורה הבאה:
|
פרק 1 - מבוא לתכנות COBOL.
פרק 2 - ארגון נתונים
פרק 3 - חטיבת הזיהוי
(IDENTIFICATION DIVISION)
פרק 4 - חטיבת הסביב
(ENVIRONMENTAL DIVISION)
פרק 5 - חטיבת הנתונים
(DATA DIVISION)
פרק 6 - חטיבת הביצוע
(PROCEDURE DIVISION)
פרק 7 - הוראת MOVE
פרק 8 - קטעי האחסון לעבודה
פרק 9 - הוראות אריתמטיות
פרק 10- הוראות תנאי
פרק 11 - רישומים נוספים בחתיבת הנתונים
פרק 12 - עריכת פלט מודפס
פרק 13 - הוראות מיוחדות לעריכת הדפסה
פרק 14 - הוראת DISPLAY ו-ACCEPT
|
.איתן 2002. כל הזכויות שמורות למערכת המידע איתן © |