Mainframe Connector תומך בשתי גרסאות של כלי הניתוח של copybook:
- כלי ניתוח מקורי של קובצי copybook: כלי הניתוח המקורי של קובצי copybook מבוסס על ANTLR4, תומך בקובצי copybook של COBOL והוא הגרסה המומלצת של כלי הניתוח.
- Legacy copybook parser: Legacy copybook parser היא גרסה ישנה יותר של הכלי לניתוח copybook, שתומכת בפורמטים מוגבלים מאוד של copybook.
אפשר להגדיר את מנתח התוכן שרוצים להשתמש בו על סמך קובץ ה-copybook. מידע נוסף על הגדרת מנתח התוכן שבו רוצים להשתמש זמין במאמר הגדרת מנתח תוכן של קובץ Copybook.
מנתח מקורי של קובץ העתקה
הגרסה העדכנית ביותר של כלי הניתוח היא Native copybook parser, והיא משמשת כברירת מחדל. מנתח ה-copybook המקורי מיישם מנתח מבוסס ANTLR4 ותומך ב-COBOL copybooks.
בקטע הזה מפורטות משימות העיבוד המקדים שמבצע מנתח ה-copybook המקורי. בנוסף, הוא מפרט את סוגי הנתונים שנתמכים על ידי כלי הניתוח המקורי של קובצי Copybook, ואת ההגבלות על השימוש בו.
עיבוד מקדים
לפני שמנתחים קובץ copybook, כלי הניתוח Native copybook מבצע עיבוד מקדים של הנתונים ומבצע את המשימות הבאות:
- הסרת שורות של הערות.
- פותר את הבעיה של המשך שורה.
- מרוקן את האזורים של מספרי השורות ואת האזורים של עמודה 73.
- שומר על הצהרות ספציפיות של מעבד מקדים כמו
EJECT,SPACEו-TITLE. השדות האלה מנותחים, אבל המערכת מתעלמת מהם. הכלי Native copybook parser לא תומך בספרי העתקה שמכילים פרמטרים של קדם-מעבד שאפשר להשתמש בהם ב-COPY REPLACING. בספרי ההעתקה האלה, המזהים מוקפים בנקודתיים (:).
סוגי נתונים נתמכים והגבלות
אלה סוגי הנתונים שנתמכים על ידי כלי הניתוח המקורי של קובץ ה-copybook וההגבלות על השימוש בו:
- אין תמיכה ברמה 66 (ALIAS) או ברמה 77 (STANDALONE).
- צריך להשתמש רק בשדות PICTURE. יש תמיכה בשדות PICTURE הבאים:
- Pic A, Pic, B, Pic G (DBCS), Pic N (national או DBCS), Pic U (UTF8), Pic X ו-zoned decimal (דיוק מקסימלי 38, קנה מידה מקסימלי 38)
- יש תמיכה ב-IBM Hexadecimal floating point (HFP).
- אין תמיכה ב-REDEFINES.
- צריך להשתמש רק בשדות COMP הבאים. אין תמיכה בפקודות ALIGN ו-OCCURS.
- COMP
- COMP4
- BINARY
- COMP3
- PACKED-DECIMAL
- יש תמיכה ב-DATE וב-TIMESTAMP.
- יש תמיכה במצייני ערך Null.
- השדות Double-byte character set (DBCS) Pic G ו-Pic N נתמכים וצריך להשתמש בהם במקום ב-Pic T, שהוצא משימוש. כדי להשתמש בשדה Pic N כ-DBCS בלי לציין את
USAGE DISPLAY-1, צריך להגדיר את משתנה הסביבהNSYMBOLל-DBCS. כברירת מחדל,NSYMBOLמוגדר כ-NATIONAL, כך ש-USAGE NATIONALמוגדר כ-Pic N fields שלא כוללים את הסעיףUSAGE. שימו לב שאפשר להגדיר אתNSYMBOLרק לערךNATIONALאוDBCS. - מותר להשתמש במחרוזות תווים באורך משתנה.
- יש תמיכה בפסוקית SIGN.
- צריך להצדיק את כל השדות ולהשתמש ברמת הזחה אחת.
- יש תמיכה בתגובות.
תמיכה בשדות של תאריך וחותמת זמן
Mainframe Connector תומך בהעברת נתונים של תאריכים וחותמות זמן אל BigQuery וממנו. כדי לעשות זאת, צריך להגדיר משתני סביבה שמתחילים במילה SUFFIX בפורמט הבא:
SUFFIX_SUFFIX_STRING="command --format FORMAT --timezone TIMEZONE"
בפירוט הבא מוסבר הפורמט:
-
SUFFIX_SUFFIX_STRING: משתנה הסביבה שבו אפשר להגדיר נתונים של תאריך וחותמת זמן. השם SUFFIX_STRING תואם לסיומות-SUFFIX_STRINGאו_SUFFIX_STRINGשצריך לפרש כתאריך או כחותמת זמן כשמשתמשים בהן כסיומת של שם שדה בקובץ copybook. מוודאים שהשם SUFFIX_STRING לא מכיל מקף או קו תחתון. -
command: הגדרת המפענח שצריך להשתמש בו כדי לנתח את השדה. הפקודות הנתמכות הןdate-converterו-timestamp-converter. -
--format: פרמטר שמגדיר את הפורמט של התאריך או חותמת הזמן. אפשר לציין עד חמישה פורמטים שונים שמופרדים באמצעות פסיקים. אם כמה פורמטים יכולים להתאים לקלט נתון, הפורמט הראשון שמתאים משמש לטעינה ל-BigQuery. אם מציינים כמה פורמטים לייצוא, המערכת משתמשת רק בפורמט הראשון. מידע נוסף על פורמטים תקינים זמין במאמר פורמטים נתמכים של תאריכים וחותמות זמן. -
--timezone: פרמטר אופציונלי לסוגTIMESTAMP. ברירת המחדל של אזור הזמן היא UTC. מידע נוסף על פורמטים נתמכים של אזורי זמן זמין במאמר פורמטים נתמכים של אזורי זמן. -
--omitsuffix(אופציונלי): אם מציינים את הפרמטר הזה, המערכת מסירה את-SUFFIX_STRINGאו_SUFFIX_STRINGמשם השדה שמופיע ב-BigQuery.
כדי להוסיף כתובת אימייל חלופית ל-SUFFIX_SUFFIX_STRING, אפשר להגדיר משתנה סביבה SUFFIX_SUFFIX_ALIAS=$SUFFIX_SUFFIX_STRING.
דוגמאות:
- אם מגדירים משתנה סביבה כ-
SUFFIX_DT8="date-converter --format yyyyMMdd", שדה עם הסיומת-DT8או_DT8יהיה שדה מסוגDATEב-BigQuery, והתבנית שלו תהיהyyyyMMdd. - אם מגדירים משתנה סביבה כ-
SUFFIX_DT10="date-converter --format MM-dd-yyyy", שדה עם הסיומת-DT10או_DT10יהיה שדה מסוגDATEב-BigQuery, והתבנית שלו תהיהMM-dd-yyyy. - אם מגדירים משתנה סביבה כ-
SUFFIX_DT="date-converter --format 'MM-dd-yyyy,MM/dd/yyyy'", שדה עם הסיומת-DTאו_DTיהיה שדה מסוגDATEב-BigQuery, והתבנית שלו תהיהMM-dd-yyyyאוMM/dd/yyyy. - אם מגדירים שני משתני סביבה בתור
SUFFIX_TIMESTAMP="timestamp-converter --format yyyy-MM-dd SUFFIX_TIMESTAMP=timestamp-converter --format 'yyyy-MM-dd HH.mm.ss.SSSSSS' --timezone America/New_York"ו-SUFFIX_TS=$SUFFIX_TIMESTAMP, שדה עם אחד מהסיומות הבאות:-TIMESTAMP,_TIMESTAMP,-TSאו_TSיהיה שדה מסוגTIMESTAMPב-BigQuery, והתבנית שלו תהיהyyyy-MM-dd HH:mm:ss.SSSSSSעם אזור זמןAmerica/New_York.
תמיכה במצייני ערך null
Mainframe Connector תומך במצייני null החל מגרסה 5.13.0. כדי להשתמש במשתני סביבה שמציינים ערכי null, צריך להגדיר אותם כך שיתחילו במילה SUFFIX בפורמט הבא:
SUFFIX_NULL_INDICATOR_NAME="command --null-value NULL_VALUE --not-null-value NOT_NULL_VALUE"
הערך NULL_INDICATOR_NAME תואם לסיומות -NULL_INDICATOR_NAME או _NULL_INDICATOR_NAME, שמפורשות כאינדיקטור של ערך null כשמשתמשים בהן כסיומת של שם שדה בקובץ copybook.
ברשימה הבאה מפורטים הפרמטרים שאפשר להשתמש בהם עם משתני הסביבה האלה:
-
command: הערך חייב להיותnull-indicator. -
–null-value: הערךnull indicatorמציין שהשדה שאליו יש הפניה הוא null. הערך של--null-valueחייב להיות מחרוזת או מספר עשרוני. -
–not-null-value: (אופציונלי) כשמציינים את הערך הזה, הערךnull indicatorמציין שהשדה שאליו יש הפניה הוא לא null. אם הפרמטר הזה לא מוגדר, המערכת מקבלת כל ערך שהוא לא–value-null. הערך של–not-null-valueחייב להיות מחרוזת או מספר עשרוני. -
–keep: (אופציונלי) אם מציינים את הערך הזה, השדה–keepנשמר כעמודה בפורמט הקובץ Optimized Row Columnar (ORC).null-indicatorכברירת מחדל, השדה הזה לא נשמר בפורמט ORC. -
-force-type: (אופציונלי) תומך בשתי אפשרויות –bytesו-binaryשמכריחות שדה לפענוח כבייטים או כבינארי, בהתאמה. כשמדובר בבייט, הערכים שלnullו-not-nullמבוטאים כ-HEX(לדוגמה,FA3AB5). יש קבועיםHIGHו-LOWששווים לכלFFאו לכל00. במקרה של בינארי, הערכים הם מספרים שלמים רגילים.
אם null-indicator לא מכיל שדה עם הפניה, Mainframe Connector מציג הודעת שגיאה ומפסיק לעבד את הקבצים.
דוגמאות:
קטע קוד של Copybook
10 COL1-NID1 PIC S9(4) USAGE COMP.
10 COL1 PIC S9(6) USAGE COMP.
10 FIELD PIC X(10).
10 FIELD-NID2 PIC X(1).
10 COL2 PIC X(10).
10 COL2-NULL PIC X(1).
הגדרה של משתני סביבה
SUFFIX_NID1="null-indicator --null-value -1 --not-null-value 0"
# Copybook fields with NID1 suffix null indicator configuration.
SUFFIX_NID2="null-indicator --null-value '?'"
# Copybook fields with NID2 suffix null indicator configuration.
SUFFIX_NULL="null-indicator --null-value '?' --keep"
# Copybook fields with NULL suffix null indicator configuration.
תמיכה בשדות DBCS
כשמשתמשים בשדות DBCS, חשוב לוודא את הפרטים הבאים:
- כשמשתמשים בשדות PIC G או Pic N DBCS, צריך לספק אחד מהקידודים הבאים של ערכות תווים מרובי-בייט (MBCS) בתוקף באפשרות
encodingאו במשתנה הסביבהENCODINGכשמשתמשים בפקודותgsutil cpאוbq export:- x-IBM930
- x-IBM933
- x-IBM935
- x-IBM937
- x-IBM939
- x-IBM942
- x-IBM942C
- x-IBM943
- x-IBM943C
- x-IBM949
- x-IBM949C
- x-IBM950
- x-IBM964
- x-IBM970
- x-IBM1364
- אם שדה בקובץ Copybook מכיל רק בייטים של DBCS, אבל הבייטים האלה לא מוקפים ב-shift-out (0x0E) וב-shift-in (0x0F), צריך להוסיף את הסיומת
_DBCSלשם השדה כדי לוודא שהבייטים האלה מפוענחים כבייטים של DBCS.
לדוגמה, אם הנתונים שמתאימים לשדה copybook 03 FLD01 PIC N USAGE DISPLAY-1 מכילים את הבייטים 0x43 ו-0xC5 בקידוד x-IBM930 שלא מוקפים ב-0x0E וב-0x0F, צריך לשנות את השם של שדה ה-copybook ל-03 FLD01-DBCS PIC N USAGE DISPLAY-1 כדי לפענח את נתוני ה-DBCS בצורה נכונה.
תמיכה במחרוזות תווים באורך משתנה
כלי הניתוח של קובצי העתקה מקוריים תומך בשדות הבאים של struct:
- 10 var
- 15 var-LEN PIC 9(4) USAGE COMP
- 15 var-TEXT PIC X(n)
השדה הראשון בשדה struct הוא אורך השדה השני, שדה המחרוזת. יכול להיות שתצטרכו להוסיף קצת ריפוד לסוף הרשומה בהתאם לאורך הרשומה, כמו שמוצג באיור הבא.
Mainframe Connector מסיר את הסיומת משם המשתנה לפני שמירת הנתונים ב-BigQuery. בדוגמה הזו, שם המשתנה יהיה var.
כדי להשתמש בשדות struct, צריך להגדיר את משתנה הסביבה BQSH_FEATURE_VARIABLE_LENGTH_ENABLED לערך yes או true.
כשמשתמשים בשדות struct, חשוב לוודא את הדברים הבאים:
- הסיומת של הפרמטר הראשון ב-
structהיא-LEN. אם רוצים להשתמש בסיומת אחרת, צריך להגדיר את משתנה הסביבהBQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIXלסיומת הרצויה. - הסיומת של הפרמטר השני ב-
structהיא-TEXT. אם רוצים להשתמש בסיומת אחרת, צריך להגדיר את משתנה הסביבהBQSH_FEATURE_VARIABLE_LENGTH_DATA_SUFFIXלסיומת הרצויה.
שדות ומבנים שלא נתמכים
בקטעים הבאים מתוארים שדות ומבנים שלא נתמכים על ידי
מבנים של COBOL
מבני COBOL, גם אם המבנים האלה לא נתמכים. אם משתמשים במבנים האלה בקובץ ה-copybook, מוצגת שגיאה ב-Mainframe Connector.
dataAlignedClausedataBlankWhenZeroClausedataCommonOwnLocalClausedataIntegerStringClausedataJustifiedClausedataOccursClausedataReceivedByClausedataRecordAreaClausedataRenamesClausedataSignClausedataSynchronizedClausedataThreadLocalClausedataTypeClausedataTypeDefClausedataUsingClause
סוגי הנתונים
סוגי נתונים של COBOL כמו COMP-1 ו-COMP-2 נתמכים.
כלי ניתוח של קובצי copybook מדור קודם
הכלי הישן לניתוח קובצי copybook הוא גרסה ישנה יותר של הכלי לניתוח קובצי copybook שתומכת בתכונות שאינן COBOL. אם אתם משתמשים ב-copybook מבוסס DSL, יכול להיות שעדיף להשתמש במנתח התוכן מדור קודם, כי מנתח התוכן המקורי של copybook עלול לגרום לשגיאות.
.אפשר להשתמש ב-DD של copybook עם ההגבלות הבאות:
- אין תמיכה ברמה 66 (ALIAS) או ברמה 77 (STANDALONE).
- אין תמיכה ב-REDEFINES.
- אין תמיכה בשורות של הערות.
- שדות באורך 10 שהשם שלהם מסתיים ב-DATE או ב-DT הם תאריכים. הפענוח של השדות האלה שונה.
- צריך להשתמש רק בשדות COMP הבאים. אין תמיכה בפקודות ALIGN ו-OCCURS.
- COMP
- COMP4
- BINARY
- COMP3
- PACKED-DECIMAL
- צריך להשתמש רק בשדות PICTURE. מגדירים שדות PICTURE באותה שורה, מיד אחרי שם השדה.
- חובה ליישר לשני הצדדים את כל השדות ולהשתמש ברמה אחת. אין תמיכה בתגובות.
- מוודאים שהעמודות 1 עד 6 תמיד מכילות רווחים.