ذكاء تحديث COBOL
تفشل معظم مشاريع التحديث لأن الأدوات تقرأ الشيفرة كنص، لا كطوبولوجيا. يحلّل CodeGraph منظومة الحاسوب المركزي لديك إلى رسم بياني معرفي مُصنَّف الأنواع ويحلّ الإغلاق الانتقالي الكامل لتبعيات أي تغيير، عبر copybooks وREDEFINES وCOMP-3 وDB2 وJCL، مع مصدر file:line لكل حافة وإثبات لمدى ما استطاع حلّه. الخريطة هي المنتج. الترجمة حالة استخدام لاحقة.
9/9 مقابل 3/9
التبعيات المستعادة: الرسم البياني مقابل نافذة الملف الواحد
على تركيبة TRN-LIMIT، مقابل مجموعة حقيقة مرجعية معروفة
97.1%
مراجع محلولة (33 of 34)، 1 مُعلَّم للمراجعة
بوابة اكتمال حتمية، النتيجة نفسها في كل تشغيل
47 / 70
عُقَد وحواف عبر 7 أنواع عُقَد
تركيبة البنك الاصطناعية المُرفقة
هذا عرض تجريبي قابل للتشغيل. المنظومة اصطناعية ومُؤلَّفة للعرض، والرسم البياني في الذاكرة مع SQLite، وعروض DB2 وJCL والملف الواحد الساذج هي ملفات تركيبة ومحاكاة، وليست موصلات حية.
نمط الفشل هو العمى السياقي، ونموذج أكبر لا يزيله.
70 to 80% من مشاريع تحديث الحاسوب المركزي تفشل في بلوغ أهدافها (تحليل تلوي صناعي، 2025). ليس لأن الترجمة خاطئة، بل لأن الأدوات تعامل الشيفرة كنص بدل الطوبولوجيا. مترجم سلعي يقرأ الملف الواحد الذي يراه. والحقيقة التي تهم فعلاً غير مرئية في نافذة سياق ملف واحد.
الرهان ليس أكاديمياً. نحو 220 billion سطر من COBOL ما زالت تعمل في الإنتاج، وتحمل نحو 95% من معاملات أجهزة الصراف، و43% من أنظمة المصارف، و3 trillion دولار من النشاط يومياً (Reuters، 2017)، مقابل تقدير 1.52 trillion دولار من الدين التقني المتراكم في الولايات المتحدة (CISQ، 2022). هذا قلب رزمة المصارف والتأمين، وهو بالضبط الشيفرة التي لا يريد أحد لمسها على عمى.
المثل الملموس برنامج تحويل برقي يحسب على حقل اسمه TRN-LIMIT. في الملف الواحد الذي يراه المترجم، تبدو العملية الحسابية تافهة. لكن TRN-LIMIT عشري محزوم COMP-3 معرَّف على بُعد ثلاثة copybooks، وتفسيره يختاره عَلَم مضبوط في برنامج مختلف، وذلك العَلَم يكتبه عمل دفعي JCL في 2 a.m. يعمل قبل مهمة التحويل. إذا أُعطي النموذج الحقائق الظاهرة فقط، يُصدر long عادياً، وتُصرَّف Java وتجتاز اختبارات الوحدة، ثم تُفسد قاعدة البيانات عند أول تحويل برقي حي. يظهر فشل سلامة المرجعية في UAT. الفشل كان عمىً سياقياً.
هذا لا يتقادم مع تحسّن النماذج. منظومة حقيقية من 1 to 10 million سطر أو أكثر ولا تتسع لأي نافذة سياق، حاضرة أو مستقبلية. الجزء الصعب هو استرجاع الشريحة الانتقالية الدقيقة التي يلمسها التغيير وإثبات أنك وجدت كلها. هذه مشكلة طوبولوجيا واسترجاع وأدلة، لا مشكلة جودة استدلال. الوكلاء ينصحون، والشيفرة تقرر.
حلّل المنظومة إلى رسم بياني مُصنَّف الأنواع، ثم شغّل تحليلات حتمية. لا يوجد LLM في المسار الحرج.
يعمل خط المعالجة: تركيبة المنظومة، ثم التحليل (COBOL وcopybooks وJCL وDB2 DDL)، ثم بناء رسم بياني معرفي مُصنَّف الأنواع، ثم أثر الإغلاق الانتقالي مع المصدر، ثم التحليلات الحتمية، ثم تصدير التدقيق والأدلة، ثم لوحة المعلومات التفاعلية. عند التحميل يشغّل التطبيق هذا حياً عبر Server-Sent Events، فتسرد كل مرحلة بزمن استجابتها المقاس فعلياً في وحدة تحكم، وتمتلئ اللوحات تدريجياً، ويتيح شريط مراحل ثابت فتح أثر Input وProcessing وOutput لأي مرحلة. عنصر تحكم واحد يعيد تشغيل الدورة كلها.
مبني بـ networkx ومُحتفظ به في الذاكرة مع SQLite، للرسم البياني سبعة أنواع عُقَد (program وcopybook وvariable وtable وjcl وdataset ونقطة غير محلولة) وحواف مُصنَّفة مثل DEFINES وIMPORTS وREDEFINES وCONTROLS_TYPE_OF وWRITES_VAR وREFERENCES وCALLS وREADS وWRITES وEXECUTES وUSES_DATASET وPRECEDES. على التركيبة المُرفقة للرسم البياني 47 عقدة و70 حافة: 14 programs و5 copybooks و17 متغيراً و3 جداول DB2 و3 مهام JCL و4 datasets وعقدة واحدة غير محلولة.
هذه خوارزميات رسم بياني صرفة، لا استدعاءات نموذج، لذا تعطي التركيبة نفسها النتيجة نفسها في كل تشغيل.
الشريحة الانتقالية لتبعيات أي تغيير، وكل حافة تحمل مصدر file:line الخاص بها، فترى ليس فقط ما يتأثر بل أين يعيش الدليل.
يُقاس معدل استرجاع إغلاق الرسم البياني مقابل مجموعة التبعيات ذات الحقيقة المرجعية المعروفة للتركيبة، مقابل نافذة ملف واحد محاكاة، وهي ما تغذي به أداة نصية النموذج فعلاً.
درجة اقتران ونصف قطر أثر لكل برنامج (الاقتران بوزن ثلاثة، فخاخ COMP-3 بوزن اثنين، حرجية JCL بوزن اثنين، الاستدعاءات غير المحلولة بوزن خمسة) ترتّب أمراً آمناً للترحيل بأسلوب شجرة التين الخانقة.
كل PERFORM وCALL وCOPY ومرجع DB2 يجب أن يُحل أو يُعلَّم كـ needs review، ولا يُسقَط بصمت أبداً. الفقرات غير القابلة للوصول تُبلَّغ كإيضاح، لا تُحتسب مقياساً رئيسياً.
مفتاح تبديل واحد يجعل الفرق محسوساً. فعّل عرض سياق الذكاء الاصطناعي الساذج فيخفت الرسم البياني إلى ملف المصدر الواحد مع بضعة أسطر سياق. ست من تسع حقائق التحويل البرقي تختفي، ولافتة حمراء تذكر العاقبة، والعودة تعيد 9/9 مع الإيصالات. ذلك التبديل إيضاح لما يجب أن توفّره طبقة الاسترجاع من سياق، لا مصدر القيمة.
عند الانتهاء، Export JSON يكتب ملف migration-evidence.json، وEvidence report يعرض تقريراً قابلاً للطباعة بعنوان Codebase Topology and Completeness Report: ملخص العُقَد والحواف، والإغلاقات لكل وحدة مع مصدر file:line، ونتيجة معدل الاسترجاع والطريقة، وتسلسل الاستخراج المرتَّب، وقائمة الشيفرة الميتة، وطابع زمني. نضعه كجرد أصول تكنولوجيا المعلومات والاتصالات وفق DORA وإيصال ضبط تغيير وفق SOC-2. طبقة Pydantic-AI اختيارية يمكنها الإجابة عن أسئلة على الإغلاق، لكنها متوقفة افتراضياً ومقيَّدة بمفتاح، والعرض الحتمي يسجّل النتيجة دون أي مفتاح.
تغيير واحد على حقل واحد، محلول مقابل مجموعة حقيقة مرجعية معروفة. كل صورة أدناه لقطة شاشة من التطبيق وهو يعمل.
العرض الافتراضي يهبط على منظومة التحويل البرقي مع اختيار TRN-LIMIT. لوحة الأثر تُظهر استرجاع الرسم البياني عند 9/9 (100%) مقابل سياق ملف واحد ساذج 3/9 (33%)، مقيساً مقابل مجموعة التبعيات ذات الحقيقة المرجعية المعروفة للتركيبة. ثلاث حقائق ظاهرة في الملف الواحد: WIRETXN يستخدم TRN-LIMIT في COMPUTE (WIRETXN.cbl:33)، وcopybook CBACCT مستورد بالاسم (WIRETXN.cbl:13)، ويحدث UPDATE على جدول DB2 ACCOUNTS (WIRETXN.cbl:37). والستّ التي تقرر الصحة ليست كذلك: TRN-LIMIT هو PIC S9(9)V99 COMP-3 عشري محزوم يجب أن يصبح BigDecimal لا long (CBACCT.cpy:11)، وTRN-LIMIT-ALPHA يعيد تعريفه بـ REDEFINES كنص فوق البايتات الستة نفسها (CBACCT.cpy:12)، وLIMIT-TYPE-FLAG يقرر أي تفسير حيّ (CBACCT.cpy:13)، وبرنامجان (LIMITSET وBATCHUPD) يكتبان ذلك العَلَم، ومهمة JCL المسماة NIGHTLY عند 02:00 تعمل قبل WIREJOB حتى يُضبط العَلَم قبل تشغيل التحويل.
فعّل عرض سياق الذكاء الاصطناعي الساذج فيخفت الرسم البياني إلى ما يعيش داخل WIRETXN.cbl. نوع COMP-3، وطبقة REDEFINES، والعَلَم المتحكّم، وكاتباه عبر الوحدات، وسلَف JCL عند 02:00 كلها تبهت، ولافتة حمراء تذكر العاقبة: إذا أُعطي النموذج الحقائق الثلاث الظاهرة فقط، يُصدر TRN_LIMIT من نوع long عادي ويكتب بايتات تالفة في ACCOUNTS.TRN_LIMIT، وهو فشل UAT. هذه فجوة العمى السياقي بعينها التي لا تستطيع أداة نافذة نصية إغلاقها هيكلياً، وقد صارت مرئية بنقرة واحدة.
عرض الاستخراج يرتّب البرامج الـ 14 كلها بدرجة اقتران ونصف قطر أثر. AUDITLOG هو الاستخراج الآمن الأول عند rank 1 بدرجة خطر 0 واقتران صفر. WIRETXN عند rank 11 (خطر 4، فخ COMP-3 واحد إضافة إلى حرجية JCL). DISPATCH في rank 12 (خطر 5) بسبب CALL ديناميكي غير محلول، وبرنامج الإله ACCTMGR يُستخرج أخيراً عند rank 14 (اقتران 5، خطر 15). هذا ترتيب شجرة التين الخانقة يمكنك الدفاع عنه، أدنى خطر أولاً وأعلى اقتران أخيراً.
تبويب التدقيق يبلّغ أن 97.1% من المراجع محلولة، أي 33 of 34، مع واحد بالضبط مُعلَّم للمراجعة ولم يُسقَط بصمت. ذلك الواحد هو CALL الديناميكي WS-PROGNAME لدى DISPATCH، الذي يُحسب هدفه وقت التشغيل (DISPATCH.cbl:15) فلا يمكن حلّه سكونياً. التبويب يسرد أيضاً الشيفرة الميتة حسب قابلية الوصول: فقرة LEGACY-FORMAT لدى AUDITLOG وفقرة OLD-LIMIT-CHECK لدى WIRETXN غير قابلتين للوصول. رفض تلفيق حل هو السلوك الصادق، وهو السلوك الذي يريد المنظّم أن يراه.
كل ما سبق يُصدَّر إلى تقرير قابل للطباعة بعنوان Codebase Topology and Completeness Report: ملخص 47-node و70-edge، وتغطية 97.1%، وحقائق تبعية TRN-LIMIT التسع مع ظهورها في الملف الواحد ومصدر file:line، وتسلسل الاستخراج المرتَّب، وطابع زمني للتوليد. لأن المنظومة اصطناعية ومُؤلَّفة، فمجموعة التبعيات الحقيقية معروفة بالبناء، وهذا ما يجعل رقم معدل الاسترجاع قياساً موسوماً قابلاً لإعادة الإنتاج لا ادّعاءً. ننسب 9/9 و3/9 و97.1% إلى هذه التركيبة المُرفقة، لا كضمان عالم مفتوح على منظومات COBOL اعتباطية.
التبديل نفسه الذي يقارن به العرض، جنباً إلى جنب، على تركيبة التحويل البرقي.
| البُعد | نافذة سياق الملف الواحد | الرسم البياني المعرفي لـ CodeGraph |
|---|---|---|
| تبعيات TRN-LIMIT المستعادة | 3 of 9 | 9 of 9، مقابل مجموعة حقيقة مرجعية معروفة |
| نوع COMP-3 عبر copybooks | غير مرئي | محلول مع مصدر file:line |
| طبقة REDEFINES والعَلَم المتحكّم | غير مرئي | محلول، بما في ذلك الكتّاب عبر الوحدات |
| حافة ترتيب JCL فقط (NIGHTLY قبل WIREJOB) | غير مرئي | مُنمذَج كحافة PRECEDES |
| إثبات الاكتمال | لا شيء | 97.1% محلول، غير المحلول مُعلَّم للمراجعة |
| ترتيب استخراج آمن | لا شيء | مرتَّب حسب الاقتران ونصف قطر الأثر |
| وثيقة التدقيق | لا شيء | تقرير طوبولوجيا واكتمال قابل للتصدير |
لا. CodeGraph طبقة الفهم لا مترجم، ويتعمّد ألا يلصق COBOL ويُصدر Java. يبني رسماً بيانياً مُصنَّف التبعيات لمنظومتك ويحلّ الشريحة الانتقالية الدقيقة التي يلمسها أي تغيير، مع مصدر file:line وإثبات اكتمال. الترجمة حالة استخدام لاحقة، وكل أداة ترجمة ما زالت تحتاج هذه الخريطة لتعرف ما يلمسه التغيير فعلاً.
لا، وهذه هي النقطة الدائمة. منظومة حقيقية من 1 to 10 million سطر أو أكثر ولا تتسع لأي نافذة سياق، حاضرة أو مستقبلية. الجزء الصعب هو استرجاع الشريحة الانتقالية الدقيقة وإثبات أنك وجدت كلها، وهي مشكلة طوبولوجيا واسترجاع وأدلة، لا مشكلة جودة استدلال. نموذج مثالي ما زال لا يستطيع أن يُثبت لمنظّم أي التبعيات استُرجعت، وما زال يحتاج ترتيب استخراج آمناً، وما زال مديناً بجرد أصول تكنولوجيا المعلومات والاتصالات.
بوابة الاكتمال تتطلب أن يُحل كل PERFORM وCALL وCOPY ومرجع DB2 أو يُعلَّم للمراجعة، ولا يُسقَط بصمت أبداً. على التركيبة المُرفقة ذلك 33 of 34 مرجعاً محلولاً، أي تغطية 97.1%، مع المرجع الواحد غير القابل للحل مُعلَّماً. يمكنك تصدير تقرير قابل للطباعة بعنوان Codebase Topology and Completeness Report مع ملخص العُقَد والحواف، والإغلاقات لكل وحدة مع مصدر file:line، ونتيجة معدل الاسترجاع والطريقة، وتسلسل الاستخراج المرتَّب، وقائمة الشيفرة الميتة، موضوعاً كجرد أصول تكنولوجيا المعلومات والاتصالات وفق DORA وإيصال ضبط تغيير وفق SOC-2.
تُعلَّم للمراجعة، لا تُسقَط بصمت، وسلوك الصدق هذا هو المقصد. على التركيبة المرجع الواحد غير القابل للحل هو CALL الديناميكي WS-PROGNAME لدى DISPATCH، الذي يُحسب هدفه وقت التشغيل (DISPATCH.cbl:15)، فلا يمكن حلّه سكونياً. CodeGraph يسجّله كـ needs review ويرتّب DISPATCH قرب نهاية ترتيب الاستخراج الآمن لهذا السبب بالضبط.
ليس في هذا العرض التجريبي. الرسم البياني في الذاكرة مع SQLite، ومدخلات DB2 وJCL والمجدول ملفات تركيبة، بينما عرض الملف الواحد الساذج نافذة سياق محاكاة. نشراً إنتاجياً سيسمّي منصة رسم بياني مثل Neo4j أو Memgraph ويقرأ منظومتك الحقيقية، لكن لا شيء هنا يلمّح إلى خط z/OS حي. العرض يُثبت الآلية على منظومة اصطناعية، لا نشراً.
لا ندّعي التفوق على محلّل IBM أو مكامل أنظمة، ومحلّل العرض يغطي مجموعة جزئية اصطناعية واقعية من COBOL، لا كل لهجة أو ALTER أو OCCURS DEPENDING ON. التمييز في المُسلَّم: رسم بياني معرفي واعٍ بالمستودع مع إثبات اكتمال وترتيب استخراج آمن، لا ترجمة لكل ملف. إنها طبقة الفهم التي يحتاجها أي جهد ترجمة أولاً، وهي الطبقة التي لا يزيلها نموذج أساس أفضل.
إنه عرض تجريبي قابل للتشغيل يُثبت الآلية، لا خط معالجة منشور. منظومة البنك اصطناعية ومُؤلَّفة لهذا العرض، فمجموعة التبعيات الحقيقية معروفة بالبناء، وهذا ما يجعل مقياس معدل الاسترجاع قياساً موسوماً قابلاً لإعادة الإنتاج لا ادّعاءً. التحليل والرسم البياني والتحليلات الأربعة كلها بايثون صرف حتمي (FastAPI مع networkx وواجهة Cytoscape.js) يعمل بلا مفتاح API وبلا قاعدة بيانات. طبقة LLM اختيارية للإجابة عن الأسئلة موجودة لكنها متوقفة افتراضياً، والقيمة لا تعتمد عليها.
البحث وراء هذا العرض التجريبي — البنية، وتصميم التحقق، والمخطط المؤسسي.
الحل الكامل
استكشف حل تحديث COBOL القديم →طبقة الفهم هي الجزء الصعب. نبني الخريطة أولاً.
إذا كان فريقك يزن كيفية تحديث منظومة COBOL دون مفاجأة UAT من تبعية لم يستطع أحد رؤيتها، نود حقاً أن نسمع كيف تفكرون في الأمر. المشكلة على مستوى القطاع، والإجابات ستكون كذلك.