פרק 11 רישומים נוספים בחטיבת הנתונים ושגרות לבדיקת תקינות.

א. זיהוי שמות

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

כזכור לך, שמות הקבצים ושמות הרשומות בתכנית COBOL חייבים להיות ייחוד''ם (unique). אם XXX הוא שמו של קובץ, המוגדר בפסוק SELECT בחטיבת הסביבה (ENVIRONMENT DIVISION) ומתואר על ידי היישום FD בחטיבת הנתונים, אזי אותו שם, XXX, אינו ניתן לשימוש להגדרת שדות, שטחי עבודה או שמות סעיפים. באופן דומה, פריטי אחסון עצמאיים לעבודה חייבים לקבל שמות ייחודיים. יחד עם זאת, שמות שסופקו על ידי המתכנת, המגדירים שדות-נתונים בתוך רשומות, אינם חייבים להיות ייחודיים. לדוגמא, רישומים אלה בחטיבת הנתונים, הם תקינים:

FD  FILE-IN  LABEL RECORDS ARE OMITTED 

DATA RECORD IS REC-IN.

01 REC-IN.

02 NAME  PIC  A (10).

02 AMT  PIC  9 (5).

02 CDE  PIC  X (5).

02 FILLER  PIC  X (60).

FD  FILE-OUT  LABEL RECORDS ARE STANDARD 

DATA RECORD IS REC-OUT.

01 REC-OUT.

02 NAME  PIC  A (10).

02 AMT  PIC  9 (5).

02 CDE  PIC  X (5).

FILE-IN ו-FILE-OUT, כשמות של קבצים, חייבים להיות ייחודיים. באופן דומה REC-IN ו-REC-OUT, כשמות של רשומות, אף הם חייבים להיות ייחודיים. אולם NAME, AMT ו-CDE, שהם שדות-נתונים בתוך רשומות, אינם חייבים להיות ייחודיים; כלומר, ניתן להשתמש בהם להגדרת יותר מאזור אחד של אחסנה. בחטיבת-הביצוע - כאשר מגיעים לשם-נתונים שאינו ייחודי, שם זה חייב להיות מזוהה (qualified). עלינו לציין לאיזו רשומה יש לגשת. איננו יכולים לומר, לדוגמה: ADD AMT  TO  TOTAL, מאחר ש-AMT הוא שמם של שני שדות-נתונים שונים, ואין זה ברור איזה מהם יש לחבר. כאשר ליותר משדה אחד באחסנה יש אותו שם, אנו מזהים את השם בחטיבת הביצוע באופן הבא:

} שם רשומה}   [OF]  ( שם נתונים)

}  פריט מקובץ }           [ON]

 

דוגמאות

1.  ADD AMT IN FILE-IN  TO  TOTAL.

2.  MOVE  NAME  IN  FILE-IN  TO  NAME  IN  FILE-OUT.

3.  IF  NAME  IN  FILE-IN  =  SPACES  

THEN  MOVE  ‘MISSING’  TO  NAME  IN FILE-OUT.

בכל פעם, שבחטיבת הנתונים משתמשים באותו שם יותר מפעם אחת, עלינו לזהותו בשעת עיבודו בחטיבת הביצוע. מילות המפתח OF, IN משמשות לזיהויו של שם, וניתנות להחלפה זו בזו. שיטה זו של שימוש באותו שם-נתונים להגדרת כמה שדות ברשומות נבדלות, הוא מכשיר-תכנות שימושי. אם משתמשים בזיהוי שמות, רישומים בחטיבת-הביצוע נעשים קלים יותר להבנה לקורא התכנית, וקלים יותר לניפוי משגיאות על ידי המתכנת, האמירה MOVE  AMT  IN  REC-IN  TO  AMT  IN  REC-OUT. היא, יחסית, פשוטה להבנה. האמירה MOVE  AMT1  TO  AMT2., שבה AMT1 ו-AMT2 הם שדות המוגדרים באופן ייחודי באיזורי הקלט והפלט, בהתאמה, היא פחות ברורה. למרות שהאחרונה כרוכה בפחות כתיבה, על הקורא לבדוק את רישומי חטיבת הנתונים כדי לקבוע איזה איזור באחסנה מועבר, ואיזה שדה יקבל את הנתונים. כלומר, מיקומם של AMT1 ו-AMT2 באחסנה אינו ברור. מזהים מבהירים באופן מוחלט, ששדות הכמות (AMT) הם חלק מרשומות הקלט והפלט. כאשר רשומה מכילה כמה שדות שיש להציב ברשומה אחרת, נוכל להשתמש בשמות-שדה זהים בשילוב עם הוראת MOVE  CORRESPONDING, כמתואר בפרק 7. בדרך זו, זיהוי השמות בחטיבת הביצוע אינו דרוש כלל.לא פעם נתקשה לעקוב אחרי לוגיקה של תכנית, אם ניתוחה דורש התייחסות בלתי-פוסקת לחטיבת הנתונים. בעזרת הזיהוי השמות, ייקל עלינו לעקוב אחר הרישומים בחטיבת הביצוע. שדה ניתן לזיהוי על ידי שימוש ב-OF או ב-ON יחד עם שם הרשומה או כל פריט קבוצתי:

01  REC-1.

02  CODEX.

03  SEX  PIC  X.

03  MARITAL-STATUS  PIC  X.

03  AGE  PIC  99.

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

ההוראה MOVE ‘C’  TO  FLD1., כאשר FLD1 מוגדר על פי התבנית:

FLD1  PIC  XXX  JUSTIFIED RIGHT , תציב __C ב-FLD1. כלומר, השימוש ,במשפט JUSTIFIED RIGHT מביא לכך, שכל VALUE שניתן לשדה, או כל נתון המוצב בשדה, לא יצייתו לכללים האלפאנומריים הרגילים. במקום זאת, כל הנתונים, שיוצבו בשדה, יהיו מיושרים לימין. לעתים קרובות משתמשים במשפט JUSTIFIED RIGHT באזור הדפסה (PRINT  AREA). נגדיר רשומת הדפסה כך:

01 PRINT-REC.

  02 FILLER  PIC  X(61).

  02 HEADER   PIC  X(12).

  02 FILLER  PIC  X(60).

בחטיבת הביצוע נקודד את ההוראות הבאות:

MOVE  SPACES TO  PRINT-REC.

MOVE ‘COMPANY AMDOCS’  TO  HEADER.

WRITE  PRINT-REC.

בדרך זו נקבל את הכותרת ‘COMPANY AMDOCS’ במרכז הגליון, עם 60 רווחים מכל צד שלה. אולם נוכל לפשט את הרישום בחטיבת הנתונים כך:

01  PRINT-REC.

02  HEADER  PIC  X(73)  JUSTIFIED RIGHT.

02   FILLER  PIC  X(60).

השימוש באותה חטיבת-ביצוע כמו קודם, יביא לתוצאות זהות לקודמות. COMPANY AMDOCS ימוקם ב-12 המקומות הימניים ביותר של HEADER, בהשאירו 60 מקומות מסדר גבוה, או שמאליים, ריקים. כך הגדרנו את רשומתנו עם שני שדות במקום שלושה. המשפט JUSTIFIED RIGHT משנה את הכללים הרגילים של פעולות הצבה אלפאנומריות. לכן משפט זה אינו ניתן לשימוש בהקשר לשדות בעלי הגדרת PICTURE מספריים (נומריים), מאחר ששדות כאלה ממילא תמיד מיושרים לימין.

אם שם-הנתונים SEX מוגדר כמה פעמים בחטיבת הנתונים, ניתן להגיע אל השדה SEX, שמתואר לעיל כך:

SEX  IN  REC-1

או

SEX  IN  CODEX

 סדר מודרג של ביצוע התנאים הנ"ל.

סיכום

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

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

  3. אותו שם יכול להגדיר אזורים שונים בחטיבת הנתונים.

  4. יחד עם ואת, בכל פעם שניגשים לשדות אלה בחטיבת-הביצוע, חייבים לזהותם.

  5. התבנית, המשמשת לזיהויו של שדה, היא:                           

    } שם רשומה}   [OF]  ( שם נתונים)

    פריט מקובץ }           [ON]

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

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

 

נושאים

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

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