سؤال

أنا مرتبك بعض الشيء حول كيفية إنشاء متغير رمزي في JCL للحصول على مهمة أقوم به في فئة COBOL الخاصة بي.

على سبيل المثال، من المفترض أن "تحديد معلمة رمزية لخيار Parm وتحديد الاختبار والقرص كإعداد افتراضي."

كيف يمكنني تعيين خيار "Parm" ليكون معلمة رمزية؟

تحرير: اغفر الرقابة؛ يبدو أنني نسيت أن أذكر ما يعمل عليه. أنا أكتب ملف JCL هذا في Z / OS.

شكرا مقدما!

تعديل:

avisser:

لذلك، ما تقوله هو أنه يمكنني فقط الاتصال به فقط "& Parm =" اختبار، apost '" استدعاء JCL؟

تعديل:

avisser:

نعم، آسف، أنا حقا بحاجة إلى العمل على أن أكون أكثر تحديدا ... في بلدي COBOL JCL، وأنا أتصل بمجموعة التحويل البرمجي COBOL (IGYCRCTL)، محرر الرابط (HWL) وبرنامج جلب (Exec PGM =).

تعديل:

ربما يساعد ذلك في معرفة ما هو إخراجي. أنا حقا أقدر كل أولئك الذين حاولوا المساعدة حتى الآن.

انتاج:

------ JES2 إحصائيات الوظيفة ------

       37 CARDS READ                                                                                                            

       61 SYSOUT PRINT RECORDS                                                                                                  

        0 SYSOUT PUNCH RECORDS                                                                                                  

        3 SYSOUT SPOOL KBYTES                                                                                                   

     0.00 MINUTES EXECUTION TIME                                                                                                

