JCL- הסיפור מאחורי השפה שעדיין מריצה את העולם הפיננסי

פרק 1

אם יש טכנולוגיה אחת שמגלמת את עקשנות העבר בלב המערכות הפיננסיות של היום, זו JCL – Job Control Language. זו לא סתם שפה, זו מכונת זמן שמחברת אותנו ישירות לימים הראשונים של המחשוב במערכות הפיננסיות, ועדיין מנהלת טריליוני דולרים מדי יום.


הפיתוח הראשוני: כשמחשבים דיברו עם כרטיסי ניקוב 🤯

כדי להבין את JCL, צריך לחזור לשנות ה-60, עידן המיינפריים הענקיים, כשהמחשבים לא היו “אינטראקטיביים” במובן שאנחנו מכירים היום. לא היו מסכים או עכברים, ומתכנתים לא ישבו מול המחשב והריצו פקודות בזמן אמת. במקום זאת, הם היו מכינים “עבודות” (Jobs) – סדרות של הוראות ותוכניות – על כרטיסי ניקוב. כל כרטיס ניקב ייצג שורה של קוד, והחבילה כולה הוגשה למפעיל המחשב.

כאן נכנסה JCL לתמונה:

  • הצורך: נוצר צורך בשפה שתאפשר למתכנתים לתאר למערכת ההפעלה (IBM OS/360 בזמנו) מה בדיוק העבודה שלהם כוללת: אילו תוכניות להריץ, באילו נתונים להשתמש, לאן לשלוח את הפלט, ואיך לנהל את המשאבים.
  • העיצוב הראשוני (שנות ה-60): JCL תוכננה להיות שפה תמציתית וחד-משמעית. כל שורה ב-JCL מתחילה ב// כדי לסמן למערכת שזוהי פקודת שליטה ולא שורת קוד תוכנה רגילה. היא כללה פקודות מרכזיות כמו:
    • JOB: מזהה את העבודה ומפרט פרטים כמו שם העבודה, מי המשתמש, ודרישות משאבים.
    • EXEC: מורה למערכת להריץ שלב בודד בעבודה, בדרך כלל הרצת תוכנית (למשל, להריץ תוכנית COBOL).
    • DD (Data Definition): פקודה קריטית שמגדירה קבצים – מאיפה לקרוא נתונים (Input), ולאן לכתוב אותם (Output). זה כלל פרטים כמו שם הקובץ, סוג ההתקן (למשל, סרט מגנטי, דיסק), ופרמטרים לארגון הקובץ.

היופי (והמורכבות) של JCL הוא שהיא אפשרה דיוק ופירוט רב בשליטה על המשאבים, מה שהיה הכרחי בסביבה שבה משאבי מחשוב היו יקרים ומדודים בקפידה. כל פסיק, נקודה, ורווח היו קריטיים!


מה השתנה ומה נשאר: גשר בין עולמות 🌉

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

מה השתנה?

  • שיטות כתיבה והגשה: איש לא משתמש כיום בכרטיסי ניקוב. במקום זאת, מפתחי מיינפריים כותבים JCL במחשב שלהם ומגישים את העבודות באופן אלקטרוני. ההגשה למיינפריים השתנתה, אבל השפה היא אותה שפה, והקוד הוא אותו קוד.
  • הטמעת משתנים ופרוצדורות: לאורך השנים, JCL התפתחה וכללה יכולות מורכבות יותר כמו שימוש במשתנים (SYSPARM), קריאה לפרוצדורות שמכילות קטעי JCL נפוצים (PROCs), וכלי עזר נוספים שמפשטים את הכתיבה ומפחיתים כפילויות.
  • הכלים מסביב: כיום קיימים כלי תוכנה (למשל, Workload Schedulers כמו CA-7, OPC/TWS) שמנהלים את הרצת ה-JCL בצורה אוטומטית, מתזמנים עבודות, ומתמודדים עם תלויות בין עבודות.

מה נשאר?

  • הפורמט הבסיסי: הפקודות המרכזיות (JOB, EXEC, DD) נשארו כמעט זהות, והתחביר הכללי (עם // בתחילת השורה, סימוני נקודתיים, פסיקים וכו’) נשמר. מתכנת JCL משנות ה-60 היה מזהה בקלות Job חדש היום.
  • הפילוסופיה: JCL עדיין משמשת ל"הגדרת עבודות אצווה" (Batch Jobs) – תהליכים שרצים באופן אוטומטי ללא התערבות אדם, בדרך כלל בלילה או מחוץ לשעות הפעילות. רוב המערכות הפיננסיות מבצעות סליקת כרטיסי אשראי, חישובי ריבית, הפקת דוחות חודשיים, ופעולות קריטיות אחרות באמצעות אלפי ואף מיליוני שורות JCL.
  • החשיבות הקריטית: למרות שהיא נראית ארכאית, JCL היא ה"דבק" שמחבר את תוכניות ה-COBOL עם הנתונים, המשאבים, והמערכות השונות במיינפריים. כל פעולה פיננסית מורכבת – מחישוב משכורות ענק ועד העברות בנקאיות בסוף יום – מבוצעת על ידי סקריפטים של JCL שמריצים תוכניות קיימות.
  • האתגר: מתכנתי JCL נדרשים להבנה עמוקה של מערכת ההפעלה של המיינפריים, מבנה קבצים, וניהול משאבים, מה שהופך אותה לשפה נישתית אך חיונית.

לסיכום, JCL היא לא רק שריד היסטורי; היא עמוד תווך חי ונושם של העולם הפיננסי המודרני. היא מוכיחה שלפעמים, הדרך הישנה והמוכחת היא גם הדרך האמינה והיעילה ביותר, גם בעולם שרץ קדימה במהירות מסחררת.