ניתוח מבנה קבצים של VSAM למודרניזציה של נתונים

ניתוח מבנה קבצים של VSAM עבור פרויקטים של מודרניזציה של נתונים

העברת נתונים לא יכולה להתרחש בבידוד, היא חייבת להתפתח במקביל ליישומי COBOL שקוראים וכותבים את מערכי הנתונים הללו. אילוץ זה מגדיר את כל האתגר של מודרניזציה של VSAM. VSAM (Virtual Storage Access Method) אינו רק פורמט קובץ. זהו חוזה הנתונים בין תוכניות, המפרט המרומז, שאינו מוגדר בשום מקום מלבד בערכי FD ובפסוקיות SELECT, שקובע כיצד כל תוכנית במערכת ארגונית מייצרת וצורכת את נתוני העסק הקריטיים ביותר שלה. שינוי פריסת רשומה יחיד שאינו משתקף בכל תוכנית שקוראת את הרשומה הזו מייצר נזק נתונים שעשוי שלא לצוץ עד שיפעל דוח רגולטורי על נתונים שכבר אינם משמעם את מה שהתוכנית הצורכת ציפתה שיהיה להם.

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

מערכי נתונים משותפים דורשים הגירה מתואמת

SMART TS XL מחלץ באופן אוטומטי כל פרט בפריסת רשומה שתכנון סכימת היעד דורש.

גלו עוד…

ארבעת ארגוני ה-VSAM ומה כל אחד מהם דורש

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

KSDS, Key-Sequenced Data Set, הוא ארגון ה-VSAM הנפוץ ביותר. רשומות מסודרות פיזית לפי מפתח ראשי (המפתח הראשי), מה שמאפשר גישה ישירה לפי מפתח וגם גישה סדרתית לפי סדר מפתח. קובצי KSDS כוללים באופן אופציונלי אינדקסים חלופיים, נתיבי מפתח משניים המאפשרים אחזור לפי שדות שאינם המפתח הראשי. המטרה הטבעית עבור KSDS היא טבלה רלציונית שבה המפתח הראשי הופך למפתח הראשי ואינדקסים חלופיים הופכים לאינדקסי SQL.

ESDS, Entry-Sequenced Data Set, מאחסן רשומות לפי הסדר שבו נכתבו. אין מפתח, הרשומות מטופלות לפי היסט הבייט הפיזי שלהן (RBA: Relative Byte Address). קבצי ESDS משמשים בדרך כלל עבור נתונים דמויי יומן: מעקבי ביקורת, יומני עסקאות, זרמי אירועים. המטרה הטבעית עבור ESDS היא טבלת יחסים המכילה הוספה בלבד, זרם אירועים (נושא Kafka) או מסד נתונים של סדרות זמן, בהתאם לאופן שבו התוכניות הצורכות ניגשות לנתונים.

RRDS, מערך נתוני רשומות יחסיות, מאחסן רשומות באורך קבוע המטופלות לפי מספר רשומה יחסי. כל משבצת בקובץ מתאימה למספר רשומה; משבצות יכולות להיות ריקות (נמחקות). קובצי RRDS משמשים לתרחישי גישה ישירה שבהם מספר הרשומה משמעותי עבור היישום, ולעתים קרובות משמשים כטבלאות חיפוש פשוטות או אחסון מבוסס גיבוב. המטרה הטבעית היא טבלה רלציונית עם מזהה רצף מספרי, או מבנה חיפוש בזיכרון אם מערך הנתונים קטן וניגשת אליו לעתים קרובות.

LDS, Linear Data Set , הוא אחסון הניתן לכתובת לפי בתים ללא מבנה רשומה גלוי ל-VSAM. הוא משמש יישומים (בדרך כלל DB2, עומסי עבודה של Java או תוכניות מותאמות אישית) המנהלים את הפורמט הפנימי שלהם בתוך טווח הבייטים של VSAM. לא ניתן לנתח קבצי LDS באמצעות ערכי COBOL FD סטנדרטיים, המבנה שלהם קיים רק בשכבת היישומים שכותבת אותם.

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

בעיית ניתוח פריסת הרשומות

