הפניה לניתוח של קובץ Copybook

‫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 הוא אורך השדה השני, שדה המחרוזת. יכול להיות שתצטרכו להוסיף קצת ריפוד לסוף הרשומה בהתאם לאורך הרשומה, כמו שמוצג באיור הבא.

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

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.

  • dataAlignedClause
  • dataBlankWhenZeroClause
  • dataCommonOwnLocalClause
  • dataIntegerStringClause
  • dataJustifiedClause
  • dataOccursClause
  • dataReceivedByClause
  • dataRecordAreaClause
  • dataRenamesClause
  • dataSignClause
  • dataSynchronizedClause
  • dataThreadLocalClause
  • dataTypeClause
  • dataTypeDefClause
  • dataUsingClause

סוגי הנתונים

סוגי נתונים של 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 תמיד מכילות רווחים.