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

א. הוראת חיבור

ניתן לכתוב הוראת חיבור פשוטה, באחת משתי התבניות הבאות:  

 תבנית 1

.(שמ-נתון-2) TO {שם-נתון-1 } ADD

{ קבוע }             

 

 תבנית 2

(שמ-נתון-3) GIVING  {שם-נתון-2 } , {שם-נתון-1 } ADD

{קבוע-2}         { קבוע-1}          

דוגמאות

ADD TAX  TO  DEDUCATIONS.

ADD  15.8  TO  TAX.

ADD 1.20, AMOUNT  GIVING  TOTAL.

.ADD AMT1, AMT2 GIVING NET

חשוב ביותר לציין, שכל המשתנים או הקבועים, המשמשים בהוראה אריתמטית כלשהי, חייבים להיות נומריים (מספריים). המחשב לא יבצע פעולה אריתמטית על משתנה לא נומרי, ולכן בדוגמאות שלמעלה כל הקבועים הם נומריים, וכל השדות המוגדרים בחטיבת הנתונים - אנו מניחים שהPICTURE שלהם מסוג 9. התוצאה של פעולת החיבור, מאוחסנת תמיד בשדה האחרון, המצוין בהוראה, כך שזהו המשתנה היחיד שערכו משתנה לאחר ביצוע הפעולה. שדה אחרון זה, כפי שאנו רואים, בא מיד לאחר המלה TO בתבנית 1, או מיד

לאחר המלה GIVING, כשמשתמשים בתבנית 2, והוא נקרא שדה התוצאה. חשוב מאוד לזכור, ששדה התוצאה - אסור שיהיה קבוע, והוא חייב להיות משתנה כלשהו. ההוראה ADD HOURS-WORKED  TO  40.  היא הוראה שגויה, כיוון ששדה התוצאה הוא קבוע, ולא שם-שדה, כפי שחייב להיות.

כאשר אנו משתמשים בתכנית בתבנית מספר 1, הרי בזמן ביצוע ההוראה, כל ערכי המשתנים והקבועים שבהוראה מסוכמים יחדיו, והתוצאה מאוחסנת בשדה האחרון. כאשר אנו משתמשים בתכנית בתבנית מספר 2, הרי שבזמן ביצוע ההוראה, כל ערכי המשתנים והקבועים שלפני המלה GIVING מסוכמים יחדיו, והתוצאה מאוחסנת בשדה התוצאה. שדה זה ישמש, אפוא, רק להצגת התוצאה, ואיננו חלק מפעולת החיבור.

לדוגמא:

.ADD HOURS-WORKED  TO  WEEKLY-HOURS

שני הערכים מסוכמים יחדיו, והתוצאה מאוחסנת במשתנה האחרון, בעוד שמשתנה הראשון לא השתנה כלל.

לדוגמא:

.ADD HOURS-WORKED, WEEKLY-HOURS  GIVING  TOTAL-HOURS

גם בדוגמא זו, מסוכמים אותם שני ערכים, כמו בדוגמא הקודמת, והתוצאה מאוחסנת במשתנה האחרון, שהוא TOTAL-HOURS. הערכים של שני המשתנים נשארים ללא שינוי, גם לאחר ביצוע הפעולה, ואילו הערך המקורי שבמשתנה התוצאה - נהרס כמובן, ובמקומו יופיע ערך הסיכום. לערך המקורי אין כל השפעה על פעולת החיבור עצמה, כיוון שבמקרה זה משתנה התוצאה איננו חלק מהפעולה. הפסיק בהוראה אינו הכרחי, ומשמש רק להפרדה בין משתנים.