פריסת הרשומות היא הממד המורכב ביותר מבחינה אנליטית של ניתוח מבנה VSAM. בניגוד לסכימה רלציונית שבה לכל עמודה יש ​​סוג, שם ואילוץ מוגדרים הנאכפים על ידי מנוע מסד הנתונים, לרשומות VSAM אין מבנה המתאר את עצמו. הפריסה קיימת כולה בערך COBOL FD, וערכי FD הם לעתים רחוקות פשוטים.

רשומות FD וחברי COPY

מבנה הרשומה של מערך נתונים של VSAM מוגדר בערך FILE DESCRIPTION (FD) ב-COBOL DATA DIVISION. בבסיסי קוד מתוחזקים היטב, ערך ה-FD מפנה לחבר COPY, ספר עותקים משותף המגדיר את פריסת הרשומה ונכלל על ידי כל תוכנית שניגשת לערכת הנתונים:

קובול

       FILE SECTION.
       FD  CUSTOMER-FILE
           LABEL RECORDS ARE STANDARD
           RECORD CONTAINS 250 CHARACTERS.
       01  CUSTOMER-RECORD.
           COPY CUSTMSTR.

חבר ה-COPY CUSTMSTR מגדיר את פריסת השדה בפועל. אם 47 תוכניות כוללות CUSTMSTR, אז 47 תוכניות חולקות תלות על פריסת הרשומה שהיא מגדירה. שינוי שם של שדה ב CUSTMSTR משפיע על כל 47. זוהי בעיית צימוד ספרי העותקים המיושמת על נתונים: פריסת רשומת VSAM היא תלות משותפת שלא יכולה להשתנות מבלי לתאם כל תוכנית המשתמשת בה.

לצורך ניתוח הגירה, יש לאתר כל ערך FD לפנקס העותקים שלו, וכל פנקס עותקים יש למפות לכל תוכנית הכוללת אותו. גרף התלות של הפריסה המשותפת הוא הבסיס להבנת היקף ההגירה.

מגדיר מחדש: פריסות מרובות, רשומה אחת

השמיים REDEFINES סעיף זה הוא המקום שבו ניתוח רשומת VSAM הופך למורכב באמת. REDEFINES מאפשר לפרשנויות שונות של שדות לכסות את אותו אחסון פיזי. רשומת VSAM המכילה קוד מסוג עסקה עשויה להשתמש ב-REDEFINES כדי לפרש את הבייטים הנותרים בצורה שונה בהתאם לקוד זה:

קובול

       01  TRANSACTION-RECORD.
           05  TXN-TYPE        PIC X(2).
           05  TXN-COMMON-DATA PIC X(48).
           05  TXN-DETAIL      REDEFINES TXN-COMMON-DATA.
               10  TXN-PAYMENT.
                   15  PAY-AMOUNT     PIC S9(11)V99 COMP-3.
                   15  PAY-CURRENCY   PIC X(3).
                   15  PAY-METHOD     PIC X(2).
                   15  FILLER         PIC X(28).
           05  TXN-WITHDRAWAL  REDEFINES TXN-COMMON-DATA.
               10  WDR-AMOUNT     PIC S9(11)V99 COMP-3.
               10  WDR-ACCOUNT    PIC 9(12).
               10  WDR-BRANCH     PIC 9(5).
               10  FILLER         PIC X(18).

לרשומה זו אין פריסה אחת אלא שלוש, תלוי ב TXN-TYPEבסכימת היעד הרלציונית, זה בדרך כלל דורש עיצוב טבלה פולימורפי (טבלה רחבה אחת עם עמודות ניתנות לאפס עבור כל גרסה), עיצוב מנורמל (שורת אב ועוד שורות צאצא ספציפיות לסוג), או עמודת JSON המכילה את נתוני הגרסה. אף אחת מההחלטות הללו לא יכולה להתקבל מבלי לנתח מה... TXN-TYPE ערכים קיימים בנתונים ואילו גרסאות REDEFINES נמצאות בפועל בשימוש.

ניתוח מקיף של פריסת הרשומה חייב:

  • זהה כל היררכיית REDEFINES בכל ערך FD
  • קבע איזו גרסת REDEFINES פעילה תחת אילו תנאים (דורש ניתוח לוגיקת תוכנית, לא רק ניתוח FD)
  • תעד את סוגי השדות, האורכים ודיוק ה-packed-decimal עבור כל וריאנט
  • המלץ על אסטרטגיית הנורמליזציה המתאימה לסכימת היעד

COMP-3 ודיוק מספרי

