ברוב
המערכות המסחריות, המטפלות בנפח גדול של
נתונים, ומעט מאוד בחישובים אריתמטיים,
ניתן להסתפק בארבע ההוראות, שלמדנו עד כה.
אולם, כאשר צריכים לכתוב תכנית, שבה קיים
שימוש רב ביותר בחישובים ובפעולות
אריתמטיות, מתברר שבדרך כלל, ארבע ההוראות
הנ"ל אינן עונות על כל הצרכים. כאן באה
לעזרתנו הוראת החישוב COMPUTE, שהיא הוראה המשתמשת בסמלים
אריתמטיים (כמו: +, -
וכוי). למעשה, הוראה זו הינה כוללנית יותר
מארבע ההוראות הקודמות שלמדנו. בהוראת COMPUTE, ניתן להשתמש בסמלים הבאים, עבור הפעולות האריתמטיות:
יש לשים לב, שלפני סימן השוויון, משמאל, מופיע תמיד שם משתבה, שהוא משתנה התוצאה, בעוד שמימין לסימן השוויון מופיע ביטוי אריתמטי אשר תוצאתו מועברת אל משתנה התוצאה. אם בדוגמא מספר 1 , התוכן המספרי בשדה AMT היה 200, הרי תוצאת הביטוי האריתמטי 200 * .05 = 10, היתה מאוחסנת במשתנה TAX, בעוד שהתוכן הקודם שלו היה נעלם. כל השדות המופיעים בביטוי האריתמטי (מצד ימין של סימן השוויון) - נשארים בערכם המקורי.
שדות הנתונים AMT1,AMT2 ו-AMT3 המשתתפים בהוראה COMPUTE, נשארים ללא שינוי לאחר ביצוע ההוראה. השדה TOTAL מקבל את תוצאת הפעולה האריתמטית. ערכו המקורי של השדה TOTAL לפני ביצוע הפעולה אינו משפיע על תוצאת הפעולה. הערך 95 מועבר לשדה הנתונים TOTAL. שדות הנתונים, המופיעים מימין לסימן השוויון בהוראה COMPUTE, יכולים להיות קבועים או משתנים. אין להגדיר את הקבועים במקומות כלשהם בתכנית, אלא יש להשתמש בהם במקומות בהם הם נחוצים; אולם ברור כי שדות נתונים, המשמשים בהוראה לצורכי חישוב, חייבים להיות מוגדרים בחטיבת הנתונים. כל שדות הנתונים, המשתנים והקבועים, המשתתפים בהוראה COMPUTE חיבים להיות נומריים.בהוראה COMPUTE ניתן להשתמש ביותר מאשר פעולה אריתמטית אחת (פעולות חיבור, חיסור, כפל או חילוק). לדוגמא, נוכל לראות כי ההוראה אשר בוצעה בדוגמא 2, שבה מופיעים גם כפל וגם חילוק, ניתן לרשום אותה גם בצורה הבאה.
מכאן
ברור, כי להוראה COMPUTE יש יתרון על פני שיטות הרישום האחרות -
בזה, שניתן במסגרת הוראה
אחת לבצע יותר מפעולה אריתמטית אחת, בעוד
ששיטת הרישום של ההוראות הבודדות היא
מגושמת יותר ואינה נוחה. ההוראות ADD, SUBTRACT, MULTIPLY ו-DIVIDE מקבילות בהתאמה לסימנים +,-,*,/. ניתן לבצע בעזרת הסימנים האריתמטיים גם העלאה בחזקה, תוך שימוש בסימן האריתמטי **. לא קיימת בשפת COBOL הוראה נפרדת, המקבילה לסימן זה, והמבצעת העלאה בחזקה. הרישום A ** 2. מסמל את הרישום המתמטי A^2 או את הרישום A * A. הסימן A ** 3 מסמל את הרישום המתמטן A^3 או את הרישום A * A * A. לשם מציאת הערך B^4 ולשם הצבת התוצאה בשדה C ההוראה אשר תירשם היא COMPUTE
C = B ** 4. כל הסימנים האריתמטיים, המופיעים בהוראת החישוב, חייבים להתנהג לפי חוקי המרווח; כלומר - לכל סימן יש מרווח אחד לפניו ואחד אחריו (כולל סימן השוויון). אם נרצה לכתוב A = B+C+D^2, הרי ב-COBOL יופיעו מרווחים כדלקמן: COMPUTE
A =
B + C
+ D
** 2 ראינו
עד עכשיו בדוגמאות, שמצד ימין השתמשנו אך
ורק בביטוי אריתמטי. אולם ניתן להשתמש גם
בקבוע, או במשתנה (זה וגם זה חייבים להיות
נומריים, כאמור), כפי שנראה להלן, ואז משמעות
ההוראה היא כמו הוראת MOVE רגילה. מובן, שבמקרים כאלו נעדיף
להשתמש בהוראה MOVE, הפשוטה יחסית, לצורך
יעילות התכנית (ביצוע מהיר יותר).
שים
לב, כי בשתי הדוגמאות האחרונות עדיף להשתמש
בהוראת MOVE.
בהוראת החישוב, כמו בארבע ההוראות הקודמות,
ניתן להשתמש באפשרות העיגול, ובאפשרות
שגיאת הגודל, לפי אותם חוקים שלמדנו עד כה.
הוראה זו, עם אפשרוח העיגול, נכתבת כך:
A B C D
ואילו
תבנית הכתיבה עם אפשרות שגיאת גודל היא:
בהוראת
COMPUTE, אם המשתנה A
יהיה מוגדר PICTURE 99,
אזי התוצאה המתקבלת תהיה גדולה מדי. התוצאה 102
אינה יכולה להיות מאוחסנת בשדה A.
במקרה זה מקוזזות הספרות השמאליות של המספר.
התוצאה שתתקבל היא 02.
לשם הגנה בפני מצב זה, משתמשים במשפט ON SIZE ERROR,
לדוגמא: COMPUTE
A
=
105
- 3 ON SIZE ERROR
PERFORM
ERROR-RTN. והתבנית הכללית המושלמת של הוראת החישונ היא:
היתרון
העיקרי בשימוש בהוראה COMPUTE הוא, שניתן לבצע במסגרת
ההוראה כמות מסויימת של פעולות
אריתמטיות בהוראה אחת. שדה הנתונים, הנמצא
משמאל לסימן השוויון, מקבל את ערך הפעילות
האריתמטית שבין הקבועים והמשתנים אשר
מימין לסימן השוויון. שתי ההוראות הבאות
הינן בעלות משמעות זהה.
ניתן
בעזרת ההוראה COMPUTE
לרשום ביתר קלות נוסחאות מסויימות. לשם
רישום הנוסחה C
= A^2 + B^2 ,
ללא
ההוראה COMPUTE
יש לרשום כמות מסויימת של פעולות בודדות,
בעוד שבמסגרת ההוראה נרשום:
אין הוראה או סימן בשפת COBOL, המבטאים הוצאת שורש ממספר; אולם מבחינה חשבונית ניתן להעלות בחזקה של 1/2 מספר מסויים ולקבל את התוצאה הרצוייה. מכאן:
סדר ביצוע ההוראות האריתמטיות בהוראת החישוב, סדר ביצוע הפעולות האריתמטיות חשוב ביותר, וקובע לגבי התוצאה. נשים לב לדוגמא הבאה:
הפעולה
שתמיד תתבצע ראשונה, תהיה העלאה בחזקה, אח''כ
כפל או חילוק, ולבסוף חיבור או חיסור. אם
ישנן כמה פעולות כפל או חילוק באותה הוראה,
הן יתבצעו לפי הסדר משמאל לימין, וכך גם
לגבי כמה פעולות חיבור וחיסור יחדיו. בהתאם לחוקים אלו, ההוראה A = C + D ** 2 תתבצע באופן הבא: 1.
בתחילה העלאה בחזקה :D ** 2 = תוצאת החזקה 2.
ואח"כ חיבור : תוצאת החזקה + C כלומר,
על פי הביטוי האריתמטי A
= C + D^2,
ולא A = (C + D)^2, שהוא בניגוד לחוקים הנ"ל.
וההוראה
COMPUTE
S = T * D + E / F
תתבצע על פי הסדר הבא: 1.
בתחילה כפל: T
* D 2.
אח"כ חילוק:E
/ F 3.
לבסוף חיבור: (T
* D) + (E / F) כלומר,
על פי הביטוי האריתמטי S
= T * D + E / F.
יש לשים לב, שבהוראה זו יש גם הוראת כפל וגם
הוראת חילוק, והן מתבצעות בזו אחר זו, משמאל
לימין. נסתכל
כעת, כשאנו יודעים את הקדימויות של סדר
הביצוע, על הדוגמא הראשונה, שהיתה כדלהלן: COMPUTE D = A + B / C.
ברור, שהביטוי האריתמטי המתאים הוא D = A + (B / C)
(כלומר לפי צורה (b). כאשר
רוצים לשנות את סדר הביצוע בהוראת החישוב,
אפשר להשתמש בסוגריים. השימוש בסוגריים
מבטל את סדר ביצוע ההוראות, כפי שבא לידי
ביטוי בסוג הפעולה המבוצעת. לשם חישוב העךך D
= (A + B) / C
ניתן להשתמש בהוראה COMPUTE
C = A + B / 3 וזאת הואיל
והוראה זו מבטאת את החישוב
D = A + (B/C)
. לשם חלוקת סכום הערכים של המשתנה A והמשתנה B
במספר 3, כפי שרצינו לבצע יש לכתוב את ההוראה
הבאה. COMPUTE C = (A + B) / 3 כל
הפעולות אשר נמצאות בתוך סוגריים, מתבצעות
ראשונות. מכאן, שסדר הביצוע הוא: 1.
A + B 2.
(A + B) /
3
|
פרק 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. כל הזכויות שמורות למערכת המידע איתן © |