יש לזכור, שהשדות המופיעים בהוראה אריתמטית כלשהי, יכולים להיות שדות המוגדרים ברשומת קלט או פלט ב-FILE SECTION, או שדות המוגדרים ב-WORKING-STORAGE  SECTION . השימוש באותה הוראת חיבור במלים TO ו-GIVING יחדיו אסור בשפת COBOL, ואם נכתוב את ההוראה הבאה:ADD  TAX  TO  NET  GIVING  TOTAL. , הרי זוהי הוראה שגויה. מכל האמור לעיל נראה, שמשתמשים בתבנית מספר 1 כאשר, לאחר ביצוע ההוראה, התוכן המקורי של השדות כבר אינו נחוץ, ואילו בתבנית מספר 2 נשתמש כאשר אנו צריכים לשמור את תוכן השדות המקוריים, המשתתפים בביצוע הפעולה, להמשך התכנית. ניתן גם להרחיב את שתי התבניות הנ"ל, כפי שנראה מיד:

 תבנית 1 - צורה מורחבת

(שם-נתון-ח) TO ... ,[שם-נתון-2] , {שם-נתון-1} ADD

[קבוע-2]      {קבוע-1}             

 תבנית 2 - צורה מורחבת

 (שם-נתון-ח) GIVING ... ,[שם-נתון-2] , {שם-נתון-1} ADD

[קבוע-2]      {קבוע-1}             

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

 כללים לפעולת החיבור - סיכום תמציתי

  1. כל המשתנים והקבועים חייבים להיות נומריים.

  2. מקבל התוצאה (שלאחר המלה TO או GIVING) חייב להיות משתנה, ואסור שיהיה קבוע. בתבנית השימוש מספר 2 (עם GIVING) - מותר, שמשתנה התוצאה יהיה משתנה בעל עריכה פנימית (משתנה בעל עריכה פנימית מוסבר ביתר פרוט בפרק 13).

  3. בשימוש בתבנית מספר 1 (עם המלה TO) כל הערכים, כולל הערך של משתנה התוצאה, מסוכמים יחדיו, ומאוחסנים במשתנה התוצאה.

  4. בשימוש בתבנית מספר 2 (עם GIVING), הערך של משתנה התוצאה אינו מסוכם, ומשתנה זה משמש רק לאחסון והצגת התוצאה.

  5. אסור, שבאותה הוראת חיבור יופיעו גם המלה TO , וגם המלה GIVING יחדיו.

כדי להמחיש את שתי תבניות השימוש הנ"ל, נסתכל על הדוגמאות הבאות:

דוגמא א

.ADD  AMT1, AMT2, AMT3  GIVING  AMT4

AMT4

AMT3

AMT2

AMT1

לפני ביצוע ההוראה

15

6

4

2

אחרי ביצוע ההוראה

12

6

4

2

התוכן המספרי של שלושת המשתנים הראשונים אינו משתנה, אבל התוצאה, שנמצאת בשדה AMT4. (כמו בדוגמא א'), מכילה רק את ערכי משתנים אלו. הערך המקורי של AMT4 אינו מסוכם, ואין לו כל השפעה על התוצאה.

דוגמא ב

ADD  AMT1, AMT2, AMT3 TO  AMT4.

 

AMT4

AMT3

AMT2

AMT1

לפני ביצוע ההוראה

15

6

4

2

אחרי ביצוע ההוראה

27

6

4

2

התוכן המספרי של שלושת המשתנים הראשונים אינו משתנה לאחר ביצוע הפעולה. התוצאה כוללת את הערכים של כל ארבעת השדות, ונמצאת בשדה AMT4.

כאשר כותבים ב-ANS COBOL, ניתן להרחיב את תבנית השימוש מספר 1, כך שע"י אותה הוראה, יתבצעו

מספר פעולות חיבור, כפי שנראה להלן:

נכתוב לדוגמא

ADD AMT1, AMT2  TO  TOTAL1, TOTAL2.

וזה כאילו כתבנו: 

ADD AMT1, AMT2  TO  TOTAL1.

ADD AMT1, AMT2  TO  TOTAL2.

מכאן שתבנית ההוראה ADD יכולה להסתכם בצורה הבאה: 

,(שם-נתון-ח+1),(שם-נתון-ח) TO ,[שם-נתון-2] ,{שם-נתון-1} ADD

[קבוע-2]       {קבוע-1}           

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

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

 

נושאים

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

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