COBOL PIC S9(11)V99 COMP-3 ל- (עשרוני ארוז) יש מאפייני דיוק וקנה מידה ספציפיים שאין להם מקבילה ישירה בסוגי נתונים סטנדרטיים של SQL. V מציין נקודה עשרונית משתמעת, הערך מאוחסן כמספר שלם עם קנה מידה משתמע של 2 ספרות עשרוניות. COMP-3 אורז שתי ספרות עשרוניות לכל בייט, כאשר חצי הבייט האחרון מכיל את הסימן.

כאשר שדה זה מועבר למסד נתונים יחסי, יעד ה-SQL הנכון הוא DECIMAL(13, 2), לא FLOAT, אשר יכניס שגיאות עיגול, ולא INTEGER, אשר יאבד את המקומות העשרוניים. עבור מערכות פיננסיות שבהן שדות COMP-3 מכילים סכומים כספיים, דרישת הדיוק אינה ניתנת למשא ומתן. הגירה שממירה PIC S9(11)V99 COMP-3 לסוג נקודה צפה בסכימת היעד מציג שגיאות עיגול המצטברות לאורך ריצות אצווה ועשויות להשפיע על דיווח רגולטורי.

כל שדה COMP-3 בכל ערך FD חייב להיות מתועד בדיוק, קנה מידה ומוסכמה של סימנים לפני תחילת תכנון סכימת היעד.

ניתוח דפוסי גישה של VSAM ב-COBOL Source

ערך ה-FD מתאר מה נמצא ברשומה. ערך COBOL PROCEDURE DIVISION מתאר כיצד התוכנית משתמשת בו. שניהם נדרשים לניתוח מבני מלא. ניתוח דפוסי הגישה בוחן כל פועל גישה לקבצים בכל תוכנית הנוגעת במערך הנתונים.

סעיף SELECT: אות ראשון

משפט ה-SELECT ב-ENVIRONMENT DIVISION קובע כיצד תוכנית COBOL תיגש לקובץ VSAM:

קובול

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT CUSTOMER-FILE
               ASSIGN TO CUSTFILE
               ORGANIZATION IS INDEXED
               ACCESS MODE IS DYNAMIC
               RECORD KEY IS CUST-PRIME-KEY
               ALTERNATE RECORD KEY IS CUST-ALT-KEY
                   WITH DUPLICATES
               FILE STATUS IS WS-CUST-STATUS.

משפט SELECT זה מגלה:

  • ORGANIZATION IS INDEXED → KSDS
  • ACCESS MODE IS DYNAMIC → התוכנית משתמשת גם בגישה סדרתית וגם בגישה אקראית
  • ALTERNATE RECORD KEY IS CUST-ALT-KEY WITH DUPLICATES → קיים אינדקס חלופי ותוכנית זו משתמשת בו

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

פעלים גישה והשלכותיהם על נדידתם

כל פועל גישה לקבצים חושף מימד שונה של האופן שבו התוכנית מקיימת אינטראקציה עם מערך הנתונים VSAM:

קריאה (ישירה): READ CUSTOMER-FILE KEY IS WS-CUST-KEY, חיפוש מפתח ישיר. ממפה אל SELECT ... WHERE primary_key = ?רוב תוכניות KSDS משתמשות בתבנית זו; היא מתורגמת ישירות לחיפוש אינדקס יחסי.

קריאה (רציפה): READ CUSTOMER-FILE NEXT RECORD, סריקה סדרתית מהמיקום הנוכחי. ממפה אל SELECT ... ORDER BY primary_key עם מיקום הסמן. תלות הסדר המרומזת, תוכניות המסתמכות על סדר המפתחות הטבעי של VSAM לעיבוד סדרתי, חייבות להישמר במפורש ביעד.

הַתחָלָה: START CUSTOMER-FILE KEY >= WS-SEARCH-KEY אחריו READ NEXT, סריקת טווח ממיקום מפתח חלקי. ממפה לשאילתת טווח: SELECT ... WHERE primary_key >= ? ORDER BY primary_keyתוכניות המשתמשות ב-START קובעות גבול תחתון לסריקה סדרתית; זוהי תבנית גישה קריטית עבור קבצי KSDS שאין לה מקבילה פשוטה אלא אם כן לטבלת היעד יש את אותו סדר מפתחות.

