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

ה. הוראת   (הצבה מתואמת)  MOVE CORRESPONDING.

הוראת MOVE  CORRESPONDING  היא הוראת-ברירה, שניתן להשתמש בה במקום הוראת MOVE בסיסית. מבנה ההוראה:

(פריט-מקובץ-2) TO (פריט-מקובץ-1) MOVE CORRESPONDING

                                             CORR         

כזכור, פריט מקובץ הינו שדה או רשומה, שיש להם תת חלוקה לשדות בסיסיים יותר. בהוראה שלעיל, כל הפריטים שבתוך פריט-מקובץ-1, אשר יש להם שמות זהים לשמות השדות המתאימים בפריט-מקובץ-2, יוצבו בפריט-מקובץ-2.

דוגמא 1

MOVE CORRESPONDING  RECORD-1 TO  RECORD-2.

הוראת- MOVE כזו המופיעה בדוגמה, תגרום להעברת כל שדות הנתונים ב-RECORD-1 שיש להם שמות זהים לשדות מתאימים ב-RECORD-2, השדות בעלי השמות הזהים ב-RECORD-2 אינם חייבים להיות מסודרים לפי סדד מסויים. אם קיימים ב-RECORD-1 שדות, שאין להם שדות מתאימים (בעלי שם זהה) ב-RECORD-2, לא יושפעו שדות אלה מביצוע ההוראה. השדות השולחים, כמו בכל הוראת הצבה, נשארים ללא שינוי. דיון מפורט יותר ברעיון של "שמות זהים" מובא בפרק 11 , בחלק הדן בסיווג שמות. עד לנקודה זו, השתמשנו בשמות שונים עבור שדות שונים. בשימוש בהוראת MOVE CORRESPONDING, אנו יכולים ליצור שדות בעלי שמות זהים בשתי רשומות שונות.  

תוכן אחרי MOVE

תוכן לפני MOVE

. RECORD-2

תוכן אחרי MOVE

תוכן לפני MOVE

. RECORD-1

A

P

.(NAME PIC X(6

ללא שינוי

A

.(NAME PIC X(6

0680

0579

.(DATEX PIC 9(4

ללא שינוי

10000

.AMT PIC 999V99

100.00

000.00

.AMT PIC 999V99

ללא שינוי

12345

.(TRANS PIC X(5

10

10

.DISC PIC V99

ללא שינוי

0680

.(DATEX PIC 9(4

אנו רואים, כי הוראת MOVE CORRESPONDING מבצעת למעשה סדרה של העברות פשוטות. כל השדות  ב-RECORD-1, אשר יש להם שדות בעלי שמות זהים ב-RECORD-2, מוצבים בשדות אלה NAME,  AMT, ו-DATEX, שב-RECORD-2 אינם מופיעים בסדר זהה לזה שבRECORD-1, עם זאת, תועבר  תכולתם ל-RECORD-2 בלי שעובדה זו תשפיע על ההעברה.

שדות ב-RECORD-1, שאין להם פריטים מתאימים ב-RECORD-2, אינם מושפעים מביצוע ההוראה.  השדה DISC ב-RECORD-2 שומר על תוכנו המקורי, מאחר שאין שדה מתאים לו ב- RECORD-1.

פריטים ב-RECORD-1, אשר אין להם פריטים מתאימים בRECORD-2, אינם מועברים. השדה TRANS  ב-RECORD-1 לא יועבר, מאחר שאין שדה בשם זה ב-RECORD-2. בכל מקרה, נשארים פריטי הרשומה  השולחת ללא שינוי לאחר ביצוע ההוראות.

כל כללי ההצבה הרגילה חלים גם על הוראת  MOVE CORRESPONDINGלהצבות מספריות.  

  הצבות MOVE מספריות

  1. הנתונים מוצמדים לימין בשדה המקבל:                               לדוגמא, הצבת 075 בשדה מספרי בן 2  תווים - תיתן תוצאה 75 בשדה זה.

  2. אם השדה המקבל גדול מהשדה השולח, יוחלפו תווים מסדר גבוה (שמאליים) באפסים.  

    לדוגמא, הצבת 524 בשדה בן 4 תווים ספרתיים - תיתן 0524 בשדה זה.

 

  הצבה שאינה מספרית (אלפבתי או אלפאנומרי)

  1. הנתונים מוצמדים לשמאל השדה המקבל.                           לדוגמא, הצבת ABC לשדה (שאינו מספרי) בן שני תווים - תציב בשדה זה AB.

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

    לדוגמא, הצבת ABC בשדה שאינו מספרי, בן 4 תווים - תציב בשדה זה ~ABC . (~ =  מרווח)

אפשר להציב שדה מספרי בשדה אלפאנומרי, אך אין להציב שדה אלפאנומרי בשדה מספרי.  

 דוגמא 2

תוכן אחרי MOVE

OUT-REC תוכן IN-REC
Jan 7,2003

.(DATEX PIC X(10

Jan 7,2003

.(DATEX PIC X(10

23

.AMT PIC 99

023

.AMT PIC 999

040

.HRS PIC 999

40

.AMT PIC 999

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

בשימוש בהוראת MOVE  CORRESPONDING, יש לשים לב שכל שמות הנתונים, שיועברו מן השדה  השולח, יהיו בעלי אותו שם כמו הפריטים המתאימים בשדה המקבל.

נעיין בשטחי הקלט והפלט שלהלן:  

.RECORD-A

.(NAME PIC X(10

.DB-AMT PIC 99 

.CR-AMT PIC 99

.RECORD-B

.(NAME PIC X(10

.DB-AMT PIC 99 

.CR-AMT PIC 99

במקרה זה, השימוש בהוראת- MOVE  CORRESPONDING יהיה בלתי יעיל. מוטב פשוט להורות:

.MOVE  RECORD-A  TO  RECORD-B

זאת מאחר שכל הפריטים שב-RECORD-A  זהים בגודלם ובמקומם הסידורי ברשומה לפריטי RECORD-B.

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

 הוראת  MOVE  CORRESPONDING תקציר

  1. מטרה: להחליף סדרה של הוראות-MOVE בסיסיות.

  2. תוצאה:

    • כל השדות בפריט השולח מועברים לשדות בעלי שם זהה

      בפריט המקבל.  

    • שדות בפריט המקבל, שאין להם שדות מתאימים בפריט

      השולח - נשארים ללא שינוי.

       

  3. כללים: כל הכללים של הוראות-MOVE בסיסיות - חלים גם כאן.

 הוראת הצבה (MOVE) רגילה - תקציר

  1. הוראת MOVE מספרית

    השדה השולח והשדה המקבל, שניהם מספריים.  

  2. כללים:

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

    • החלק העשרוני מועבר משמאל לימין תווים מסדר במוך, שלא התמלאו, יוהלפו באפסים.  

       

  3. הוראת MOVE, שאינה מספרית

    השדה המקבל אינו מספרי.  

    כללים

    מועבר משמאל לימין

    תווים מסדך נמוך, שלא התמלאו, יוחלפו בתווי רוווח.

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

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

 

נושאים

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

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