פרק 9  הוראות אריתמטיות.

ה.  הערה לשגיאת גודל - ON SIZE ERROR OPTION

מקרה שכיח נוסף, בכתיבת הוראות אריתמטיות כלשהן בתכנית, הוא מקרה של קבלת תוצאה שגויה, עקב קיצוץ ספרה משמעותית משמאל.

כיצד מתרחש מצב כזה? נראה בדוגמא הבאה:

ADD AMT1, AMT2  TO  AMT3.

אם מתבצעת ההוראה דלהלן:

AMT1                 AMT2                 AMT3          

התוכן

PICTURE

התוכן

PICTURE

התוכן

PICTURE

050

999

150

999

800

999

התוצאה המתקבלת היא (800 + 150 + 50 = 1000 ) - מספר בן ארבע ספרות; תוצאה זו צריכה להיות מאוחסנת במשתנה, המוגדר באורך שלושה תווים בלבד. במקרה כזה הספרה השמאלית מושמטת (קיצוץ משמעותי לגבי התוצאה), ובשדה AMT3. נקבל 000. זהו מצב של שגיאת גודל, או, OVERFLOW, וחשוב לציין שאין המחשב מתריע על כך, ואף אינו מפסיק את התכנית אם נתהווה מצב שכזה.  

הדרך הטובה ביותר למנוע מצב של שגיאת גודל, היא להגדיר משתנה תוצאה גדול מספיק. אך לפעמים קורה, שהמתכנת אינו שם לב ששדה מסוים משמש במהלך התכנית, גם כמשתנה תוצאה, ואז עלול להתרחש מצב כנ"ל. בשפת COBOL קיים פתרון לקבלת התרעה, כלהלן:

 {הוראת הביציע} [[ON SIZE ERROR {הוראה חשבונית}

להלן דוגמא לשימוש בהערה לשגיאת גודל:

ADD A ,B  TO  C  ON  SIZE  ERROR   MOVE  0 TO  C.

MULTIPLY   A   BY   B  ON  SIZE  ERROR   PERFORM  ERROR-RTN.

DIVIDE  A  INTO  C  ON  SIZE  ERROR  MOVE  'INVALID  DIV'  TO  CDE.

בכל הוראה אריתמטית, גם בצורת הכתיבה הרגילה וגם עם GIVING ניתן להשתמש באפשרות זו. המונח IMPERATIVE  STATEMENT (משפט ציווי) מציין כל משפט COBOL המורה על ביצוע של הוראה או הוראות מסוימות. אין לכלול במונח זה משפטי תנאי או הוראות. משפט הציווי יתבצע אך ורק אם, לאחר ביצוע ההוראה האריתמטית, באמת נתהווה מצב של שגיאת גודל. למשל, בדוגמא מספר 1 יועברו אפסים למשתנה C רק אם הוא אינו מספיק גדול להכיל את תוצאת הסיכום. אם C מכיל מספיק תווים, כדי שהתוצאה תאוחסן בו, ללא קיצוץ משמעותי בשמאל, הרי משפט הציווי לא יתבצע, אלא המחשב ימשיך למשפט העוקב להוראה הבוכחית. בהוראת החילוק יכול להתהוות מצב של שגיאת גודל, לא רק כאשר אין מספיק מקום במשתנה התוצאה, אלא גם כאשר רוצים בטעות לחלק ב-0, דבר שאסור לבצע. בכל הוראה אריתמטית, ניתן להשתמש בצרוף של אפשרות העיגול עם אפשרות שגיאת גודל (כאשר המלה ROUNDED תמיד ראשונה), בצורה הבאה:

 ]הוראת הביציע] ROUNDED ON SIZE ERROR [הוראה חשבונית[

בהוראת חילוק עם שארית, כתיבת ההוראה תיראה כך:

 [(שמ-נתון)  REMINDER] ... [ROUNDED]   DIVIDE

[(הוראת הביציע) [ON  SIZE  ERROR

קודם | תחילת הדף | הבא

שאלות להערכה עצמית >>

 

נושאים

פרק 3 - חטיבת הזיהוי                               (IDENTIFICATION DIVISION)
פרק 6 - חטיבת הביצוע                               (PROCEDURE DIVISION)
פרק 14 - הוראת DISPLAY ו-ACCEPT

.איתן 2002. כל הזכויות שמורות למערכת המידע איתן ©