לִכתוֹב: מוסיף רשומה חדשה לפי מפתח. ממפה אל INSERT INTOאם לקובץ VSAM יש אינדקסים חלופיים, הכתיבה חייבת לשמור על עקביות עם אינדקסים אלה, ב-VSAM, זה אוטומטי; במסד נתונים יחסי, זה דורש טריגר של מסד נתונים או קוד ברמת היישום כדי לתחזק טבלאות אינדקסים משניות מקבילות.

לִכתוֹב מִחָדָשׁ: מעדכן רשומה במקום. הרשומה חייבת להיות מוחזקת כעת (לאחר קריאה עם כוונת החזקה). ממפה אל UPDATE ... WHERE primary_key = ?REWRITE הוא תבנית קריאה-שינוי-כתיבה; ההעברה חייבת לשמור על שלמות טרנזקציות לאורך הקריאה והכתיבה.

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

שימוש חלופי באינדקס: התלות הנסתרת

אינדקסים חלופיים בקבצי KSDS הם אחת התלות הנפוצות ביותר בהעברת VSAM. אינדקס חלופי מאפשר לתוכנית לגשת ל-KSDS באמצעות שדה שאינו המפתח הראשי. האינדקס החלופי הוא בעצמו מערך נתונים נפרד של VSAM (PATH) שיש לתחזק אותו בסנכרון עם אשכול הבסיס.

תוכנית שניגשת אל CUSTOMER-FILE דרך המפתח החלופי שלו CUST-ALT-KEY יש תלות שאינה נראית אם מנתחים רק את ערך FD של אשכול הבסיס. ההגירה חייבת:

  1. זהה אילו תוכניות משתמשות באילו מפתחות חלופיים (גלוי בפסקת SELECT) ALTERNATE RECORD KEY הצהרות)
  2. מיפוי כל מפתח חלופי לאינדקס SQL המקביל בטבלת היעד
  3. ודא שפעולות INSERT ו-DELETE בטבלת היעד שומרות על המקבילה של האינדקס החלופי באופן אוטומטי, בדרך כלל באמצעות אינדקסים ייחודיים או לא ייחודיים של SQL שמנוע מסד הנתונים מתחזק באופן שקוף.

הניתוח חייב למנות כל אינדקס חלופי עבור כל מערך נתונים של KSDS ולמפות כל אחד לתוכניות הצורכות אותו.

בעיית מערך הנתונים המשותף: חוזי נתונים מרומזים

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

לתלות של מערך הנתונים המשותף יש שני ממדים:

יחסי יצרן-צרכן. תוכנית A כותבת רשומות שתוכנית B קוראת. פריסת הרשומות, ערכי המפתח והסדר שתוכנית A מייצרת חייבים להתאים בדיוק למה שתוכנית B מצפה לצרוך. אם A ו-B מועברים באופן עצמאי לסכמות יעד שונות מבלי לתאם את חוזה הנתונים המשותף, התוצאה היא השחתת נתונים שקטה: הקריאות של B מצליחות מול מסד הנתונים של היעד אך מחזירות נתונים בפורמט שהלוגיקה של B אינה מטפלת בו כראוי.

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

ניתוח מלא של מערך נתונים משותף חייב:

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

ניתוח זה אינו יכול להתבצע על ידי בחינת תוכנית בודדת בנפרד. הוא דורש ניתוח מבני חוצה תוכניות וחוצה JCL.

תוצרי טרום-הגירה: מה הניתוח חייב להניב

ניתוח מבני של VSAM, המספיק לתכנון מודרניזציה של נתונים, מייצר שישה תוצרים:

תוצר 1: מלאי מערך נתונים של VSAM

כל מערך נתונים של VSAM בסביבה, עם: ארגון מערך הנתונים (KSDS/ESDS/RRDS/LDS), אורך רשומות ממוצע ומקסימלי, ספירת רשומות משוערת (מפרמטרי JCL SPACE או ערכי קטלוג), מבנה מפתחות (היסט מפתח ראשי, אורך; מבני מפתח חלופיים), והאם למערך הנתונים יש אינדקסים חלופיים.

תוצר 2: קטלוג פריסת רשומות

