פרק 7 - הוראת MOVE.

ג. הצבה מספרית

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

  הוראת MOVE מספרית ניתנת לביצוע בשני אופנים

  1. הצבת שדה מספרי, בעל משפט PICTURE של ספרות- 9, לשדה מספרי אחר.

  2. הצבת קבוע מספרי בשדה מספרי.

בהוראה:   (משתנה-2) TO (משתנה-1) MOVE לשני השדות משפטי PICTURE מספריים.  בהנחה ששני השדות הם בעלי אורך זהה, יוחלף תוכנו של משתנה-2 בתוכן של משתנה-1, מבלי שישתנה תוכן השדה השולה (משתנה-1).

 דוגמא 1

FIELDA  PICTURE  999

 תוכן: 123

FIELDB  PICTURE  999

תוכן:456

 ההוראה: . MOVE  FIELDA  TO FIELDB

' = DISPLAY  'FIELDA

DISPLAY  FIELDA

' = DISPLAY  'FIELDB

DISPLAY  FIELDB

 

 דוגמא 2

FIELDC  PICTURE  99V99.

(נקודה עשרונית אחרי שתי הספרות הראשונות)

תוכן: 12.34

FIELDD  PICTURE  99V99.

תוכן: 45.67

ההוראה:  . MOVE  FIELDC  TO  FIELDD  

' = DISPLAY  'FIELDC

DISPLAY  FIELDC

' = DISPLAY  'FIELDD

DISPLAY  FIELDD

לעתים קרובות יש להעביר בתכנית COBOL תוכנו של שדה מספרי אחד לשדה מספרי אחר, כאשר לשני השדות אין הגדרת PICTURE זהה. ייתכן, שנרצה להעביר שדה קטן אל גדול ממנו, כדי לבצע עליו פעולה חשבונית, או שנרצה להעביר תוצאה, המופיעה בשטח עבודה, בדיוק של 3 ספרות אחרי הנקודה (999V), אל שדה פלט בעל דיוק דרוש של 2 ספרות בלבד לאחר הנקודה (99V). בשני מקרים אלה, לא תיצור הוראת MOVE העתקה מדויקת של תוכן השדה השולח בשדה המקבל, וזאת עקב השוני בהגדרת השדות.

בכל הוראות ההצבה MOVE המספריות מתקיימים שני כללים - אחד להעברת החלק השלם של המספר המועבר, והשני להעברת החלק העשרוני (זה שלאחר הנקודה).

כלל 1: . העברת, מספר שלם, או חלק שלם של מספר, תתפצע מימין לשמאל. " כל התווים מסדר גבוה (שמאליים), שלא התמלאו, יקבלו ערך אפס.

 דוגמא 3

FIELD1  PICTURE  999

תוכן: 123

FILED2  PICTURE  9(4)

תוכן: 4567

נתבונן. בהוראה: MOVE  FIELD1  TO FIELD2.  

' = DISPLAY  'FIELD1

DISPLAY  FIELD1

' = DISPLAY  'FIELD2

DISPLAY  FIELD2

 דוגמא 4

FIELD3  PICTURE  999

תוכן: 012

 FIELD4  PICTURE  999

תוכן:34

ההוראה: MOVE  FIELD3  TO FIELD4.

' = DISPLAY  'FIELD3

DISPLAY  FIELD3

' = DISPLAY  'FIELD4

DISPLAY  FIELD4

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

 דוגמא 5

TAKE-HOME-PAY  PICTURE  9(4)

תוכן:  1000

AMT-OF-CHECK  PICTURE  9(3)

ההוראה: MOVE  TAKE-HOME-PAY  TO  AMT-OF-CHECK.

' = DISPLAY  'TAKE-HOME-PAY

DISPLAY  TAKE-HOME-PAY

' = DISPLAY  'AMT-OF-CHECK

DISPLAY  AMT-OF-CHECK

 

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

כלל 2: העברת החלק העשרוני (החלק מימין לנקודה) של השדה השולח לשדה המקבל - נעשית משמאל לימין, החל מהנקודה העשרונית, שהוגדרה בתכנית, התווים הימניים ביותר אחרי הנקודה שלא התמלאו - יקבלו ערך אפס.

 דוגמא 6

FLDA  PIC  99V99

תוכן:12.34

FLDB  PIC  99V999

תוכן: 56.789

ההוראה: MOVE  FLDA  TO FLDB.  

' = DISPLAY  'FLDA

DISPLAY  FLDA

' = DISPLAY  'FLDB

DISPLAY  FLDB

 

 דוגמא 7

FLDC  PIC  V99

תוכן:  0.12

FLDD  PIC  V9

תוכן: 0.3

ההוראה: . MOVE  FLDC  TO  FLDD  

' = DISPLAY  'FLDC

DISPLAY  FLDC

' = DISPLAY  'FLDD

DISPLAY  FLDD

 

 דוגמא 8

FLDE  PIC  9(3)V9

תוכן: 23.41

 FLDF  PIC  99

תוכן: 00

ההוראה: MOVE  FLDE  TO FLDF.  

' = DISPLAY  'FLDE

DISPLAY  FLDE

' = DISPLAY  'FLDF

DISPLAY  FLDF

 

הצורה השנייה של הוראת MOVE - מספרית היא:

 (משתנה) TO   (קבוע) MOVE

הקבוע והמשתנה - שניהם מספרים. שני הכללים שפורטו לעיל תקפים גם בסוג זה של הוראת-MOVE .

 דוגמא 9

FLD1  PIC  9(4)

ההוראה:  MOVE  123  TO  FLD1  

' = DISPLAY  'FLD1

DISPLAY  FLD1

 

 דוגמא 10

FLD2  PIC  99

ההוראה: MOVE  123  TO  FLD2.  

' = DISPLAY  'FLD2

DISPLAY  FLD2

 

 דוגמא 11

FLD3  PIC  99V999

 ההוראה:   MOVE  12.34  TO  FLD3.  

' = DISPLAY  'FLD3

DISPLAY  FLD3

 

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

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

 

נושאים

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

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