لغة التحكم في العمل
لغة التحكم في المهام ( JCL ) هي لغة برمجة تُستخدم لكتابة البرامج النصية وتشغيل مهام الدفعات على حواسيب IBM المركزية . [ 1 ] يحدد كود JCL البرامج التي سيتم تشغيلها، والملفات والأجهزة المستخدمة للإدخال والإخراج. [ 2 ] كما يمكن أن توفر المعلمات في JCL معلومات محاسبية لتتبع الموارد التي تستخدمها المهمة، وتحديد الجهاز الذي يجب تشغيلها عليه.
يوجد نوعان رئيسيان يعتمدان على منصة التشغيل المضيفة وسلسلة الأنظمة المرتبطة بها. يتوفر أحد النوعين على سلسلة الأنظمة التي تبدأ بنظام DOS/360 وتتطور إلى z/VSE . أما النوع الآخر فيبدأ بنظام OS/360 ويستمر إلى z/OS ، ويتضمن امتدادات JES ولغة التحكم في إدخال المهام (JECL) . يتشارك النوعان في البنية الأساسية والمفاهيم، لكنهما يختلفان اختلافًا كبيرًا. [ 3 ] لا يحتوي نظام تشغيل الجهاز الظاهري على JCL بشكل مباشر؛ إذ يمتلك كل من مكوني CP وCMS لغات أوامر خاصة بهما .
بشكل عام، لغة التحكم في الوظائف هي أي لغة برمجة للتحكم في الوظائف ؛ وليس فقط لغة IBM الرئيسية. [ 4 ]
مصطلحات
تتضمن المصطلحات الخاصة بلغة JCL ما يلي:
- مجموعة البيانات
ملف، سواء كان مؤقتًا أو دائمًا؛ قد يكون موجودًا على محرك أقراص أو شريط تخزين أو جهاز آخر. [ 5 ] [ 6 ]
- مجموعة البيانات المقسمة (PDS)
مجموعة من الملفات؛ تُستخدم مجموعة البيانات المقسمة (PDS) عادةً لتخزين البيانات النصية مثل شفرة المصدر ، ووحدات الماكرو الخاصة بالمجمع (SYS1.MACLIB)، وإعدادات النظام (SYS1.PARMLIB)، وإجراءات JCL القابلة لإعادة الاستخدام (SYS1.PROCLIB)، وما إلى ذلك. تُشبه مجموعة البيانات المقسمة، كمجموعة من الملفات، ملف الأرشيف ( ZIP ، TAR ، إلخ)، والذي بدوره يُشبه دليل نظام الملفات . يمكن أن تحتوي مجموعة البيانات المقسمة على شفرة قابلة للتنفيذ (وحدات التحميل أو كائنات البرنامج)، مما يجعلها تُشبه مكتبة ثابتة قائمة على نظام يونكس . لا يمكن تحديث عنصر ما بمجرد تخزينه، على الرغم من إمكانية حذفه واستبداله، كما هو الحال عبر أداة IEBUPDTE . [ 7 ] منذ إصدار MVS DFP 3.2 عام 1989، أصبح الإصدار المُحسّن، مجموعة البيانات المقسمة الموسعة (PDSE)، مُتاحًا. [ 8 ]
- عضو
ملف (مجموعة بيانات) في مجموعة بيانات قابلة للتوزيع (PDS). يمكن الوصول إلى عنصر بتحديد اسم مجموعة البيانات القابلة للتوزيع متبوعًا باسم العنصر بين قوسين. على سبيل المثال، يمكن الإشارة إلى ماكرو النظام GETMAIN في SYS1.MACLIB على النحو التالي SYS1.MACLIB(GETMAIN): [ 7 ]
- خدمات نظام يونكس (USS)
بيئة يونكس متكاملة تعمل كجزء من برنامج التحكم الأساسي MVS. تتيح هذه البيئة تشغيل ملفات يونكس، والبرامج النصية، والمهام، والبرامج على حاسوب مركزي في بيئة يونكس متوافقة مع معيار POSIX دون الحاجة إلى المحاكاة الافتراضية.
تحفيز
في الأصل، كانت أنظمة الحواسيب المركزية مُصممة لمعالجة البيانات على دفعات . تتطلب العديد من مهام الدفعات إعدادًا مُسبقًا، مع متطلبات مُحددة للتخزين الرئيسي ، وأجهزة مُخصصة مثل الأشرطة المغناطيسية ، ووحدات التخزين الخاصة، والطابعات المُجهزة بنماذج خاصة. [ 9 ] طُوّرت لغة التحكم في المهام (JCL) كوسيلة لضمان توفر جميع الموارد المطلوبة قبل جدولة تشغيل المهمة. على سبيل المثال، تسمح العديد من الأنظمة، مثل لينكس، بتحديد مجموعات البيانات المطلوبة عبر سطر الأوامر ، وبالتالي يمكن استبدالها بواسطة الصدفة ، أو توليدها بواسطة البرنامج أثناء التشغيل.
في هذه الأنظمة، لا يملك مُجدول مهام نظام التشغيل إلا معلومات ضئيلة أو معدومة عن متطلبات المهمة. في المقابل، يُحدد JCL جميع مجموعات البيانات والأجهزة المطلوبة بشكل صريح. يستطيع المُجدول تخصيص الموارد مسبقًا قبل بدء تشغيل المهمة. هذا يُساعد على تجنب " التعطل "، حيث تحتفظ المهمة A بالمورد R1 وتطلب المورد R2، بينما تحتفظ المهمة B، التي تعمل في الوقت نفسه، بالمورد R2 وتطلب R1. في مثل هذه الحالات، يكون الحل الوحيد هو أن يُنهي مُشغل الحاسوب إحدى المهمتين، والتي يجب إعادة تشغيلها بعد ذلك. مع نظام التحكم في المهام، إذا تم جدولة تشغيل المهمة A، فلن تبدأ المهمة B حتى تُكمل المهمة A عملها أو تُحرر الموارد المطلوبة.
الميزات المشتركة بين DOS و OS JCL
الوظائف والخطوات والإجراءات
في كل من نظامي التشغيل DOS وOS، تُسمى وحدة العمل " المهمة" . تتكون المهمة من خطوة واحدة أو عدة خطوات، كل منها عبارة عن طلب لتشغيل برنامج محدد. على سبيل المثال، قبل ظهور قواعد البيانات العلائقية ، كانت مهمة إعداد تقرير مطبوع للإدارة تتألف من الخطوات التالية: برنامج يكتبه المستخدم لاختيار السجلات المناسبة ونسخها إلى ملف مؤقت ؛ فرز الملف المؤقت بالترتيب المطلوب، عادةً باستخدام أداة عامة؛ برنامج يكتبه المستخدم لعرض المعلومات بطريقة سهلة القراءة للمستخدمين النهائيين، مع تضمين معلومات مفيدة أخرى مثل المجاميع الفرعية؛ وبرنامج يكتبه المستخدم لتنسيق صفحات محددة من معلومات المستخدم النهائي لعرضها على شاشة أو طرفية.
في كل من JCL الخاص بنظامي DOS و OS، يجب أن تكون "البطاقة" الأولى هي بطاقة JOB، والتي: [ 10 ]
- يحدد الوظيفة.
- عادةً ما يوفر معلومات لتمكين قسم خدمات الحاسوب من إصدار الفواتير لقسم المستخدم المناسب.
- يحدد كيفية تشغيل المهمة ككل، على سبيل المثال أولويتها بالنسبة للمهام الأخرى في قائمة الانتظار.
الإجراءات (المعروفة اختصارًا بـ "procs ") هي عبارة عن تعليمات برمجية مكتوبة مسبقًا بلغة JCL، تُستخدم لتنفيذ خطوات أو مجموعات من الخطوات، وتُدرج في مهمة. يدعم كلا نوعي JCL هذه الإجراءات. تُستخدم الإجراءات لتكرار الخطوات التي تُستخدم عدة مرات في مهمة واحدة، أو في عدة مهام مختلفة. فهي توفر وقت المبرمج وتقلل من احتمالية حدوث الأخطاء. لتشغيل إجراء، يكفي تضمين "بطاقة" واحدة في ملف JCL، تقوم بنسخ الإجراء من ملف محدد، وإدراجه في مسار المهمة. كما يمكن أن تتضمن الإجراءات معلمات لتخصيص الإجراء لكل استخدام.
بناء الجملة الأساسي
يبلغ الحد الأقصى لطول السطر القابل للاستخدام في كل من نظامي DOS وOS JCL ثمانين حرفًا، وذلك لأن الطريقة الرئيسية لإدخال البيانات إلى نظام الحاسوب عند استخدام DOS/360 وOS/360 لأول مرة كانت البطاقات المثقبة ذات الثمانين عمودًا . [ 11 ] لاحقًا، أصبح من الممكن إرسال المهام عبر ملفات القرص أو الشريط ذات أطوال سجلات أطول، لكن مكونات إرسال المهام في نظام التشغيل كانت تتجاهل كل شيء بعد الحرف رقم 80.
من الناحية الفنية، تستخدم كلتا عائلتي أنظمة التشغيل 71 حرفًا فقط في كل سطر. عادةً ما تكون الأحرف من 73 إلى 80 أرقام تسلسل البطاقات التي يطبعها النظام في تقرير نهاية المهمة، وهي مفيدة لتحديد مواقع أي أخطاء أبلغ عنها نظام التشغيل. عادةً ما يُترك الحرف 72 فارغًا، ولكنه قد يحتوي على حرف غير فارغ للإشارة إلى أن عبارة JCL ستستمر في البطاقة التالية.
يجب أن تكون جميع الأوامر وأسماء المعلمات وقيمها بأحرف كبيرة، باستثناء أسماء ملفات نظام التشغيل الأمريكي (USS) .
يجب أن تبدأ جميع الأسطر، باستثناء المدخلات المضمنة (انظر أدناه)، بشرطة مائلة " /"، ويجب أن تبدأ جميع الأسطر التي يعالجها نظام التشغيل بشرطتين مائلتين //- دائمًا بدءًا من العمود الأول . ومع ذلك، هناك استثناءان: عبارة الفاصل وعبارة التعليق. تبدأ عبارة الفاصل بشرطة مائلة وعلامة نجمة ( /*)، وتبدأ عبارة التعليق في لغة التحكم في الوظائف لنظام التشغيل بزوج من الشرطات المائلة وعلامة نجمة ( //*)، أو بعلامة نجمة واحدة في لغة التحكم في الوظائف لنظام التشغيل DOS.
العديد من عبارات JCL طويلة جدًا بحيث لا يمكن أن تتسع في 71 حرفًا، ولكن يمكن تمديدها إلى عدد غير محدد من بطاقات المتابعة عن طريق:
| نظام التشغيل JCL | DOS JCL |
|---|---|
إنهاء جميع بطاقات JCL الفعلية باستثناء الأخيرة عند النقطة التي تتطلب فيها الصيغة فاصلة ( ,). | إنهاء جميع بطاقات JCL الفعلية باستثناء الأخيرة عند نقطة تتطلب فيها الصيغة فاصلة ( ,) وحرفًا غير فارغ في العمود 72 |
ابدأ كل بطاقة متابعة بـ " //في العمود 1" ثم اترك مسافة واحدة على الأقل | ابدأ كل بطاقة متابعة بمسافات واستمر في العمود 15 |
بنية أكثر أنواع البطاقات شيوعًا هي: [ 12 ]
| نظام التشغيل JCL | DOS JCL |
|---|---|
|
|
مدخلات البث المباشر
يسمح كل من نظامي DOS و OS JCL بإدخال البيانات مباشرةً، أي "بطاقات" تُعالج بواسطة برنامج التطبيق وليس نظام التشغيل. عادةً ما تُخزن البيانات التي يُراد الاحتفاظ بها لفترة طويلة على القرص، ولكن قبل شيوع استخدام المحطات الطرفية التفاعلية ، كانت الطريقة الوحيدة لإنشاء ملفات القرص هذه وتعديلها هي إدخال البيانات الجديدة على البطاقات.
تختلف طرق الإشارة لبدء الإدخال المتدفق بين نظامي التشغيل DOS وOS، لكن كلاهما ينهي الإدخال المتدفق عند /*العمود الأول من البطاقة التي تلي آخر بطاقة بيانات متدفقة. وهذا يجعل نظام التشغيل يستأنف معالجة JCL في البطاقة التالية /*. [ 13 ]
- لغة التحكم في الوظائف لنظام التشغيل: يمكن استخدام عبارات DD لوصف البيانات المتدفقة، بالإضافة إلى مجموعات البيانات. تحتوي عبارة DD التي تتعامل مع البيانات المتدفقة على علامة نجمة (*) بعد مُعرّف DD، على سبيل المثال
//SYSIN DD *. يمكن تضمين عبارات JCL كجزء من البيانات المتدفقة باستخدام عبارات DD DATA.
- يسمح المعامل المسمى DLM بتحديد فاصل (الفاصل الافتراضي هو "/*"). يتيح تحديد فاصل بديل قراءة لغة التحكم في الوظائف (JCL) كبيانات، على سبيل المثال لنسخ الإجراءات إلى عضو مكتبة أو لإرسال مهمة إلى القارئ الداخلي .
- مثال على ذلك، [ 14 ] الذي يرسل مهمة إلى القارئ الداخلي ( INTRDR ) ثم يحذف ملفين هو:
// SUBM EXEC PGM = IEBGENER // SYSPRINT DD SYSOUT = Z // SYSUT2 DD SYSOUT = ( A , INTRDR ) // SYSIN DD DUMMY // SYSUT1 DD DATA , DLM = ZZ // RUNLATR JOB ACCT , MANIX , CLASS = A . TYPRUN = HOLD //* ^ مهمة لتشغيلها لاحقًا // CPUHOG EXEC PGM = PICALC1K // OUTPUT DD DSN = PICALC .1000 DGTS , SPACE = ( TRK , 1 ), DISP = (, KEEP ) ZZ //* ^ كما هو محدد بواسطة DLM=ZZ // DROPOLDR EXEC PGM = IEFBR14 // DELETE4 DD DSN = PICALC .4 DGTS , DISP = ( OLD , DELETE ) // DELETE5 DD DSN = PICALC .5 DGTS , DISP = ( OLD , DELETE )- سينتظر البرنامج المسمى PICALC1K (TYPRUN=HOLD) حتى يتم تحريره يدويًا
- سيتم تشغيل البرنامج المسمى IEFBR14 الآن، وعند اكتماله، سيتم حذف الملفين الموجودين، PICALC.4DGTS و PICALC.5DGTS.
- JCL في نظام التشغيل DOS: ببساطة أدخل البيانات المضمنة بعد بطاقة EXEC الخاصة بالبرنامج.
تعقيد
وصف فريد بروكس ، الذي أشرف على مشروع نظام التشغيل OS/360 الذي تم فيه إنشاء لغة JCL، هذه اللغة بأنها "أسوأ لغة برمجة حاسوبية على الإطلاق، من ابتكار أي شخص وفي أي مكان" في كتابه " تصميم التصميم "، حيث استخدمها كمثال في فصل "كيف يخطئ المصممون الخبراء". [ 15 ] وعزا ذلك إلى فشل المصممين في إدراك أن JCL هي في الواقع لغة برمجة.
ينبع جزء كبير من تعقيد لغة التحكم في الوظائف (JCL) لأنظمة التشغيل، على وجه الخصوص، من العدد الكبير من الخيارات المتاحة لتحديد معلومات مجموعات البيانات . فبينما تُجرّد الملفات في أنظمة التشغيل الشبيهة بنظام يونكس إلى تدفقات مُرتبة من البايتات، وتقتصر مهمة قراءة وكتابة البيانات المهيكلة على برامج المستخدم (التي تقوم في النهاية باستيعاب هذه التدفقات وإصدارها)، ويتولى نظام التشغيل معالجة التفاصيل العملية لتخزين البيانات والوصول إليها إلى حد كبير دون علم برامج المستخدم؛ فإن مجموعات البيانات في نظام التشغيل OS/360 والإصدارات اللاحقة تُظهر أنواع ملفاتها وأحجامها، وأنواع سجلاتها وأطوالها، وأحجام الكتل، ومعلومات خاصة بالجهاز مثل كثافة الشريط المغناطيسي ، ومعلومات التسمية. وعلى الرغم من وجود إعدادات افتراضية للنظام للعديد من الخيارات، إلا أنه لا يزال هناك الكثير مما يجب على المبرمج تحديده، من خلال مزيج من لغة التحكم في الوظائف (JCL) والمعلومات المُبرمجة في البرنامج. وكلما زادت المعلومات المُبرمجة في البرنامج، قلت مرونته، لأن المعلومات الموجودة في البرنامج تُبطل أي شيء موجود في لغة التحكم في الوظائف (JCL)؛ وبالتالي، عادةً ما يتم توفير معظم المعلومات من خلال لغة التحكم في الوظائف (JCL).
على سبيل المثال، لنسخ ملف على نظام التشغيل يونكس ، يقوم المستخدم بإدخال أمر مثل:
cp oldFile newFile
يمكن استخدام المثال التالي، باستخدام لغة التحكم في الوظائف (JCL)، لنسخ ملف على نظام التشغيل OS/360:
// IS198CPY JOB ( IS198T30500 ), 'COPY JOB' , CLASS = L , MSGCLASS = X // COPY01 EXEC PGM = IEBGENER // SYSPRINT DD SYSOUT = * // SYSUT1 DD DSN = OLDFILE , DISP = SHR // SYSUT2 DD DSN = NEWFILE , // DISP = ( NEW , CATLG , DELETE ), // SPACE = ( CYL ,( 40 , 5 ), RLSE ), // DCB = ( LRECL = 115 , BLKSIZE = 1150 ) // SYSIN DD DUMMYالتفسير الثاني لتعقيد لغة التحكم في الوظائف (JCL) هو اختلاف التوقعات لتشغيل وظيفة عن تلك الموجودة في بيئة الكمبيوتر الشخصي أو بيئة شبيهة بنظام يونكس.
- كانت معالجات System/360 منخفضة التكلفة أقل قوةً وأكثر تكلفةً من أجهزة الكمبيوتر الشخصية التي ظهرت في منتصف ثمانينيات القرن الماضي، والتي صُمم نظام MS-DOS خصيصًا لها. صُمم نظام OS/360 للأنظمة ذات ذاكرة لا تقل عن 32 كيلوبايت، بينما صُمم نظام DOS/360 للأنظمة ذات ذاكرة لا تقل عن 16 كيلوبايت. كانت معالجات 360/30 - التي كانت تُعتبر منخفضة التكلفة عند الإعلان عن System/360 عام 1964 - تُعالج ما بين 1800 و34500 تعليمة في الثانية. [ 16 ] أما أول جهاز كمبيوتر شخصي من IBM عام 1981، فكان مزودًا بذاكرة سعتها 16 أو 64 كيلوبايت، وكان يُعالج حوالي 330 ألف تعليمة في الثانية. [ 17 ] [ 18 ] ونتيجةً لذلك، كان لا بد أن تكون لغة التحكم في الوظائف (JCL) سهلة المعالجة بالنسبة للكمبيوتر ، بينما كانت سهولة استخدامها من قِبل المبرمجين أقل أهميةً بكثير. في ذلك الوقت، كان المبرمجون أرخص بكثير من أجهزة الكمبيوتر.
- صُممت لغة التحكم في الوظائف (JCL) لمعالجة البيانات على دفعات . ولذلك، فهي تُخبر نظام التشغيل بكل شيء، بما في ذلك الإجراء المطلوب بناءً على نتيجة كل خطوة. على سبيل المثال،
DISP=(NEW,CATLG,DELETE)تعني هذه العبارة: "إذا تم تشغيل البرنامج بنجاح، أنشئ ملفًا جديدًا وقم بفهرسته؛ وإلا فاحذف الملف الجديد". غالبًا ما تعتمد البرامج التي تعمل على جهاز الكمبيوتر على المستخدم لتنظيف الملفات بعد معالجة المشكلات. - صُممت أجهزة System/360 لتكون مشتركة بين جميع المستخدمين في المؤسسة. لذا،
JOBتُخبر البطاقة نظام التشغيل بكيفية فوترة حساب المستخدمIS198T30500، ومقدار التخزين والموارد الأخرى المُخصصة لهCLASS=L، بالإضافة إلى عدة أمور أخرى.//SYSPRINT DD SYSOUT=*كما تُخبر الحاسوب بطباعة تقرير البرنامج على الطابعة الافتراضية المُحمّلة بورق عادي، وليس على طابعة أخرى قد تكون مُحمّلة بشيكات فارغة.DISP=SHRوتُخبر نظام التشغيل أيضًا بإمكانية قراءة البرامج الأخرىOLDFILEفي الوقت نفسه .
تحتفظ الإصدارات اللاحقة من نظامي التشغيل DOS/360 و OS/360 بمعظم ميزات لغة التحكم في الوظائف (JCL) الأصلية ، مع بعض التبسيطات لتجنب إجبار المستخدمين على إعادة كتابة جميع ملفات JCL الخاصة بهم. يحفظ العديد من المستخدمين مجموعة من عبارات JCL التي يُحتمل استخدامها أكثر من مرة أو مرتين كإجراء . [ 19 ]
إن بناء جملة لغة التحكم في نظام التشغيل (JCL) مشابه لبناء جملة وحدات الماكرو في لغة التجميع System/360 ، وبالتالي كان مألوفًا للمبرمجين في وقت كانت فيه العديد من البرامج مكتوبة بلغة التجميع.
DOS JCL
المعلمات الموضعية
// TLBL TAPEFIL,'COPYTAPE.JOB',,,,2 // ASSGN SYS005,200 // DLBL DISKFIL,'COPYTAPE.JOB',0,SD // EXTENT SYS005,VOL01,1,0,800,1600تعتبر معلمات JCL في نظام التشغيل DOS موضعية، مما يجعل قراءتها وكتابتها أكثر صعوبة، ولكنه يجعل تحليلها أسهل بالنسبة للنظام.
- يجب على المبرمج أن يتذكر أي عنصر يوضع في أي موضع في كل نوع من أنواع العبارات.
- إذا تم حذف بعض المعلمات الاختيارية ولكن تم تضمين المعلمات اللاحقة، فيجب تمثيل المعلمات المحذوفة بفواصل بدون مسافات، كما هو الحال في عبارة TLBL أعلاه.
يُخفف نظام DOS JCL إلى حد ما من صعوبات المعاملات الموضعية باستخدام عدد أكبر من العبارات مع عدد أقل من المعاملات مقارنةً بنظام OS JCL. في المثال، تؤدي عبارات ASSGN وDLBL وEXTENT نفس المهمة (تحديد مكان تخزين ملف القرص الجديد) التي تؤديها عبارة واحدة DDفي نظام OS JCL.
اعتماد الجهاز
في نظام التشغيل DOS/360 الأصلي وفي معظم إصدارات DOS/VS، كان لا بد من تحديد رقم طراز الجهاز المستخدم لكل ملف على القرص أو الشريط ، حتى بالنسبة للملفات الموجودة مسبقًا والملفات المؤقتة التي تُحذف عند انتهاء المهمة. هذا يعني أنه في حال ترقية العميل إلى معدات أحدث، كان لا بد من تعديل العديد من ملفات JCL.
قللت الإصدارات اللاحقة من عائلة DOS/360 من عدد الحالات التي تتطلب أرقام طرازات الأجهزة.
تخصيص الملفات يدويًا
كان نظام DOS/360 يتطلب في الأصل من المبرمج تحديد موقع وحجم جميع الملفات على وحدة التخزين ذات الوصول المباشر (DASD) . EXTENTتحدد البطاقة وحدة التخزين التي يوجد عليها الامتداد، والمسار المطلق البادئ، وعدد المسارات. أما في نظام z/VSE، فيمكن أن يحتوي الملف على ما يصل إلى 256 امتدادًا على وحدات تخزين مختلفة.
نظام التشغيل JCL
يتكون نظام التشغيل JCL من ثلاثة أنواع أساسية من العبارات: [ 20 ]
JOBبيان يحدد بداية المهمة، ومعلومات حول المهمة بأكملها، مثل الفوترة وأولوية التشغيل وحدود الوقت والمساحة.EXECالبيان الذي يحدد البرنامج أو الإجراء [ 21 ] المراد تنفيذه في هذه الخطوة من المهمة، ومعلومات حول الخطوة، بما في ذلك شروط تشغيل أو تخطي خطوة.DDتتضمن عبارات تعريف البيانات تحديد ملف البيانات المراد استخدامه في خطوة معينة، ومعلومات تفصيلية حول هذا الملف.DDويمكن أن تكون هذه العبارات بأي ترتيب داخل الخطوة.
منذ البداية، كانت لغة التحكم في الوظائف (JCL) لعائلة أنظمة التشغيل (حتى نظام التشغيل z/OS ) أكثر مرونة وأسهل في الاستخدام.
تستخدم الأمثلة التالية أسلوب بناء الجملة القديم الذي تم توفيره منذ إطلاق نظام System/360 في عام 1964. ولا يزال بناء الجملة القديم شائعًا جدًا في الوظائف التي تعمل منذ عقود مع تغييرات طفيفة فقط.
قواعد كتابة عبارات JCL
يتم تقسيم كل عبارة JCL إلى خمسة حقول: [ 22 ]
المعرّف - اسم الحقل - عملية الحقل - معلمة الحقل - تعليقات الحقل - الحقل ^ ^ ^ ^ لا يوجد مساحة مساحة مساحة مساحة
يجب دمج حقل المعرف مع حقل الاسم ، أي لا يجب أن تكون هناك مسافات بينهما.
- حقل المعرّف (
//): يشير حقل المعرّف إلى النظام بأن العبارة هي عبارة JCL وليست بيانات. يتكون حقل المعرّف مما يلي:- يحتوي العمودان 1 و2 من جميع عبارات JCL، باستثناء عبارة المحدد، على
// - يحتوي العمودان 1 و2 من عبارة الفاصل على
/* - تحتوي الأعمدة 1 و2 و3 من عبارة تعليق JCL على
//*
- يحتوي العمودان 1 و2 من جميع عبارات JCL، باستثناء عبارة المحدد، على
- حقل الاسم : يُحدد حقل الاسم عبارةً معينةً بحيث يمكن للعبارات الأخرى والنظام الرجوع إليها. بالنسبة لعبارات JCL، يجب ترميزها على النحو التالي:
- يجب أن يبدأ الاسم في العمود 3.
- يتكون الاسم من 1 إلى 8 أحرف أبجدية رقمية أو وطنية (
$,#,@). - يجب أن يكون الحرف الأول حرفًا أبجديًا.
- يجب أن يتبع الاسم فراغ واحد على الأقل.
- حقل العملية : يحدد حقل العملية نوع العبارة، أو الأمر في حالة عبارة الأمر. يجب ترميز حقل العملية كما يلي:
- يتكون حقل العملية من الأحرف الموجودة في مربع بناء الجملة للعبارة.
- تتم العملية بعد حقل الاسم.
- يجب أن تسبق العملية وتليها فراغ واحد على الأقل.
- ستكون العملية واحدة من بين
JOB،EXECوDD.
- حقل المعاملات : يحتوي حقل المعاملات، والذي يُشار إليه أحيانًا بحقل المُعامل، على معاملات مفصولة بفواصل. يجب ترميز حقل المعاملات كما يلي:
- يأتي حقل المعلمات بعد حقل العملية.
- يجب أن يسبق حقل المعلمة فراغ واحد على الأقل.
- يحتوي حقل المعلمات على معلمات عبارة عن كلمات مفتاحية تُستخدم في العبارة لتوفير معلومات مثل اسم البرنامج أو اسم مجموعة البيانات.
- حقل التعليقات : يحتوي هذا الحقل على التعليقات . يجب برمجة حقل التعليقات كما يلي:
- يأتي حقل التعليقات بعد حقل المعلمات.
- يجب أن يسبق حقل التعليقات فراغ واحد على الأقل.
معلمات الكلمات الرئيسية
// NEWFILE DD DSN = MYFILE01 , UNIT = DISK , SPACE = ( TRK , 80 , 10 ), // DCB = ( LRECL = 100 , BLKSIZE = 1000 ), // DISP = ( NEW , CATLG , DELETE )تُحدد جميع المعلمات الرئيسية لعبارات JCL الخاصة بنظام التشغيل بواسطة كلمات مفتاحية، ويمكن عرضها بأي ترتيب. تحتوي بعض هذه المعلمات على معلمتين فرعيتين أو أكثر، مثل SPACE(مقدار مساحة القرص المراد تخصيصها لملف جديد) و DCB(المواصفات التفصيلية لتخطيط الملف) في المثال أعلاه. تكون المعلمات الفرعية أحيانًا موضعية، كما في SPACE، ولكن المعلمات الأكثر تعقيدًا، مثل DCB، تحتوي على معلمات فرعية مُحددة بالكلمات المفتاحية.
يجب أن تسبق المعلمات الموضعية معلمات الكلمات المفتاحية. وتُسند معلمات الكلمات المفتاحية دائمًا قيمًا إلى كلمة مفتاحية باستخدام علامة المساواة ( ==). [ 23 ]
الوصول إلى البيانات (بيان DD)
تُستخدم هذه DDالعبارة للإشارة إلى البيانات. تربط هذه العبارة الوصف الداخلي لمجموعة البيانات في البرنامج بالبيانات الموجودة على الأجهزة الخارجية: الأقراص، والأشرطة، والبطاقات، والطابعات، وما إلى ذلك. قد توفر عبارة DD معلومات مثل نوع الجهاز (مثل '181'، '2400-5'، 'TAPE')، والرقم التسلسلي لوحدة التخزين للأشرطة أو الأقراص، ووصف ملف البيانات، والذي يُسمى المعامل DCBالفرعي بعد كتلة التحكم في البيانات (DCB) في البرنامج المستخدم لتحديد الملف.
يمكن الحصول على معلومات وصف الملف من ثلاثة مصادر: معلومات بطاقة DD، ومعلومات تسمية مجموعة البيانات لملف موجود مخزن على شريط أو قرص، ووحدة DCB البرمجية. عند فتح الملف، تُدمج هذه البيانات، حيث تُعطى الأولوية لمعلومات DD على معلومات التسمية، ومعلومات DCB على كليهما. ثم يُعاد كتابة الوصف المُحدَّث إلى تسمية مجموعة البيانات. قد يؤدي هذا إلى عواقب غير مقصودة في حال تقديم معلومات DCB غير صحيحة. [ 24 ]
نظراً للمعايير المذكورة أعلاه والمعلومات الخاصة بطرق الوصول والأجهزة المختلفة، تُعدّ عبارة DD أكثر عبارات JCL تعقيداً. في أحد أدلة IBM المرجعية، يشغل وصف عبارة DD أكثر من 130 صفحة، أي أكثر من ضعف عدد صفحات عبارتي JOB وEXEC مجتمعتين. [ 25 ]
تسمح عبارة DD بإدخال البيانات مباشرةً في مسار العمل. وهذا مفيد لتوفير معلومات التحكم لأدوات مثل IDCAMS وSORT وغيرها، بالإضافة إلى توفير بيانات الإدخال للبرامج.
استقلالية الجهاز
منذ البداية، وفرت لغة التحكم في الوظائف (JCL) لأنظمة التشغيل من عائلة OS درجة عالية من الاستقلالية عن الأجهزة. حتى بالنسبة للملفات الجديدة التي سيتم الاحتفاظ بها بعد انتهاء المهمة، يمكن تحديد نوع الجهاز بعبارات عامة، مثل ( شريط أو قرص) UNIT=DISK. بالطبع، إذا كان ذلك مهمًا، يمكن تحديد رقم الطراز أو حتى عنوان جهاز محدد. [ 26 ]UNIT=TAPEUNIT=SYSSQ
إجراءات
تسمح الإجراءات بتجميع عبارة واحدة أو أكثر من عبارات " EXEC PGM= " و DD ثم استدعائها باستخدام " EXEC PROC= procname" -أو- ببساطة "EXEC procname" [ 27 ]
تتيح منشأة تسمى مكتبة الإجراءات إمكانية تخزين الإجراءات مسبقًا.
PROC & PEND
يمكن أيضًا تضمين الإجراءات في سلسلة المهام عن طريق إنهاء الإجراء بعبارة // PEND، ثم استدعائه بالاسم بنفس الطريقة كما لو كان موجودًا في مكتبة الإجراءات.
على سبيل المثال:
// SUMPRINT PROC // PRINT EXEC PGM=IEBGENER // SYSUT1 DD DSN = CEO . FILES . DAYEND . RPT24A , DISP = SHR // SYSUT2 DD SYSOUT = A // SYSIN DD DUMMY // PEND // EXEC SUMPRINTالإجراءات ذات المعلمات
تمت برمجة إجراءات JCL لنظام التشغيل منذ البداية، مما جعلها أشبه بالوحدات البرمجية أو حتى الإجراءات الفرعية البسيطة ، وبالتالي زيادة إمكانية إعادة استخدامها في مجموعة واسعة من المواقف. [ 28 ]
// MYPROC PROC FNAME = MYFILE01 , SPTYPE = TRK , SPINIT = 50 , SPEXT = 10 , LR = 100 , BLK = 1000 ..... // NEWFILE DD DSN =& FNAME , UNIT = DISK , SPACE = ( & SPTYPE , & SPINIT , & SPEXT ), // DCB = ( LRECL =& LR , BLKSIZE =& BLK ), DISP = ( NEW , CATLG , DELETE ) ....في هذا المثال، جميع القيم التي تبدأ بعلامة العطف (& &) هي معلمات تُحدد عند طلب مهمة ما استخدام الإجراء. تسمح عبارة PROC، بالإضافة إلى تسمية الإجراء، للمبرمج بتحديد قيم افتراضية لكل معلمة. لذا، يمكن استخدام الإجراء نفسه في هذا المثال لإنشاء ملفات جديدة بأحجام وتنسيقات مختلفة. على سبيل المثال:
// JOB01 JOB .......... // STEP01 EXEC MYPROC FNAME=JOESFILE,SPTYPE=CYL,SPINIT=10,SPEXT=2,LR=100,BLK=2000 أو // JOB02 JOB .......... // STEP01 EXEC MYPROC FNAME=SUESFILE,SPTYPE=TRK,SPINIT=500,SPEXT=100,LR=100,BLK=5000الإحالات
في المهام متعددة الخطوات، يمكن للخطوة اللاحقة استخدام مرجع بدلاً من تحديد ملف بالكامل سبق تحديده في خطوة سابقة. على سبيل المثال:
// MYPROC ................ // MYPR01 EXEC PGM = .......... // NEWFILE DD DSN =& MYFILE , UNIT = DISK , SPACE = ( TRK , 50 , 10 ), // DCB = ( LRECL = 100 , BLKSIZE = 1000 ), DISP = ( NEW , CATLG , DELETE ) .... // MYPR02 EXEC PGM = .......... // INPUT01 DD DSN = * . MYPR01 . NEWFILEهنا، MYPR02يستخدم الملف المحدد في NEWFILEالخطوة MYPR01( DSNيعني "اسم مجموعة البيانات" ويحدد اسم الملف؛ لا يمكن أن يتجاوز اسم مجموعة البيانات 44 حرفًا [ 29 ] ).
في الوظائف التي تحتوي على مزيج من لغة التحكم في الوظائف (JCL) واستدعاءات الإجراءات الخاصة بالوظيفة، يمكن لخطوة خاصة بالوظيفة أن تشير إلى ملف تم تحديده بالكامل في إجراء، على سبيل المثال:
// MYJOB JOB .......... // STEP01 EXEC MYPROC استخدام إجراء // STEP02 EXEC PGM = ......... خطوة خاصة بهذه المهمة // INPUT01 DD DSN = * . STEP01 . MYPR01 . NEWFILEحيث DSN=*.STEP01.MYPR01.NEWFILEتعني "استخدام الملف المحدد في NEWFILEخطوة MYPR01الإجراء المستخدمة في خطوة STEP01هذه المهمة". إن استخدام اسم الخطوة التي استدعت الإجراء بدلاً من اسم الإجراء نفسه يسمح للمبرمج باستخدام الإجراء نفسه عدة مرات في المهمة نفسها دون أي لبس حول أي نسخة من الإجراء مستخدمة في الاستدعاء المرجعي.
تعليقات
قد تكون ملفات JCL طويلة ومعقدة، ولغتها ليست سهلة القراءة. يسمح نظام التشغيل JCL للمبرمجين بإضافة نوعين من التعليقات التوضيحية:
- على نفس سطر عبارة JCL. يمكن توسيعها بوضع حرف استمرار (عادةً "
X") في العمود 72، متبوعًا بـ "//" في الأعمدة من 1 إلى 3 من السطر التالي. - تُستخدم الأسطر التي تحتوي على تعليقات فقط، غالبًا لشرح النقاط الرئيسية المتعلقة بالبنية العامة لملف JCL بدلاً من التفاصيل المحلية. كما تُستخدم هذه الأسطر لتقسيم ملفات JCL الطويلة والمعقدة إلى أقسام.
// MYJOB JOB .......... //* أسطر تحتوي على تعليقات فقط. //******** تُستخدم غالبًا لتقسيم قائمة JCL إلى أقسام ******** // STEP01 EXEC MYPROC التعليق 2 في نفس سطر العبارة // STEP02 EXEC PGM = ......... تم تمديد التعليق 3 و X // يتجاوز إلى سطر آخر. // INPUT01 DD DSN = STEP01 . MYPR01 . NEWFILEدمج ملفات الإدخال
تتيح لغة التحكم في الوظائف (JCL) لنظام التشغيل للمبرمجين دمج ملفات الإدخال ("سلسلة") بحيث تظهر للبرنامج كملف واحد ، على سبيل المثال
// INPUT01 DD DSN = MYFILE01 , DISP = SHR // DD DSN=JOESFILE,DISP=SHR // DD DSN=SUESFILE,DISP=SHRلا تحتوي العبارتان الثانية والثالثة على قيمة في حقل الاسم، لذا يتعامل نظام التشغيل معهما على أنهما سلسلتان متجاورتان. يجب أن تكون الملفات من نفس النوع الأساسي (عادةً ما تكون متسلسلة)، ويجب أن يكون لها نفس طول السجل، ولكن ليس بالضرورة أن يكون طول الكتلة متطابقًا.
في الإصدارات المبكرة من نظام التشغيل (بالتأكيد قبل OS/360 R21.8)، يجب أن يكون طول الكتلة بترتيب تنازلي، أو يجب على المستخدم فحص كل مثيل وإلحاق أقصى طول كتلة تم العثور عليه بعبارة DD المسماة، كما في المثال التالي:
// INPUT01 DD DSN = MYFILE01 , DISP = SHR , BLKSIZE = 800 // DD DSN=JOESFILE,DISP=SHR (يُفترض أن يكون حجم الكتلة 800 أو أقل) // DD DSN=SUESFILE,DISP=SHR (يُفترض أن يكون حجم الكتلة 800 أو أقل)في الإصدارات اللاحقة من نظام التشغيل (بالتأكيد بعد OS/MVS R3.7 مع "الوحدات القابلة للتحديد" المناسبة)، يقوم نظام التشغيل نفسه، أثناء التخصيص، بفحص كل مثيل في التسلسل ويستبدل الحد الأقصى لطول الكتلة الذي تم العثور عليه.
كان الحل البديل المعتاد هو ببساطة تحديد الحد الأقصى لطول الكتلة الممكن على الجهاز، وتحديد ذلك في عبارة DD المسماة، كما في المثال التالي:
// INPUT01 DD DSN = MYFILE01 , DISP = SHR , BLKSIZE = 8000 // DD DSN=JOESFILE,DISP=SHR (يُفترض أن يكون حجم الكتلة 8000 أو أقل) // DD DSN=SUESFILE,DISP=SHR (يُفترض أن يكون حجم الكتلة 8000 أو أقل)كان الغرض من هذا التراجع هو ضمان أن طريقة الوصول ستخصص مجموعة مخزن مؤقت للإدخال كبيرة بما يكفي لاستيعاب أي وجميع مجموعات البيانات المحددة.
المعالجة المشروطة
يتوقع نظام التشغيل من البرامج تحديد رمز إرجاع يُشير إلى مدى نجاح البرنامج في تنفيذ مهمته. القيم التقليدية الأكثر شيوعًا هي: [ 30 ] : ص 87
- 0 = طبيعي - كل شيء على ما يرام
- 4 = تحذير - أخطاء أو مشاكل طفيفة
- 8 = خطأ - أخطاء أو مشاكل كبيرة
- 12 = خطأ جسيم - أخطاء أو مشاكل كبيرة، لا ينبغي الوثوق بالنتائج (مثل الملفات أو التقارير المنتجة).
- 16 = خطأ فادح - مشاكل خطيرة للغاية، لا تستخدم النتائج!
يشير نظام التشغيل JCL إلى رمز الإرجاع باسم COND("رمز الشرط")، ويمكن استخدامه لتحديد ما إذا كان سيتم تنفيذ الخطوات اللاحقة. مع ذلك، وخلافًا لمعظم لغات البرمجة الحديثة، لا تُنفَّذ الخطوات الشرطية في نظام التشغيل JCL إذا كان الشرط المحدد صحيحًا ، مما يُفسِّر العبارة التالية : "إذا كان الشرط صحيحًا، فتابع التنفيذ [دون تنفيذ الكود]". ومما يزيد الأمر تعقيدًا، أنه لا يمكن تحديد الشرط إلا بعد الخطوة التي يُشير إليها. على سبيل المثال:
// MYJOB JOB ........... // STEP01 EXEC PGM = PROG01 .... // STEP02 EXEC PGM = PROG02 , COND = ( 4 , GT , STEP01 ) .... // STEP03 EXEC PGM = PROG03 , COND = ( 8 , LE ) .... // STEP04 EXEC PGM = PROG04 , COND = ( ONLY , STEP01 ) .... // STEP05 EXEC PGM = PROG05 , COND = ( EVEN , STEP03 ) ....وسائل:
- قم بتشغيل البرنامج
STEP01، واجمع رمز الإرجاع الخاص به. - لا تقم بتشغيل البرنامج
STEP02إذا كان الرقم 4 أكبر منSTEP01رمز الإرجاع الخاص بـ 's. - لا تقم بتشغيل البرنامج
STEP03إذا كان الرقم 8 أقل من أو يساوي أي رمز إرجاع سابق. - لا تقم بتشغيل البرنامج
STEP04إلا في حالةSTEP01توقفه بشكل غير طبيعي. - استمر في التشغيل
STEP05، حتى لوSTEP03انتهى بشكل غير طبيعي.
وهذا يُترجم إلى الشفرة الزائفة التالية :
قم بتشغيل الخطوة STEP01 إذا كان رمز الإرجاع الخاص بها أكبر من أو يساوي 4 . قم بتشغيل الخطوة 02 إذا كان أي رمز إرجاع سابق أقل من 8، فقم بما يلي: قم بتشغيل الخطوة 03 إذا انتهت الخطوة STEP01 بشكل غير طبيعي، فقم بما يلي: قم بتشغيل الخطوة 04 إذا انتهت الخطوة STEP03 بشكل غير طبيعي، فقم بما يلي: قم بتشغيل الخطوة 05 آخر قم بتشغيل الخطوة 05 نهاية الشرط
لاحظ أنه بقراءة الخطوات التي تحتوي على CONDعبارات بشكل عكسي، يمكن فهمها بسهولة نسبية. هذا مثال على التبديل المنطقي . مع ذلك، أدخلت شركة IBM لاحقًا شرط IF في لغة التحكم في الوظائف (JCL)، مما سهّل عملية البرمجة للمبرمجين مع الحفاظ على CONDالمعامل (لتجنب إجراء تغييرات على لغات التحكم في الوظائف (JCL) الموجودة حيث COND parmيُستخدم).
CONDيمكن أيضًا تحديد المعامل في العبارة JOB. في هذه الحالة، يقوم النظام "بإجراء اختبارات رمز الإرجاع نفسها لكل خطوة في المهمة. إذا تم استيفاء اختبار رمز الإرجاع لعبارة JOB، تنتهي المهمة." [ 31 ]
المرافق
تستخدم وظائف IBM عددًا من برامج الأدوات المساعدة للمساعدة في معالجة البيانات. وتُعدّ هذه الأدوات مفيدة للغاية في المعالجة الدفعية. ويمكن تصنيف هذه الأدوات إلى ثلاث مجموعات:
- أدوات مجموعة البيانات - إنشاء وطباعة ونسخ ونقل وحذف مجموعات البيانات.
- أدوات النظام - صيانة وإدارة الفهارس ومعلومات النظام الأخرى.
- خدمات طريقة الوصول - معالجة مجموعات بيانات طريقة الوصول إلى التخزين الظاهري (VSAM) وغير VSAM.
صعوبة الاستخدام
لا شك أن لغة التحكم في الوظائف (JCL) لأنظمة التشغيل معقدة للغاية [ 32 ] ، وقد وُصفت بأنها "معادية للمستخدم". [ 33 ] [ 34 ] وكما تساءل أحد الكتب التعليمية عن JCL: "لماذا يتردد حتى المبرمجون المحترفون عند التعامل مع لغة التحكم في الوظائف؟" [ 35 ] ذكر الكتاب أن العديد من المبرمجين إما أنهم ينسخون بطاقات التحكم دون فهم وظيفتها، أو "يصدقون الشائعات السائدة بأن JCL لغة سيئة، وأن خبراء الحاسوب المتمرسين فقط هم من يفهمونها"، ويوكلون مهمة فهم تعليمات JCL إلى شخص آخر. [ 35 ] يمكن إيجاد هذا التوجه في كتب لغات البرمجة، التي تُفضل التركيز على اللغة نفسها وليس على كيفية تشغيل البرامج المكتوبة بها. وكما جاء في أحد كتب Fortran IV عند سرد رسائل الخطأ المحتملة من مُترجم WATFOR : "هل كنتَ غبيًا لدرجة محاولة كتابة بطاقات تحكم النظام 'DD' الخاصة بك؟ توقف فورًا؛ اركض، لا تمشِ، لطلب المساعدة." [ 36 ]
مع ذلك، أكدت بعض الكتب التي تناولت لغة التحكم في الوظائف (JCL) بالتفصيل أنه بمجرد إتقانها ولو بدرجة معقولة، يتحرر المستخدم من الإعدادات الافتراضية العامة للنظام، ويتمتع بتحكم أفضل بكثير في كيفية معالجة نظام IBM لأعباء العمل. [ 35 ] [ 32 ] وعلق كتاب آخر على تعقيدها، لكنه قال: "لا تقلق. إن القدرة التي ستكتسبها من لغة التحكم في الوظائف (JCL) من [الفصل السابق] هي كل ما يحتاجه معظم المبرمجين." [ 32 ]
لغة التحكم في دخول الوظيفة
في أنظمة الحواسيب المركزية من IBM، تُعدّ لغة التحكم في إدخال المهام ( JECL) مجموعة من عبارات التحكم في لغة الأوامر التي توفر معلومات لنظام التخزين المؤقت - JES2 أو JES3 على نظام z/OS أو VSE/POWER لنظام z/VSE . قد تُحدد عبارات JECL على أي حاسوب شبكي سيتم تشغيل المهمة ، ومتى سيتم تشغيلها، وإلى أين سيتم إرسال المخرجات الناتجة. [ 30 ]
يختلف JECL عن JCL، الذي يُعطي تعليمات لنظام التشغيل حول كيفية تشغيل المهمة.
توجد إصدارات مختلفة من JECL للبيئات الثلاث.
نظام التشغيل OS/360
استخدمت نسخة مبكرة من لغة التحكم في إدخال المهام لنظام التشغيل OS/360 Remote Job Entry (رقم البرنامج 360S-RC-536) المعرّف في العمودين 1 و 2 من سجل الإدخال، وتألفت من عبارة تحكم واحدة: (تعريف إدخال المهمة). كما بدأت "أوامر محطة العمل" مثل و و بـ . [ 37 ] .. JEDLOGONLOGOFFSTATUS ..
ما قبل JES JECL
على الرغم من أن المصطلح لم يكن قد تم تطويره بعد، إلا أن HASP كان لديه وظائف مماثلة لما سيصبح JECL الخاص بـ JES ، بما في ذلك /*بناء الجملة.
z/OS
بالنسبة لـ JES2، تبدأ عبارات JECL بـ /*، أما بالنسبة لـ JES3 فتبدأ بـ //*، باستثناء أوامر remote و . تختلف الأوامر بين النظامين اختلافًا تامًا. /*SIGNON /*SIGNOFF
JES2 JECL
تُستخدم عبارات JES2 JECL التالية في z/OS 1.2.0. [ 38 ]
| بيان JECL | وظيفة | مثال |
|---|---|---|
/*$command | يدخل أمراً تشغيلياً (أمر وحدة التحكم) | /*$S PRINTER3[ 39 ] |
/*JOBPARM | يحدد قيم المعلمات المتعلقة بالوظيفة | /*JOBPARM TIME=10 |
/*MESSAGE | يرسل رسالة إلى وحدة تحكم المشغل | /*MESSAGE CALL JOE AT HOME IF JOB ABENDS |
/*NETACCT | يحدد رقم الحساب لوظيفة الشبكة | /*NETACCT 12345 |
/*NOTIFY | يحدد وجهة رسائل الإشعارات | /*NOTIFY SAM |
/*OUTPUT | يحدد خيارات مجموعة بيانات SYSOUT | /*OUTPUT FORMS=BILL |
/*PRIORITY | يحدد أولوية اختيار الوظيفة | /*PRIORITY 15 |
/*ROUTE | يحدد وجهة الإخراج أو عقدة التنفيذ | /*ROUTE PRT RMT5 |
/*SETUP | يطلب تركيب وحدة التخزين أو أي عملية أخرى غير متصلة بالإنترنت | /*SETUP TAPE01,TAPE02 |
/*SIGNOFF | إنهاء الجلسة عن بعد | /*SIGNOFF |
/*SIGNON | بدء جلسة عن بعد | /*SIGNON REMOTE5 password |
/*XEQ | يحدد عقدة التنفيذ | /*XEQ DENVER |
/*XMIT | يشير إلى المهمة أو مجموعة البيانات المراد إرسالها إلى عقدة شبكة أخرى | /*XMIT NYC |
JES3 JECL
تُستخدم عبارات JES3 JECL التالية في z/OS 1.2.0 [ 40 ]
| بيان JECL | وظيفة | مثال |
|---|---|---|
//**command | يدخل أمراً من أوامر مشغل JES3 (وحدة التحكم) | |
//*DATASET | يمثل بداية مجموعة بيانات متدفقة | |
//*ENDDATASET | يمثل نهاية مجموعة بيانات متدفقة | |
//*ENDPROCESS | يمثل هذا نهاية سلسلة من التصريحات //*PROCESS | |
//*FORMAT | يحدد خيارات مجموعة البيانات SYSOUT | |
//*MAIN | يحدد قيم المعلمات المتعلقة بالوظيفة | |
//*NET | يحدد العلاقات بين الوظائف باستخدام التحكم في الوظائف التابعة JES3 | |
//*NETACCT | يحدد رقم الحساب لوظيفة الشبكة | |
//*OPERATOR | يرسل رسالة إلى وحدة تحكم المشغل | |
//*PAUSE | يوقف قارئ الإدخال | |
//*PROCESS | يحدد وظيفة غير قياسية | |
//*ROUTE | يحدد عقدة التنفيذ للمهمة | |
/*SIGNOFF | إنهاء الجلسة عن بعد | /*SIGNOFF |
/*SIGNON | بدء جلسة عن بعد |
z/VSE
بالنسبة لـ VSE، تبدأ عبارات JECL بمسافة واحدة . تحدد لغة التحكم في إدخال المهام * $$(JCL) خطي البداية والنهاية لمهام JCL، وتُعلم VSE / POWER بكيفية معالجة هذه المهمة. تُحدد عبارات JECL اسم المهمة (الذي يستخدمه VSE/POWER)، والفئة التي تُعالج فيها المهمة، وحالة المهمة (أي ، ، ، ، ).DLKH
| بيان JECL [ 41 ] | وظيفة | مثال |
|---|---|---|
* $$ CTL | يُحدد فئة إدخال افتراضية | * $$ CTL CLASS=A |
* $$ JOB | يحدد سمات الوظيفة | * $$ JOB JNM=PYRL,PRI=9 |
* $$ EOJ | يمثل نهاية وظيفة | * $$ EOJ |
* $$ RDR | يقوم بإدراج ملف من قرص مرن 3540 في دفق الإدخال | * $$ RDR SYS005,'fname',2 |
* $$ PRT | يحدد خصائص ملفات الطباعة المخزنة مؤقتًا. "LST" مرادف لـ "PRT". | * $$ PRT FNO=STD,COPY=2 |
* $$ PUN | يحدد خصائص ملفات التثقيب الملفوفة | * $$ PUN DISP=T,TADDR=280 |
* $$ SLI | يقوم بإدراج البيانات ("كتاب") من مكتبة عبارات المصدر في دفق الإدخال | * $$ SLI A.JCL1 |
* $$ DATA | يقوم بإدخال البيانات من قارئ البطاقات في كتاب تم استرجاعه من مكتبة بيانات المصدر | * $$ DATA INPUT1 |
مثال:
* $$ JOB JNM=NAME,DISP=K,CLASS=2[بعض عبارات JCL هنا]* $$ EOJأنظمة أخرى
كانت أنظمة المعالجة الدفعية الأخرى على الحواسيب المركزية تحتوي على شكل من أشكال لغة التحكم في المهام، سواء سُميت بذلك [ 4 ] أم لا؛ وكان تركيبها النحوي مختلفًا تمامًا عن إصدارات IBM، لكنها كانت توفر عادةً إمكانيات مماثلة. كانت هذه اللغة تتضمن بطاقات تحكم مزودة بمؤشر خاص، مثل علامة الدولار في البداية، حيث $JOBتكون البطاقة الأولى من هذا النوع، تتخللها بطاقات تحتوي على شفرة البرنامج، والبيانات المراد تشغيلها، وما إلى ذلك. [ 4 ]
تتضمن الأنظمة التفاعلية " لغات الأوامر " - يمكن تشغيل ملفات الأوامر (مثل ملفات ".bat" في نظام PCDOS) بشكل غير تفاعلي، ولكنها عادةً لا توفر بيئة قوية لتشغيل المهام غير المراقبة مثل لغة التحكم في المهام (JCL). في بعض أنظمة الحاسوب، قد تختلف لغة التحكم في المهام عن لغة الأوامر التفاعلية. على سبيل المثال، يستخدم نظام TSO على أنظمة z/OS لغة CLIST أو Rexx كلغات أوامر إلى جانب JCL للعمليات الدفعية. بينما قد تكون هذه اللغات متطابقة في أنظمة أخرى.
انظر أيضاً
مراجع
- ↑ "يجب أن تتضمن كل مهمة يتم تقديمها للتنفيذ ... عبارات JCL" – ibm.com
- ↑ والعديد من الجوانب الأخرى مثل ما إذا كان سيتم الاحتفاظ بالملف أو حذفه، والحد الأقصى لمساحة القرص التي يمكن أن يصل إليها، واسم الشريط المراد تركيبه مسبقًا، والإشارة إلى الظروف التي يتم بموجبها تخطي خطوة.
- ↑ آشلي وفرنانديز، لغة التحكم في الوظائف ، ص 1.
- 1 2 3 ستالينغز، ويليام (1996). تنظيم الحاسوب وبنيته: التصميم من أجل الأداء ( الطبعة الرابعة). أبر سادل ريفر، نيو جيرسي: برنتيس هول. ص 228. ISBN 0-13-359985-X.
- ↑ آشلي وفرنانديز، لغة التحكم في الوظائف ، ص 5.
- ↑ ماكويلين، لغة التجميع System/360–370 ، الصفحات 385–386.
- 1 2 ماكويلين، لغة التجميع System/360–370 ، ص 288–289، 400.
- ↑ لويس، سيسيليا (8 أغسطس 2011). "ما قدمناه لكم مؤخرًا من خلال PDSE" (ملف PDF) . SHARE في أورلاندو . تاريخ الاسترجاع: 3 مارس 2023 .
- ↑ ماكويلين، لغة التجميع System/360–370 ، الصفحات 22–24.
- ↑ ماكويلين، لغة التجميع System/360–370 ، الصفحات 380–382.
- ↑ Stern and Stern, Structured COBOL Programming , pp. 528–529.
- ↑ Stern and Stern, Structured COBOL Programming , pp. 529, 531.
- ↑ Stern and Stern, Structured COBOL Programming , pp. 529, 537.
- ↑ تم تصميم هذا النموذج بناءً على https://www.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v2r2.hasc300/has2z1_Submitting_to_the_internal_reader_from_jobs_or_tasks.htm ، باستخدام معلومات تعود إلى زمن إصدار بطاقات Green Cards من IBM، وعمل مانيكس لدى شركة تمتلك جهاز فرز بطاقات من IBM.
- ↑ بروكس، فريدريك ب. (2010). تصميم التصميم . أديسون-ويسلي . ص 167-173 . ISBN 978-0-201-36298-5.
- ↑ "أرشيفات IBM: System/360 Model 30" . www-03.ibm.com . 23 يناير 2003. مؤرشف من الأصل في 17 ديسمبر 2004. تم الاطلاع عليه بتاريخ 25 أبريل 2016 .
- ↑ "حاسوب آي بي إم الشخصي" . مؤرشف من الأصل بتاريخ 2006-07-05 . تم الاطلاع عليه بتاريخ 2007-10-21 .
- ↑ أجهزة الكمبيوتر المتوافقة مع IBM تاريخ أجهزة الكمبيوتر الشخصية مؤرشف في 14 أغسطس 2007 على Wayback Machine
- ↑ براون، غاري ديوارد (2002). zOS JCL ( الطبعة الخامسة). جون وايلي وأولاده. ص 248. ISBN 0471-236357.
- ↑ آشلي وفرنانديز، لغة التحكم في الوظائف ، ص 8، 23. هناك أيضًا عبارتان إضافيتان، PROC و PEND، تستخدمان لاختبار إجراءات JCL.
- ↑ مجموعة مُخزّنة مُسبقًا من أوامر JCL "EXEC PGM=" و "DD" والتي يُمكن تخصيصها
- ↑ آشلي وفرنانديز، لغة التحكم في الوظائف ، ص 12-16.
- ↑ آشلي وفرنانديز، لغة التحكم في العمل ، ص 13-15.
- ↑ شركة آي بي إم (أغسطس 1978). دليل خدمات إدارة بيانات نظام التشغيل OS/VS MVS (ملف PDF) . تم الاطلاع عليه بتاريخ 17 أكتوبر 2014 .
- ↑ شركة آي بي إم (يونيو 1971). نظام التشغيل IBM System/360: مرجع لغة التحكم في المهام (ملف PDF) . تم الاطلاع عليه بتاريخ 25 يونيو 2019 .
- ↑ ماكويلين، لغة التجميع System/360–370 ، ص 297، 406–407.
- ↑ القيمة الافتراضية لعبارة EXEC هي PROC=
- ↑ آشلي وفرنانديز، لغة التحكم في العمل ، ص 129-131.
- ↑ "أسماء مجموعات البيانات" . IBM . 27 مارس 2014.
يجب ألا يتجاوز طول أسماء مجموعات البيانات 44 حرفًا، بما في ذلك جميع أجزاء الاسم والنقاط.
- 1 2 براون، غاري ديوارد (2002). zOS JCL . جون وايلي وأولاده. ISBN 9780471426738تم الاطلاع عليه بتاريخ 2014-05-05 .
- ↑ شركة آي بي إم. "علاقة معلمات COND في عبارات JOB و EXEC" . مركز معارف آي بي إم . تم الاطلاع عليه بتاريخ 21 فبراير 2018 .
- 1 2 3 ماكويلين، لغة التجميع System/360–370 ، الصفحات 406–407.
- ↑ تشارلي، ألفريد (1993). نت فيو: منتج إدارة الشبكات من آي بي إم . نيويورك: فان نوستراند رينهولد. ص 93. ISBN 0-442-01407-4.
- ↑ ماثيو دبليو. بلود (6 أبريل 2020). "يشعر سكان نيويورك العاطلون عن العمل حديثًا بالإحباط بسبب تكنولوجيا حقبة السبعينيات (nytimes.com)" . تم الاطلاع عليه في 7 مايو 2020.
تُعرف لغة JCL على وجه الخصوص بصعوبة استخدامها، وقد وصفها فريد بروكس بأنها "أسوأ لغة برمجة تم تصميمها على الإطلاق" ... (http://dtsc.dfw.ibm.com/MVSDS/'HTTPD2.APPS.ZOSCLASS.PDF(ZCLA...)[link in original])
. - 1 2 3 آشلي وفرنانديز، لغة التحكم في الوظائف ، الصفحات من 7 إلى 8، الغلاف الخلفي.
- ↑ بلات، جون م. (1971). مقدمة في برمجة فورتران 4: استخدام مترجمات واتفور/واتفيف . باسيفيك باليساديس، كاليفورنيا: شركة جوديير للنشر. ص 276. ISBN 0-87620-440-X.
- ↑ شركة آي بي إم (1968). نظام التشغيل IBM System/360، إدخال الوظائف عن بُعد (ملف PDF) . تم الاطلاع عليه بتاريخ 5 مايو 2014 .
- ↑ شركة آي بي إم. "عبارات التحكم في نظام إدخال المهام 2 (JES2)" . z/OS V1R2.0 MVS JCL . مؤرشف من الأصل في 18 أكتوبر 2015. تم الاطلاع عليه في 25 فبراير 2013 .
- ↑ يمكن الاطلاع على أمثلة أخرى في قسم أوامر المشغل في أولوية التخزين التلقائي للطباعة في هيوستن
- ↑ شركة آي بي إم. "عبارات التحكم في نظام إدخال المهام الفرعي 3 (JES3)" . z/OS V1R2.0 MVS JCL . مؤرشف من الأصل في 18 أكتوبر 2015. تم الاطلاع عليه في 25 فبراير 2013 .
- ↑ شركة IBM (1974). تثبيت وتشغيل DOS/VS POWER/VS (ملف PDF) .
مصادر
- دليل مستخدم z/OS V1R6.0 MVS JCL (ملف PDF) (الطبعة الخامسة ). شركة IBM. سبتمبر 2004. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 19 أغسطس 2013. تاريخ الاطلاع: 12 أكتوبر 2006 .
- مرجع لغة التحكم في الوظائف (JCL) لنظام التشغيل z/OS الإصدار 7.0 (ملف PDF) ( الطبعة الحادية عشرة). شركة IBM. أبريل 2006. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 19 أغسطس 2013. تاريخ الاطلاع: 12 أكتوبر 2006 .
- جونستون، جيري (1 أبريل 2005). "VSE: نظرة على الأربعين عامًا الماضية" . مجلة z/Journal . توماس كوميونيكيشنز. مؤرشف من الأصل في 4 مارس 2009.
- "سجلات الحاسوب: 1972 - 1981" . ثينك كويست . شركة أوراكل . 1998. مؤرشف من الأصل في 21 يونيو 2009.
- ديوارد براون، غاري (7 يونيو 2002). zOS JCL ( الطبعة الخامسة). وايلي. ISBN 978-0-471-23635-1.
- "حقول عبارات JCL" . مرجع JCL لنظام التشغيل z/OS الإصدار 1R11.0 MVS، الإصدار 1R10.0-1R11.0 . شركة IBM. 2010.
- شركة آي بي إم (مارس 2007). مقدمة إلى الحاسوب المركزي الجديد: أساسيات z/VSE (ملف PDF) . آي بي إم، المنظمة الدولية للدعم الفني. ISBN 978-0-73-848624-6تم الاطلاع عليه بتاريخ 2017-12-06 .
- أشلي، روث؛ فرنانديز، جودي ن. (1978). لغة التحكم في العمل: دليل تعليمي ذاتي . نيويورك: جون وايلي وأولاده. ISBN 0-471-03205-0.
- ماكويلين، كيفن (1975). لغة التجميع لنظام التشغيل System/360–370 . فريسنو، كاليفورنيا: مايك موراش وشركاؤه. LCCN 74-29645 .
- ستيرن، نانسي؛ ستيرن، روبرت أ. (1980). برمجة كوبول المهيكلة ( الطبعة الثالثة). نيويورك: جون وايلي وأولاده. ISBN 0-471-04913-1.
- لغات البرمجة النصية
- جدولة العمل
- أنظمة تشغيل الحواسيب المركزية من IBM