עבור כל מערך נתונים, כל ערך FD וספרי העותקים שהוא מפנה אליהם, עם: כל הגדרות השדות כולל היררכיות REDEFINES, כל שדה COMP-3 עם הדיוק והקנה מידה המדויקים שלו, כל שדה בינארי (COMP/COMP-5) עם אורך הבייט שלו, כל אלמנט באורך משתנה (OCCURS DEPENDING ON עם שדה השליטה שלו), וכל וריאנט מותנה או פריסה המשתמע מ-REDEFINES.

תוצר 3: סיווג דפוסי גישה לפי תוכנית

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

תוצר 4: מפת מערכי נתונים משותפים

גרף מכוון שבו צמתים הם מערכי נתונים ותוכניות VSAM, וקצוות מייצגים יחסי גישה עם הסוג שלהם (קריאה/כתיבה). הגרף מציג כל יצרן, כל צרכן, זוגות יצרן-צרכן, ואת הקשר רצף משימות JCL עבור כל גישה.

תוצר 5: המלצות לסכמת יעד

עבור כל מערך נתונים של VSAM, ארכיטקטורת היעד המומלצת המבוססת על הארגון ודפוסי הגישה שלו:

סוג VSAMדפוס גישה ראשייעד מומלץ
KSDS, גישה ישירה עם מפתח בלבדחיפושי נקודות לפי מפתח ראשיטבלה רלציונית, מאונדקסת
KSDS, עם התחל/קרא הבאסריקות טווח לפי סדר מפתחטבלה רלציונית עם אינדקס מקובץ
KSDS עם אינדקסים חלופייםגישה מרובה-נתיבים למפתחותטבלה רלציונית עם אינדקסים מרובים
ESDS, תוספת בלבדהוספה סדרתית, ללא מפתחטבלה, זרם אירועים או יומן להוספה בלבד
ESDS, עם גישה ל-RBAמיקום היסט בייטאחסון אובייקטים עם אינדקס מטא-נתונים
RRDSגישה למספר רשומהטבלה רלציונית עם עמודת רצף
KSDS גדול (אנליטיקה בכמות גדולה)סריקות רציפות מלאותאחסון עמודתי או אגם נתונים
LDSפורמט פנימי מנוהל על ידי אפליקציהדורש ניתוח של שכבת האפליקציה

תוצר 6: רישום שדות רגישים לדיוק

כל שדה COMP-3, COMP, COMP-5 ושדה נקודה צפה בכל מערך נתונים, עם הגדרת COBOL שלו, מיפוי סוג נתוני SQL הנכון ודגל עבור כל שדה שבו המיפוי דורש אימות מדויק לפני ואחרי ההעברה.

מה מייחד ניתוח VSAM מניתוח סכמות יחסיות

צוותים בעלי ניסיון בנדידה בין מסדי נתונים רלציוניים לעיתים ממעיטים בערכת ניתוח VSAM משום שהם מיישמים את המודל המנטלי של נדידת סכימה: חילוץ ה-DDL, עיצוב מחדש של הסכימה, נדידת הנתונים. ל-VSAM אין DDL במובן של מסד נתונים. הסכימה מפוזרת על פני קוד המקור, בערכי FD, במחברות עותקים, בפסקאות SELECT, ובלוגיקת PROCEDURE DIVISION שקובעת איזו גרסה של REDEFINES פעילה עבור כל רשומה נתונה.

שלושה מאפיינים הופכים את ניתוח VSAM לשונה מבחינה מבנית:

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

דפוסי גישה הם מרומזים בהתנהגות התוכנית. מסד נתונים יחסי חושף דפוסי שאילתה באמצעות תוכניות EXPLAIN ויומני שאילתה. דפוסי גישה מסוג VSAM גלויים רק ב-Procedure Division של התוכניות הניגשות לקובץ. הבנת האם תוכנית תלויה בסדר מפתחות, גישה לאינדקס חלופי או סריקת טווחים דורשת ניתוח קוד.

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

איך SMART TS XL מבצע ניתוח מבני של VSAM

SMART TS XL"S ניתוח קוד סטטי מנתח כל אלמנט במבנה VSAM שקיים במקור COBOL: ערכי FD, הרחבות איברים של COPY, הצהרות משפט SELECT (ארגון, מצב גישה, מפרטי מפתח ראשי וחלופי), וכל פועל גישה לקבצים ב- PROCEDURE DIVISION. עבור כל מערך נתונים של VSAM, הניתוח מייצר את סיווג דפוס הגישה, את פריסת הרשומות עם רזולוציית REDEFINES מלאה, ואת רישום השדות COMP-3 עם מטא-נתונים מדויקים.