! نهاية جيز بكرة الملف! 1 // kc03cefa وظيفة، 'matt r'، msgclass = h، typrun = scan jobs07731 // *
2 // step01 exec pgm = igycrctl، ®ion = 248k،
// & parm = "اختبار، apost"
3 // steplib dd dsn = igy340.sigycomp، disper = shr
/*
4 // syslin dd & dsn = && objset، وحدة = القرص، الفضاء = (TRK، (3،3))،
/ / & dress = (جديد، تمرير، حذف)
5 // sysprint dd sysout = *
6 // sysut1 وحدة dd = القرص، الفضاء = (cyl، (1،1))
7 // وحدة DD SYSUT2 = القرص، الفضاء = (CYL، (1،1))
8 // وحدة DD SYSUT3 = القرص، الفضاء = (CYL، (1،1))
9 // وحدة Sysut4 DD = القرص، الفضاء = (CYL، (1،1))
10 // وحدة DD SYSUT5 = القرص، الفضاء = (CYL، (1،1))
11 // وحدة SYSUT6 DD = القرص، الفضاء = (CYL، (1،1))
12 // وحدة Sysut7 DD = القرص، الفضاء = (CYL، (1،1))
//*
//*
13 // step02 exec pgm = hwl، & cond =، & ragion = 2048k،
// & parm =
14 // syslib dd dsn = cee.sceelked، diver = shr
15 // syslin dd & dsn = && objset، & press = (قديم، حذف)
16 // syslmod dd dsn = && templib (pgm6)،
// الفضاء = (1024، (50،20،1))، وحدة = القرص،
/ / dress = (جديد، CATLG، حذف)
17 // sysprint dd sysout = *
18 // طابعة DD SYSOUT = *
19 // Sysut1 وحدة DD = القرص، الفضاء = (TRK، (10،10))
//*
//*
20 // step01 exec pgm = pgm6، & parm = termthdact (تفريغ)
21 // steplib dd dsn = && templib، disper = shr
22 // ceedump.
23 // sysudump.
24 // طابعة DD SYSOUT = *
25 // المنتجات DD DSN = kc02322.csci465.sp09 (data1)، DIVE = SHR
26 // sysin dd *
! نهاية جيز بكرة الملف! STMT لا. رسالة 2 IEFC630I مجهولة الهوية الكلمات الرئيسية و Parm 4 iEFC630I مجهولة الهوية الكلمات الرئيسية & DSN 4 IEFC630I مجهولة الهوية الكلمة والقلم 13 IEFC630I مجهولة الهوية الكلمة والمستقبلة 13 IEFC630I مجهولة الهوية الكلمات الرئيسية و PARM 15 IEFC630I مجهولة الهوية الكلمات الرئيسية و DSN 15 IEFC630I مجهولة الهوية الكلمة والمؤسسة الرئيسية الكلمة الأساسية و Parm 22 IEFC605I مجال التشغيل مجهول 23 IEFC605I مجال التشغيل مجهول! نهاية جيز بكرة الملف!

هل كانت مفيدة؟

المحلول

المعلمات الرمزية هي الأسماء التي تسبقها أمبير. عند استخدامها في عبارة JCL، يتم تحويلها في وقت التشغيل إلى القيمة المرفقة. طريقة واحدة لخلقها (على Z / OS) تستخدم

// SET name = value

إعلان. إذا كنت تستخدم Parm، فيجب عليك تصميم برنامجك بحيث يمكن أن تعمل مع واحد. ربما المهمة حول كيفية القيام به الذي - التي (تلميح: قسم الارتباط). أو هو JCL جزء من فئة COBOL الخاصة بك؟

اختبار ونظر إلي لي مثل توجيهات التحويل البرمجي. لا أعرف إذا كنت تستطيع تحديدها في البرنامج الخاص بك، في مكان عملي، نوفرها فقط عند استدعاء المحول البرمجي.

تعديل:

حسنا، هذا غير عادي قليلا بالنسبة لي، حيث نميل إلى تجميع وتشغيل برامجنا في مجرى JCL منفصلين. لكن على اي حال.

أخذ البيان الثاني الخاص بك:

2 //STEP01 EXEC PGM=IGYCRCTL,&REGION=248K,
  // &PARM='TEST,APOST'

المنطقة و Parm ما يسمى بالمعايير الموضعية وهي كلمات رئيسية، وليس من المفترض حقا أن يتم تقديمها كأسماء رمزية، على الرغم من أنك حر في القيام بذلك (سيوضح ذلك رسائل "الكلمة الرئيسية المجهولة").
الاستخدام المشترك - عند الاقتضاء - هو توفير أسماء رمزية ل المعاملات من هذه المعلمات. ومن الواضح أن عليك تحديد قيمة لهم أولا، على سبيل المثال:

  // SET OPTIONS='TEST,APOST'
  //STEP01 EXEC PGM=IGYCRCTL,REGION=248K,
  // PARM=&OPTIONS

نصائح أخرى

حسنا، لقد فعلت بعض الحفر، مع التوجيه أن Avisser أعطاني، كنت قادرا على معرفة ما كان علي القيام به. لذلك، للإشارة المستقبلية لأي شخص قد يكون لديه هذا السؤال (أو واحد مماثل)، إليك ما أحسبت:

الخطوة 1: إنشاء "بروك" مع المتغيرات التي ستستخدمها.

السابق. أردت استخدام المتغيرات الخاصة ب "Parm" في مترجمي COBOL الخاص بي الذي كان لديه القيم الافتراضية ل "اختبار" و "Apost"، لذلك كتبت شيئا مثل:

//PROC1  PROC  CPARM='TEST,APOST',

الخطوة 2: استخدم تلك المعلمات الرمزية المعرفة حديثا في خطوة JCL الفعلية الخاصة بك. تظهر الشخصية "&" أن كل ما يتبعه هو معلمة رمزية.

السابق. لقد استخدمت "CPARM" المذكورة أعلاه لخطوة COBOL COMPLE:

//COB    EXEC  PGM=IGYCRCTL,REGION=&CREGION,  
//             PARM='&CPARM'

الخطوة 3: إنهاء "PROC" الخاص بك مع بيان "Pend" بعد خطوتك الفعلية.

السابق. بعد أن أدرجت جميع المتغيرات الخاصة بي وأدرست جميع خطوات التجميع (اسم المجمع، حيث يمكن العثور على المحول البرمجي، كما يمكن رؤيته مباشرة قبل بيان PEND، بيانات Sysut1-Sysut7)، ضع الكلمة الرئيسية في PEND:

//SYSUT7   DD UNIT=DISK,SPACE=(CYL,(1,1))  
//         PEND

الخطوة 4: إضافة أي خطوات JCL إضافية و / أو رمز إلى الملف المصدر الخاص بك وأنت خارج!

ملاحظات:

يمكن أن يكون لديك أكثر من بيان بروك واحد في ملف JCL واحد. كان لدي ثلاثة: واحد من أجل تجميع كوبول، واحد لمحرر الارتباط وواحد لجلب البرنامج. لدي أيضا رمز COBOL في نفس الملف الذي توجد فيه بيانات Proc الخاصة بي.

لقد حدث هذا في الإطار الرئيسي IBM يعمل Z / OS.

- يمكن أن ينظر إليه على أنه يمكن تعيين متغير "CParm" الخاص بي إلى الافتراضي من "الاختبار، والفوست". من الممكن أن يكون لديك متغير يكون فارغا افتراضيا عن طريق ترك الحقل فارغا (EX. CParm =،).

قد لاحظت أنه بعد تعريف CPARM، هناك فاصلة؛ هذا لأن لدي المزيد من المتغيرات بعد ذلك. يرجى تذكر أن آخر معلمة رمزية تقوم بإنشائها لأي Proc يجب أن يكون لها أي شيء يتبعه (أي فاصلة). يمكنك، بالطبع، وضع خط تعليق (// *) أو بروك أو رمز فعلي آخر بعد ذلك، ولكن يجب أن يكون للمعلمة الرمزية الأخيرة لا شيء يتبعها على نفس السطر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top