מיפוי תלות האפליקציה בונה את מפת מערך הנתונים המשותף: כל תוכנית שניגשת לכל מערך נתונים של VSAM, מסווגת לפי סוג גישה, כאשר יחסי יצרן-צרכן מזוהים וגרף שיתוף ספר העותקים נפתר. כאשר 47 תוכניות חולקות ספר עותקים המגדיר פריסת רשומת VSAM, מפת התלות הופכת את כל 47 התוכניות לגלויות לפני קבלת כל החלטת הגירה, לא לאחר ששינוי פריסה שבר 47 תוכניות בדרכים בלתי צפויות.

יכולת ההרחבה של JCL מספקת את ההקשר התפעולי: אילו שלבי משימת JCL מפנים לאילו מערכי נתונים של VSAM במשפטי ה-DD שלהם, באיזה רצף, באילו זרמי משימות. יחסי היצרן-צרכן הקיימים ברמת משימת JCL, שבה שלב 1 כותב למערך נתונים של VSAM ששלב 3 קורא, גלויים בניתוח התלות של JCL, מה שמאפשר רצף הגירה ששומר על התלות של סדר התפעול שאוכף לוח הזמנים של האצווה.

יכולת ניתוח ההשפעה עונה על השאלה שלפני כל החלטה של ​​הגירת VSAM: אם הפריסה של מערך הנתונים הזה משתנה, אילו תוכניות מושפעות? היקף ההשפעה, כל תוכנית שחולקת את ספר העותקים הרלוונטי, כל שלב ב-JCL שמפנה לערכת הנתונים, נספר לפני תחילת כל עבודת הגירה, ומספק את הבסיס לתכנון הגירה מתואם במקום לגלות תוכניות מושפעות, תוכנית פגומה אחת בכל פעם.

יכולת החיפוש הארגוני הופכת את מלאי ה-VSAM המלא לניתן לשאילתה לאורך תוכנית המודרניזציה: מצא כל תוכנית שניגשת למערכת נתונים ספציפית של VSAM, כל ספר עותקים המגדיר פריסת רשומה ספציפית, כל תוכנית המשתמשת בתבניות START/READ NEXT (המצביעות על תלויות סדר), כל שדה המוגדר כ-COMP-3 (הדורש מיפוי יעד מודע לדיוק), תוך שניות, על פני מיליוני שורות של COBOL.

כפי שתואר בהקשר של העברת מבני נתונים של IMS ו-VSAM לצד תוכניות COBOL, העברת נתונים וניתוח קוד חייבים להתקיים במקביל. SMART TS XLניתוח המבנה של VSAM מספק את המלאי שהופך את ההקבלה הזו לניתנת לניהול, את פריסות הרשומות המשותפות, את דפוסי הגישה ואת יחסי היצרן-צרכן שקובעים האם העברת נתונים יכולה להתקדם באופן עצמאי או שיש לתאם אותה עם שינויים בתוכנית.

המבנה שאתה מבין הוא המבנה שאתה יכול להגר אליו

ניתוח מבנה הקבצים של VSAM אינו תקורה בתוכנית מודרניזציה. זהו הבסיס לקבלת ההחלטות. לא ניתן לתכנן את סכימת היעד מבלי להכיר את גרסאות פריסת הרשומות. לא ניתן לרצף את ההעברה מבלי להכיר את יחסי היצרן-צרכן. לא ניתן לשמר את הדיוק של שדות COMP-3 מבלי לדעת אילו שדות דורשים סוגי יעד בעלי מודעות עשרוניים.

כל תוכנית מודרניזציה שמדלגת על ניתוח זה מגלה מה החמיצה במהלך ביצוע ההגירה, כאשר וריאנט REDEFINES שלא נותח מייצר רשומות פגומות ביעד, כאשר מערך נתונים משותף מועבר ללא תיאום כל הצרכנים שלו, כאשר סריקת טווחים שהסתמכה על החזרות סדר המפתח של VSAM מביאה לסדר לא מוגדר מטבלת יעד שלא תוכננה עם אינדקס מקובץ. גילויים אלה במהלך הביצוע עולים כפולות ממה שהניתוח היה עולה במהלך התכנון.

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