कार्य नियंत्रण भाषा: Difference between revisions

From Vigyanwiki
(Created page with "{{short description|Scripting languages used on IBM mainframe}} {{About|IBM mainframe job control language|open systems|job control (Unix)|general term|job control (computin...")
(No difference)

Revision as of 12:21, 22 June 2023

जॉब कंट्रोल लैंग्वेज (जेसीएल) आईबीएम मेनफ्रेम ऑपरेटिंग सिस्टम पर उपयोग की जाने वाली स्क्रिप्टिंग भाषाओं का एक नाम है, जो सिस्टम को प्रचय संसाधन चलाने या सबसिस्टम शुरू करने के तरीके के बारे में निर्देश देती है।[1] जेसीएल का उद्देश्य यह बताना है कि कौन से प्रोग्राम को किस फाइल या डिवाइस का उपयोग करके चलाना है[2] इनपुट या आउटपुट के लिए, और कभी-कभी यह भी इंगित करने के लिए कि किन परिस्थितियों में एक कदम छोड़ना है। जेसीएल में पैरामीटर किसी कार्य द्वारा उपयोग किए जाने वाले संसाधनों के साथ-साथ कार्य को किस मशीन पर चलाना चाहिए, इस पर नज़र रखने के लिए लेखांकन जानकारी भी प्रदान कर सकते हैं।

आईबीएम जॉब कंट्रोल की दो अलग-अलग भाषाएँ हैं:

  • ऑपरेटिंग सिस्टम वंश के लिए एक जो DOS/360 से शुरू होता है और जिसका नवीनतम सदस्य z/VSE है; और
  • OS/360 से z/OS तक की वंशावली के लिए दूसरा, बाद वाला अब जॉब एंट्री सबसिस्टम 2/3 एक्सटेंशन, #जॉब एंट्री कंट्रोल लैंग्वेज|जॉब एंट्री कंट्रोल लैंग्वेज (JECL) सहित।

वे कुछ बुनियादी वाक्यविन्यास नियम और कुछ बुनियादी अवधारणाएँ साझा करते हैं, लेकिन अन्यथा बहुत भिन्न होते हैं।[3] वीएम (ऑपरेटिंग सिस्टम) में जेसीएल नहीं है; CP/CMS घटकों में से प्रत्येक में कमांड भाषाएँ होती हैं।

शब्दावली

जेसीएल के संयोजन में उपयोग किए जाने वाले कुछ शब्द या वाक्यांश आईबीएम मेनफ्रेम प्रौद्योगिकी के लिए विशिष्ट हैं।

  • डेटासेट: डेटासेट एक फ़ाइल है; यह अस्थायी या स्थायी हो सकता है, और डिस्क ड्राइव, टेप स्टोरेज या अन्य डिवाइस पर स्थित हो सकता है।[4][5]
  • सदस्य: एक विभाजित डेटासेट (पीडीएस) का सदस्य एक पीडीएस के भीतर एक व्यक्तिगत डेटासेट है। कोष्ठक में सदस्य नाम के साथ पीडीएस का नाम निर्दिष्ट करके किसी सदस्य तक पहुंचा जा सकता है। उदाहरण के लिए, SYS1.MACLIB में सिस्टम मैक्रो GETMAIN को SYS1.MACLIB(GETMAIN) के रूप में संदर्भित किया जा सकता है।[6] * विभाजित डेटासेट: एक विभाजित डेटासेट या पीडीएस सदस्यों का संग्रह, या संग्रह है। विभाजित डेटासेट का उपयोग आमतौर पर स्रोत कोड, असेंबलर मैक्रोज़ (SYS1.MACLIB), सिस्टम कॉन्फ़िगरेशन (SYS1.PARMLIB), पुन: प्रयोज्य JCL प्रक्रियाओं (SYS1.PROCLIB) आदि जैसे टेक्स्ट डेटा को संग्रहीत करने के लिए किया जाता है। फ़ाइलें (ज़िप, टीएआर, आदि) संग्रहित करें और अन्य ऑपरेटिंग सिस्टम में निर्देशिकाओं के साथ। इनका उपयोग बाइनरी कोड (लोड मॉड्यूल या प्रोग्राम ऑब्जेक्ट) को संग्रहीत करने के लिए भी किया जाता है; उस रूप में, वे मोटे तौर पर यूनिक्स-आधारित प्रणालियों में एआर (यूनिक्स)|एआर-आधारित स्थिर पुस्तकालयों के समान हैं। ऐसी अधिकांश संरचनाओं की तरह, एक बार संग्रहीत सदस्य को अद्यतन नहीं किया जा सकता है; सदस्य को हटाया जाना चाहिए और प्रतिस्थापित किया जाना चाहिए, जैसे कि IEBUPDTE उपयोगिता के साथ।[6]1989 में एमवीएस डीएफपी 3.2 के जारी होने के बाद से, पीडीएसई (विभाजित डेटा सेट विस्तारित) पीडीएस के एक उन्नत संस्करण के रूप में अस्तित्व में है;[7] उपयोगकर्ता या एप्लिकेशन प्रोग्रामर के दृष्टिकोण से, वे काफी हद तक अपरिवर्तित हैं (कुछ अस्पष्ट विरासत सुविधाओं को हटाने के अलावा), लेकिन उनका आंतरिक कार्यान्वयन बहुत अलग है।
  • यूएसएस: यूनिक्स सिस्टम सेवाएं, एमवीएस के हिस्से के रूप में चलने वाला एक यूनिक्स सबसिस्टम, और यूनिक्स फ़ाइलों, स्क्रिप्ट, कार्यों और प्रोग्रामों को यूनिक्स वातावरण में मेनफ्रेम पर चलाने की अनुमति देता है।

प्रेरणा

मूल रूप से, मेनफ्रेम सिस्टम बैच प्रोसेसिंग की ओर उन्मुख थे। कई बैच नौकरियों के लिए सेटअप की आवश्यकता होती है, मुख्य भंडारण के लिए विशिष्ट आवश्यकताओं के साथ, और चुंबकीय टेप, निजी डिस्क वॉल्यूम और विशेष रूपों के साथ प्रिंटर जैसे समर्पित उपकरणों की आवश्यकता होती है।[8] जेसीएल को यह सुनिश्चित करने के साधन के रूप में विकसित किया गया था कि नौकरी शुरू होने से पहले सभी आवश्यक संसाधन उपलब्ध हैं। उदाहरण के लिए, कई प्रणालियाँ, जैसे कि लिनक्स, कमांड लाइन इंटरफेस पर निर्दिष्ट आवश्यक डेटासेट की पहचान की अनुमति देती हैं, और इसलिए शैल (कंप्यूटिंग) द्वारा प्रतिस्थापन के अधीन होती हैं, या रन-टाइम पर प्रोग्राम द्वारा उत्पन्न होती हैं। इन प्रणालियों पर ऑपरेटिंग सिस्टम कार्य अनुसूचक को कार्य की आवश्यकताओं के बारे में बहुत कम या कोई जानकारी नहीं होती है। इसके विपरीत, जेसीएल सभी आवश्यक डेटासेट और उपकरणों को स्पष्ट रूप से निर्दिष्ट करता है। शेड्यूलर कार्य को चलाने के लिए जारी करने से पहले संसाधनों को पूर्व-आवंटित कर सकता है। यह गतिरोध से बचने में मदद करता है, जहां जॉब A संसाधन R1 रखता है और संसाधन R2 का अनुरोध करता है, जबकि समवर्ती रूप से चलने वाला जॉब B संसाधन R2 रखता है और R1 का अनुरोध करता है। ऐसे मामलों में कंप्यूटर ऑपरेटर के लिए एकमात्र समाधान यह है कि वह किसी एक कार्य को समाप्त कर दे, जिसे फिर से शुरू करने की आवश्यकता होती है। कार्य नियंत्रण के साथ, यदि कार्य A को चलाने के लिए निर्धारित किया गया है, तो कार्य B तब तक प्रारंभ नहीं किया जाएगा जब तक कार्य A पूरा नहीं कर लेता या आवश्यक संसाधन जारी नहीं कर देता।

डॉस और ओएस जेसीएल के लिए सामान्य विशेषताएं

नौकरियाँ, चरण और प्रक्रियाएँ

DOS और OS दोनों के लिए कार्य की इकाई नौकरी धारा है। किसी कार्य में एक या कई चरण होते हैं, जिनमें से प्रत्येक एक विशिष्ट प्रोग्राम चलाने का अनुरोध होता है। उदाहरण के लिए, संबंध का डेटाबेस के दिनों से पहले, प्रबंधन के लिए एक मुद्रित रिपोर्ट तैयार करने के कार्य में निम्नलिखित चरण शामिल हो सकते हैं: उचित रिकॉर्ड का चयन करने और उन्हें एक अस्थायी फ़ाइल में कॉपी करने के लिए एक उपयोगकर्ता-लिखित प्रोग्राम; आमतौर पर सामान्य प्रयोजन उपयोगिता का उपयोग करके, अस्थायी फ़ाइल को आवश्यक क्रम में क्रमबद्ध करना; जानकारी को इस तरह से प्रस्तुत करने के लिए एक उपयोगकर्ता-लिखित कार्यक्रम जो अंतिम उपयोगकर्ताओं के लिए पढ़ना आसान हो और इसमें उप-योग जैसी अन्य उपयोगी जानकारी भी शामिल हो; और मॉनिटर या टर्मिनल पर प्रदर्शन के लिए अंतिम-उपयोगकर्ता जानकारी के चयनित पृष्ठों को प्रारूपित करने के लिए एक उपयोगकर्ता-लिखित प्रोग्राम।

डॉस और ओएस जेसीएल दोनों में पहला कार्ड जॉब कार्ड होना चाहिए, जो:[9] *कार्य की पहचान करता है.

  • आमतौर पर कंप्यूटर सेवा विभाग को उपयुक्त उपयोगकर्ता विभाग को बिल देने में सक्षम बनाने के लिए जानकारी प्रदान करता है।
  • परिभाषित करता है कि संपूर्ण कार्य को कैसे चलाया जाना है, उदा. कतार में अन्य नौकरियों के सापेक्ष इसकी प्राथमिकता।

प्रक्रियाएं (आमतौर पर प्रोसेस कहलाती हैं) किसी कार्य में डाले गए चरणों या चरणों के समूहों के लिए पूर्व-लिखित जेसीएल हैं। दोनों जेसीएल ऐसी प्रक्रियाओं की अनुमति देते हैं। प्रोक्स का उपयोग उन चरणों को दोहराने के लिए किया जाता है जिनका उपयोग एक ही कार्य में या कई अलग-अलग कार्यों में कई बार किया जाता है। वे प्रोग्रामर का समय बचाते हैं और त्रुटियों के जोखिम को कम करते हैं। एक प्रक्रिया को चलाने के लिए बस जेसीएल फ़ाइल में एक कार्ड शामिल होता है जो एक निर्दिष्ट फ़ाइल से प्रक्रिया की प्रतिलिपि बनाता है, और इसे जॉबस्ट्रीम में सम्मिलित करता है। साथ ही, प्रोसेस में प्रत्येक उपयोग के लिए प्रक्रिया को अनुकूलित करने के लिए पैरामीटर शामिल हो सकते हैं।

मूल वाक्यविन्यास

DOS और OS JCL दोनों में अधिकतम प्रयोग करने योग्य लाइन की लंबाई 80 अक्षर है, क्योंकि जब DOS/360 और OS/360 का पहली बार उपयोग किया गया था तो कंप्यूटर सिस्टम में नया इनपुट प्रदान करने की मुख्य विधि 80-कॉलम वाले छिद्रित कार्ड थे।[10] बाद में लंबी रिकॉर्ड लंबाई वाली डिस्क या टेप फ़ाइलों के माध्यम से जॉब सबमिट करना संभव हो गया, लेकिन ऑपरेटिंग सिस्टम के जॉब सबमिशन घटकों ने कैरेक्टर 80 के बाद सब कुछ नजरअंदाज कर दिया।

कड़ाई से कहें तो दोनों ऑपरेटिंग सिस्टम परिवार प्रति पंक्ति केवल 71 वर्णों का उपयोग करते हैं। अक्षर 73-80 आम तौर पर कार्ड अनुक्रम संख्याएं होती हैं जिन्हें सिस्टम कार्य समाप्ति रिपोर्ट पर मुद्रित करता है और ऑपरेटिंग सिस्टम द्वारा रिपोर्ट की गई किसी भी त्रुटि के स्थान की पहचान करने के लिए उपयोगी होता है। कैरेक्टर 72 को आमतौर पर खाली छोड़ दिया जाता है, लेकिन इसमें एक गैर-खाली कैरेक्टर हो सकता है जो यह दर्शाता है कि जेसीएल स्टेटमेंट अगले कार्ड पर जारी है।

UNIX सिस्टम सर्विसेज फ़ाइल नामों को छोड़कर, सभी कमांड, पैरामीटर नाम और मान बड़े अक्षरों में होने चाहिए।

इन-स्ट्रीम इनपुट (नीचे देखें) को छोड़कर सभी लाइनें एक स्लैश से शुरू होनी चाहिए/, और ऑपरेटिंग सिस्टम द्वारा संसाधित की जाने वाली सभी लाइनें दो स्लैश से शुरू होनी चाहिए // - हमेशा पहले कॉलम से शुरू करें। हालाँकि, दो अपवाद हैं: सीमांकक कथन और टिप्पणी कथन। एक सीमांकक कथन एक स्लैश और एक तारांकन चिह्न से शुरू होता है (/*), और ओएस जेसीएल में एक टिप्पणी विवरण स्लैश और तारांकन की एक जोड़ी के साथ शुरू होता है (//*) या डॉस जेसीएल में एक तारांकन चिह्न।

कई जेसीएल कथन 71 अक्षरों के भीतर फिट होने के लिए बहुत लंबे हैं, लेकिन इन्हें अनिश्चित संख्या में निरंतरता कार्डों तक बढ़ाया जा सकता है:

OS JCL DOS JCL
Ending all actual JCL cards except the last at a point where the syntax requires a comma (,) Ending all actual JCL cards except the last at a point where the syntax requires a comma (,) and a non-blank character in column 72
Starting each continuation card with // in column 1 and then at least 1 space Starting each continuation card with spaces and continuing in column 15

सबसे सामान्य प्रकार के कार्ड की संरचना इस प्रकार है:[11]

OS JCL DOS JCL
  • //
  • Name field for this statement, following // with no space between. If this statement does not have a name at least one blank immediately follows the //.
  • Space(s)
  • Statement type
  • Space(s)
  • Parameters, which vary depending on the statement type, separated by commas and with no space between them.
  • // (spaces if this is a continuation of a previous line)
  • Statement type for this statement, following // with a space between.
  • Space(s)
  • Name of resource
  • Space(s)
  • Parameters, which vary depending on the statement type, separated by commas and with no space between them. Positional parameters, followed by keyword parameters.


इन-स्ट्रीम इनपुट

डॉस और ओएस जेसीएल दोनों इन-स्ट्रीम इनपुट की अनुमति देते हैं, यानी ऐसे कार्ड जिन्हें ऑपरेटिंग सिस्टम के बजाय एप्लिकेशन प्रोग्राम द्वारा संसाधित किया जाना है। जो डेटा लंबे समय तक रखा जाना है, उसे आम तौर पर डिस्क पर संग्रहीत किया जाएगा, लेकिन इंटरएक्टिव टर्मिनलों का उपयोग आम होने से पहले ऐसी डिस्क फ़ाइलों को बनाने और संपादित करने का एकमात्र तरीका कार्ड पर नए डेटा की आपूर्ति करना था।

DOS और OS JCL में इन-स्ट्रीम इनपुट की शुरुआत का संकेत देने के अलग-अलग तरीके हैं, लेकिन दोनों इन-स्ट्रीम इनपुट को समाप्त करते हैं /* अंतिम इन-स्ट्रीम डेटा कार्ड के बाद कार्ड के कॉलम 1 पर। इससे ऑपरेटिंग सिस्टम कार्ड में JCL की प्रोसेसिंग फिर से शुरू कर देता है /* कार्ड।[12]

  • ओएस जेसीएल: डीडी स्टेटमेंट का उपयोग इन-स्ट्रीम डेटा, साथ ही डेटा सेट का वर्णन करने के लिए किया जा सकता है। इन-स्ट्रीम डेटा से संबंधित डीडी स्टेटमेंट में डीडी पहचानकर्ता के बाद एक तारांकन चिह्न (*) होता है, उदाहरण के लिए। //SYSIN DD *. जेसीएल स्टेटमेंट को डीडी डेटा स्टेटमेंट का उपयोग करके इन-स्ट्रीम डेटा के हिस्से के रूप में शामिल किया जा सकता है।
डीएलएम नामक एक ऑपरेंड एक सीमांकक निर्दिष्ट करने की अनुमति देता है (डिफ़ॉल्ट /* है)। एक वैकल्पिक सीमांकक निर्दिष्ट करने से जेसीएल को डेटा के रूप में पढ़ा जा सकता है, उदाहरण के लिए लाइब्रेरी सदस्य को प्रक्रियाओं की प्रतिलिपि बनाना या आंतरिक पाठक को नौकरी सबमिट करना।
  • एक उदाहरण,[13] जो आंतरिक रीडर ('INTRDR') को एक कार्य सबमिट करता है और फिर दो फ़ाइलें हटा देता है वह है:

<सिंटैक्सहाइलाइट लैंग= जेसीएल हाइलाइट= 8,12,13 > //SUBM EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=Z //SYSUT2 DD SYSOUT=(ए,INTRDR) //सिसिन डीडी डमी //SYSUT1 DD डेटा,DLM=ZZ //Runlatr जॉब ACCT,MANIX,क्लास=A.TYPRUN=होल्ड //* ^ बाद में चलाने के लिए एक नौकरी //CPUHOG EXEC PGM=PICALC1K //आउटपुट DD DSN=PICALC.1000DGTS,स्पेस=(TRK,1),DISP=(,KEEP) ZZ //* ^ जैसा कि DLM=ZZ द्वारा निर्दिष्ट है //Dropoldr EXEC PGM=IEFBR14 //DELETE4 DD DSN=PICALC.4DGTS,DISP=(पुराना,हटाएं) //DELETE5 DD DSN=PICALC.5DGTS,DISP=(पुराना,हटाएं) </वाक्यविन्यास हाइलाइट>

  1. PICALC1K नामक प्रोग्राम (TYPRUN=HOLD) मैन्युअल रूप से जारी होने की प्रतीक्षा करेगा
  2. IEFBR14 नामक प्रोग्राम अभी चलेगा और पूरा होने पर, दो मौजूदा फ़ाइलें, PICALC.4DGTS और PICALC.5DGTS हटा दी जाएंगी।
  • डॉस जेसीएल: प्रोग्राम के लिए EXEC कार्ड के बाद बस इन-स्ट्रीम डेटा दर्ज करें।

जटिलता

ओएस जेसीएल की अधिकांश जटिलता, विशेष रूप से, डेटा सेट (आईबीएम मेनफ्रेम) जानकारी निर्दिष्ट करने के लिए बड़ी संख्या में विकल्पों से उत्पन्न होती है। जबकि यूनिक्स जैसे ऑपरेटिंग सिस्टम पर फ़ाइलों को बाइट्स की क्रमबद्ध धाराओं में सारगर्भित किया जाता है, जिसमें संरचित डेटा को पढ़ने और लिखने का कार्य विशेष रूप से उपयोगकर्ता-स्तरीय कार्यक्रमों (जो अंततः, ऐसी धाराओं को निगलना और उत्सर्जित करना) और डेटा के व्यावहारिक विवरण से संबंधित होता है। उपयोगकर्ता प्रोग्रामों की जानकारी के बिना ऑपरेटिंग सिस्टम द्वारा बड़े पैमाने पर भंडारण और पहुंच को नियंत्रित किया जाता है; OS/360 और उसके उत्तराधिकारियों पर डेटासेट उनके फ़ाइल प्रकार और आकार, रिकॉर्ड प्रकार और लंबाई, ब्लॉक आकार, चुंबकीय टेप डेटा भंडारण घनत्व जैसी डिवाइस-विशिष्ट जानकारी और लेबल जानकारी को उजागर करते हैं। हालाँकि कई विकल्पों के लिए सिस्टम डिफ़ॉल्ट हैं, फिर भी प्रोग्रामर द्वारा जेसीएल और प्रोग्राम में कोडित जानकारी के संयोजन के माध्यम से बहुत कुछ निर्दिष्ट किया जाना बाकी है। प्रोग्राम में जितनी अधिक जानकारी कोडित की जाएगी, वह उतना ही कम लचीला होगा, क्योंकि प्रोग्राम की जानकारी जेसीएल में किसी भी चीज़ को ओवरराइड कर देती है; इस प्रकार, अधिकांश जानकारी आमतौर पर जेसीएल के माध्यम से प्रदान की जाती है।

उदाहरण के लिए, यूनिक्स ऑपरेटिंग सिस्टम पर फ़ाइल प्रतिलिपि बनाना करने के लिए, उपयोगकर्ता एक कमांड दर्ज करेगा जैसे:

सीपी पुरानी फ़ाइल नई फ़ाइल

JCL का उपयोग करते हुए निम्नलिखित उदाहरण का उपयोग OS/360 पर फ़ाइल की प्रतिलिपि बनाने के लिए किया जा सकता है: <सिंटैक्सहाइलाइट लैंग= जेसीएल हाइलाइट= 3 > //IS198CPY जॉब (IS198T30500), 'कॉपी जॉब', क्लास=L, MSGCLASS=X //COPY01 EXEC PGM=IEBGENER //सिप्रिंट डीडी सिसौट=* //SYSUT1 DD DSN=OLDFILE,DISP=SHR //SYSUT2 DD DSN=न्यूफ़ाइल, // DISP=(नया,CATLG,हटाएं), // स्पेस=(CYL,(40,5),RLSE), // DCB=(LRECL=115,BLKSIZE=1150) //सिसिन डीडी डमी </वाक्यविन्यास हाइलाइट>

जेसीएल की जटिलता के लिए दूसरी व्याख्या आईबीएम पीसी या यूनिक्स जैसे वातावरण में नौकरी चलाने की अपेक्षाओं से भिन्न है।

  • लो-एंड सिस्टम/360 सीपीयू 1980 के दशक के मध्य के पीसी की तुलना में कम शक्तिशाली और अधिक महंगे थे जिनके लिए MS-DOS डिज़ाइन किया गया था। OS/360 न्यूनतम 32 KB मेमोरी साइज वाले सिस्टम के लिए था और DOS/360 न्यूनतम 16 KB वाले सिस्टम के लिए था। एक IBM 2030|360/30 CPU—जब सिस्टम/360 की घोषणा 1964 में की गई थी तब निम्न-स्तरीय सीपीयू-प्रति सेकंड 1.8K से 34.5K निर्देशों को संसाधित करता था।[14] 1981 में पहले IBM PC में 16 KB या 64 KB मेमोरी थी और यह प्रति सेकंड लगभग 330K निर्देशों को प्रोसेस करता था।[15][16] परिणामस्वरूप, जेसीएल को कंप्यूटर के लिए प्रोसेस करना आसान होना था, और प्रोग्रामर द्वारा उपयोग में आसानी बहुत कम प्राथमिकता थी। इस युग में प्रोग्रामर कंप्यूटर की तुलना में बहुत सस्ते थे।
  • JCL को बैच प्रोसेसिंग के लिए डिज़ाइन किया गया था। इस प्रकार, इसे ऑपरेटिंग सिस्टम को सब कुछ बताना होगा, जिसमें एक चरण के परिणाम के आधार पर क्या करना है। उदाहरण के लिए, DISP=(NEW,CATLG,DELETE) इसका मतलब है कि यदि प्रोग्राम सफलतापूर्वक चलता है, तो एक नई फ़ाइल बनाएं और उसे सूचीबद्ध करें; अन्यथा नई फ़ाइल हटाएँ. पीसी पर चलने वाले प्रोग्राम अक्सर समस्याओं से निपटने के बाद सफाई के लिए उपयोगकर्ता पर निर्भर करते हैं।
  • सिस्टम/360 मशीनों को एक संगठन में सभी उपयोगकर्ताओं द्वारा साझा करने के लिए डिज़ाइन किया गया था। इतना JOB कार्ड ऑपरेटिंग सिस्टम को बताता है कि उपयोगकर्ता के खाते को कैसे बिल देना है (IS198T30500), भंडारण और अन्य संसाधनों की कितनी पूर्वनिर्धारित मात्रा आवंटित की जा सकती है (CLASS=L), और कई अन्य चीज़ें। //SYSPRINT DD SYSOUT=* कंप्यूटर को प्रोग्राम की रिपोर्ट को डिफ़ॉल्ट प्रिंटर (कंप्यूटिंग) पर प्रिंट करने के लिए कहता है जो साधारण कागज के साथ लोड होता है, न कि किसी अन्य प्रिंटर पर जो खाली चेक के साथ लोड किया जा सकता है। DISP=SHR ऑपरेटिंग सिस्टम को बताता है कि अन्य प्रोग्राम पढ़ सकते हैं OLDFILE बहु क्रमादेशन

DOS/360 और OS/360 ऑपरेटिंग सिस्टम के बाद के संस्करण मूल JCL की अधिकांश विशेषताओं को बरकरार रखते हैं - हालाँकि ग्राहकों को अपनी सभी JCL फ़ाइलों को फिर से लिखने के लिए मजबूर करने से बचने के लिए कुछ सरलीकरण किया गया है।[citation needed] कई उपयोगकर्ता जेसीएल स्टेटमेंट के किसी भी सेट को एक प्रक्रिया के रूप में सहेजते हैं जिसका उपयोग एक या दो से अधिक होने की संभावना है।[17] ओएस जेसीएल का सिंटैक्स सिस्टम/360 असेंबली भाषा में मैक्रो अनुदेश के सिंटैक्स के समान है, और इसलिए प्रोग्रामर उस समय परिचित रहे होंगे जब कई प्रोग्राम असेंबली भाषा में कोडित किए गए थे।

डॉस जेसीएल

स्थितीय पैरामीटर

//TLBL TAPEFIL,'COPYTAPE.JOB',,,,2
//ASSGN SYS005,200
//DLBL DISKFIL,'COPYTAPE.JOB',0,SD
//EXTENT SYS005,VOL01,1,0,800,1600

डॉस जेसीएल पैरामीटर स्थितीय हैं, जिससे उन्हें पढ़ना और लिखना कठिन हो जाता है, लेकिन सिस्टम के लिए पार्स करना आसान हो जाता है।

  • प्रोग्रामर को यह याद रखना चाहिए कि प्रत्येक प्रकार के स्टेटमेंट में कौन सा आइटम किस स्थिति में जाता है।
  • यदि कुछ वैकल्पिक पैरामीटर छोड़ दिए गए हैं लेकिन बाद में शामिल किए गए हैं, तो छोड़े गए पैरामीटर को बिना किसी रिक्त स्थान के अल्पविराम द्वारा दर्शाया जाना चाहिए, जैसा कि ऊपर टीएलबीएल कथन में है।

डॉस जेसीएल कुछ हद तक ओएस जेसीएल की तुलना में कम मापदंडों के साथ अधिक कथनों का उपयोग करके स्थितीय मापदंडों की कठिनाइयों को कम करता है। उदाहरण में ASSGN, DLBL और EXTENT स्टेटमेंट एक ही काम करते हैं (यह निर्दिष्ट करते हुए कि एक नई डिस्क फ़ाइल को कहाँ संग्रहीत किया जाना चाहिए) DD ओएस जेसीएल में बयान।

डिवाइस निर्भरता

मूल DOS/360 और DOS/VS के अधिकांश संस्करणों में डिवाइस का मॉडल नंबर निर्दिष्ट करना पड़ता था, जिसका उपयोग प्रत्येक डिस्क या टेप फ़ाइल के लिए किया जाना था - यहां तक ​​कि मौजूदा फ़ाइलों के लिए और अस्थायी फ़ाइलों के लिए भी, जिन्हें हटा दिया जाएगा। कार्य का अंत. इसका मतलब यह था कि, यदि कोई ग्राहक अधिक आधुनिक उपकरणों में अपग्रेड करता है, तो कई जेसीएल फाइलों को बदलना होगा।

बाद में DOS/360 परिवार के सदस्यों ने उन स्थितियों की संख्या कम कर दी जिनमें डिवाइस मॉडल नंबर की आवश्यकता होती थी।

मैन्युअल फ़ाइल आवंटन

DOS/360 को मूल रूप से प्रोग्रामर को डायरेक्ट-एक्सेस स्टोरेज डिवाइस पर सभी फ़ाइलों का स्थान और आकार निर्दिष्ट करने की आवश्यकता थी। EXTENT ई> कार्ड उस वॉल्यूम को निर्दिष्ट करता है जिस पर सीमा स्थित है, आरंभिक निरपेक्ष ट्रैक और ट्रैक की संख्या। z/VSE के लिए एक फ़ाइल में विभिन्न वॉल्यूम पर 256 विस्तार तक हो सकते हैं।

ओएस जेसीएल

OS JCL में तीन मूल कथन प्रकार होते हैं:[18]

  • JOB विवरण, जो कार्य की शुरुआत की पहचान करता है, और संपूर्ण कार्य के बारे में जानकारी, जैसे बिलिंग, रन प्राथमिकता, और समय और स्थान सीमा।
  • EXEC कथन, जो कार्यक्रम या प्रक्रिया की पहचान करता है[19] कार्य के इस चरण में निष्पादित होने के लिए,
    और चरण के बारे में जानकारी, जिसमें किसी चरण को चलाने या छोड़ने की शर्तें भी शामिल हैं।
  • DD (डेटा परिभाषा) कथन, जो एक चरण में उपयोग की जाने वाली डेटा फ़ाइल की पहचान करते हैं, और उस फ़ाइल के बारे में विस्तृत जानकारी देते हैं। DD चरण के भीतर कथन किसी भी क्रम में हो सकते हैं।

शुरुआत से ही, OS परिवार के लिए JCL (z/OS तक और इसमें शामिल) अधिक लचीला और उपयोग में आसान था।

निम्नलिखित उदाहरण सिंटैक्स की पुरानी शैली का उपयोग करते हैं जो 1964 में सिस्टम/360 के लॉन्च से ही प्रदान की गई थी। पुरानी सिंटैक्स अभी भी उन नौकरियों में काफी आम है जो केवल मामूली बदलावों के साथ दशकों से चल रही हैं।

जेसीएल कथनों को कोड करने के नियम

प्रत्येक JCL कथन को पाँच क्षेत्रों में विभाजित किया गया है:[20] पहचानकर्ता-फ़ील्ड नाम-फ़ील्ड ऑपरेशन-फ़ील्ड पैरामीटर-फ़ील्ड टिप्पणियाँ-फ़ील्ड

                 ^ ^ ^ ^
              कोई जगह नहीं, कोई जगह नहीं, कोई जगह नहीं

पहचानकर्ता-फ़ील्ड को नाम-फ़ील्ड के साथ जोड़ा जाना चाहिए, यानी उनके बीच कोई रिक्त स्थान नहीं होना चाहिए।

  • पहचानकर्ता-फ़ील्ड (//): पहचानकर्ता फ़ील्ड सिस्टम को इंगित करता है कि एक स्टेटमेंट डेटा के बजाय एक जेसीएल स्टेटमेंट है। पहचानकर्ता फ़ील्ड में निम्नलिखित शामिल हैं:
    • डिलीमीटर स्टेटमेंट को छोड़कर, सभी जेसीएल स्टेटमेंट्स के कॉलम 1 और 2 में शामिल हैं //
    • सीमांकक विवरण के कॉलम 1 और 2 में शामिल हैं /*
    • जेसीएल टिप्पणी विवरण के कॉलम 1, 2, और 3 में शामिल हैं //*
  • नाम-फ़ील्ड: नाम फ़ील्ड एक विशेष कथन की पहचान करता है ताकि अन्य कथन और सिस्टम इसे संदर्भित कर सकें। जेसीएल कथनों के लिए, इसे इस प्रकार कोडित किया जाना चाहिए:
    • नाम कॉलम 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)

ओएस जेसीएल स्टेटमेंट के सभी प्रमुख पैरामीटर कीवर्ड द्वारा पहचाने जाते हैं और इन्हें किसी भी क्रम में प्रस्तुत किया जा सकता है। इनमें से कुछ में दो या दो से अधिक उप-पैरामीटर होते हैं, जैसे SPACE (एक नई फ़ाइल को कितना डिस्क स्थान आवंटित करना है) और DCB (फ़ाइल के लेआउट का विस्तृत विवरण) उपरोक्त उदाहरण में। उप-पैरामीटर कभी-कभी स्थितीय होते हैं, जैसे कि SPACE, लेकिन सबसे जटिल पैरामीटर, जैसे DCB, कीवर्ड उप-पैरामीटर हैं।

स्थितीय पैरामीटर को कीवर्ड पैरामीटर से पहले होना चाहिए। कीवर्ड पैरामीटर हमेशा बराबर चिह्न का उपयोग करके किसी कीवर्ड को मान निर्दिष्ट करते हैं (=).[21]


===डेटा एक्सेस (डीडी स्टेटमेंट)=== DD e> स्टेटमेंट का उपयोग डेटा को संदर्भित करने के लिए किया जाता है। यह कथन किसी प्रोग्राम के डेटासेट के आंतरिक विवरण को बाहरी उपकरणों पर डेटा से जोड़ता है: डिस्क, टेप, कार्ड, प्रिंटर इत्यादि। डीडी डिवाइस प्रकार (उदाहरण के लिए '181', '2400-5',') जैसी जानकारी प्रदान कर सकता है। टेप'), टेप या डिस्क के लिए एक वॉल्यूम (कंप्यूटिंग) संख्या, और डेटा फ़ाइल का विवरण, जिसे कहा जाता है DCB प्रोग्राम में डेटा नियंत्रण ब्लॉक (डीसीबी) के बाद उपपैरामीटर का उपयोग फ़ाइल की पहचान करने के लिए किया जाता है।

फ़ाइल का वर्णन करने वाली जानकारी तीन स्रोतों से आ सकती है: डीडी कार्ड की जानकारी, टेप या डिस्क पर संग्रहीत मौजूदा फ़ाइल के लिए डेटासेट लेबल जानकारी, और प्रोग्राम में कोडित डीसीबी मैक्रो। जब फ़ाइल खोली जाती है तो यह डेटा मर्ज हो जाता है, जिसमें डीडी जानकारी को लेबल जानकारी पर प्राथमिकता दी जाती है, और डीसीबी जानकारी को दोनों पर प्राथमिकता दी जाती है। अद्यतन विवरण फिर डेटासेट लेबल पर वापस लिखा जाता है। यदि गलत डीसीबी जानकारी प्रदान की जाती है तो इससे अनपेक्षित परिणाम हो सकते हैं।[22] ऊपर सूचीबद्ध मापदंडों और विभिन्न एक्सेस विधियों और उपकरणों के लिए विशिष्ट जानकारी के कारण डीडी स्टेटमेंट सबसे जटिल जेसीएल स्टेटमेंट है। एक आईबीएम संदर्भ में डीडी स्टेटमेंट का मैनुअल विवरण 130 से अधिक पृष्ठों का है - जो कि JOB और EXEC स्टेटमेंट के संयुक्त विवरण से दोगुने से भी अधिक है।[23] डीडी स्टेटमेंट इनलाइन डेटा को जॉब स्ट्रीम में इंजेक्ट करने की अनुमति देता है। यह IDCAMS, SORT इत्यादि जैसी उपयोगिताओं को नियंत्रण जानकारी प्रदान करने के साथ-साथ कार्यक्रमों को इनपुट डेटा प्रदान करने के लिए उपयोगी है।

डिवाइस स्वतंत्रता

शुरुआत से ही, ऑपरेटिंग सिस्टम के ओएस परिवार के लिए जेसीएल ने उच्च स्तर की डिवाइस स्वतंत्रता की पेशकश की। यहां तक ​​कि नई फाइलों के लिए भी जिन्हें काम खत्म होने के बाद रखा जाना था, कोई भी डिवाइस प्रकार को सामान्य शब्दों में निर्दिष्ट कर सकता है, उदाहरण के लिए, UNIT=DISK, UNIT=TAPE, या UNIT=SYSSQ (टेप या डिस्क). बेशक, अगर यह मायने रखता है तो कोई मॉडल नंबर या यहां तक ​​कि एक विशिष्ट डिवाइस पता भी निर्दिष्ट कर सकता है।[24]


प्रक्रियाएँ

प्रक्रियाएं एक या अधिक EXEC PGM= और DD कथनों को समूहीकृत करने और फिर उन्हें EXEC PROC=procname -या- बस EXEC procname के साथ लागू करने की अनुमति देती हैं। [25] प्रोसीजर लाइब्रेरी नामक सुविधा पूर्व-भंडारण प्रक्रियाओं की अनुमति देती है।

PROC और PEND

के साथ प्रक्रिया को समाप्त करके प्रक्रियाओं को जॉब स्ट्रीम में भी शामिल किया जा सकता है // PEND कथन, फिर इसे नाम से पुकारना वैसा ही था जैसे कि यह एक प्रक्रिया पुस्तकालय में हो।

उदाहरण के लिए: <सिंटैक्सहाइलाइट लैंग= जेसीएल हाइलाइट= 1,6 > //संप्रिंट प्रोसी //प्रिंट EXEC PGM=IEBGENER //SYSUT1 DD DSN=CEO.FILES.DAYEND.RPT24A,DISP=SHR //SYSUT2 DD SYSOUT=A //सिसिन डीडी डमी // पेंड // कार्यकारी सारांश </वाक्यविन्यास हाइलाइट>

पैरामीटरीकृत प्रक्रियाएं

ओएस जेसीएल प्रक्रियाओं को शुरू से ही मानकीकृत किया गया था, जिससे वे मैक्रो असेंबलर या यहां तक ​​कि सरल सबरूटीन की तरह बन गए और इस प्रकार विभिन्न स्थितियों में उनके कोड का पुन: उपयोग बढ़ गया।[26]

//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
or
//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 अक्षरों से अधिक नहीं हो सकता[27]).

ऐसी नौकरियों में जिनमें नौकरी-विशिष्ट जेसीएल और प्रक्रिया कॉल का मिश्रण होता है, नौकरी-विशिष्ट चरण उस फ़ाइल को वापस संदर्भित कर सकता है जो प्रक्रिया में पूरी तरह से निर्दिष्ट थी, उदाहरण के लिए:

//MYJOB JOB ..........
//STEP01 EXEC MYPROC             Using a procedure
//STEP02 EXEC PGM=.........      Step which is specific to this job
//INPUT01 DD DSN=*.STEP01.MYPR01.NEWFILE

कहाँ DSN=*.STEP01.MYPR01.NEWFILE का अर्थ है पहचानी गई फ़ाइल का उपयोग करें NEWFILE चरण में MYPR01 चरण-दर-चरण उपयोग की जाने वाली प्रक्रिया का STEP01 इस नौकरी का. प्रक्रिया के नाम के बजाय उस चरण के नाम का उपयोग करना, जिसे प्रक्रिया कहा जाता है, एक प्रोग्रामर को एक ही कार्य में एक ही प्रक्रिया को कई बार उपयोग करने की अनुमति देता है, बिना किसी भ्रम के कि रेफरबैक में प्रक्रिया का कौन सा उदाहरण उपयोग किया जाता है।

टिप्पणियाँ

जेसीएल फ़ाइलें लंबी और जटिल हो सकती हैं, और भाषा को पढ़ना आसान नहीं है। ओएस जेसीएल प्रोग्रामर्स को दो प्रकार की व्याख्यात्मक टिप्पणी शामिल करने की अनुमति देता है:

  • जेसीएल कथन के समान ही। उन्हें एक निरंतरता चरित्र (पारंपरिक रूप से) रखकर बढ़ाया जा सकता हैX) कॉलम 72 में, उसके बाद// अगली पंक्ति के कॉलम 1-3 में।
  • जिन पंक्तियों में केवल टिप्पणी होती है, उनका उपयोग अक्सर स्थानीय विवरणों के बजाय जेसीएल की समग्र संरचना के बारे में प्रमुख बिंदुओं को समझाने के लिए किया जाता है। केवल-टिप्पणी पंक्तियों का उपयोग लंबी, जटिल जेसीएल फ़ाइलों को अनुभागों में विभाजित करने के लिए भी किया जाता है।
//MYJOB JOB ..........
//*  Lines containing only comments.
//******** Often used to divide JCL listing into sections ********
//STEP01 EXEC MYPROC             Comment 2 on same line as statement
//STEP02 EXEC PGM=.........      Comment 3 has been extended and       X
//         overflows into another line.
//INPUT01 DD DSN=STEP01.MYPR01.NEWFILE


इनपुट फ़ाइलों को जोड़ना

ओएस जेसीएल प्रोग्रामर को इनपुट फ़ाइलों को संयोजित (श्रृंखला) करने की अनुमति देता है ताकि वे प्रोग्राम में एक फ़ाइल के रूप में दिखाई दें, उदाहरण के लिए

//INPUT01 DD DSN=MYFILE01,DISP=SHR
//        DD DSN=JOESFILE,DISP=SHR
//        DD DSN=SUESFILE,DISP=SHR

दूसरे और तीसरे कथन का नाम फ़ील्ड में कोई मूल्य नहीं है, इसलिए ओएस उन्हें संयोजन के रूप में मानता है। फ़ाइलें समान मूल प्रकार (लगभग हमेशा अनुक्रमिक) की होनी चाहिए, और उनकी रिकॉर्ड लंबाई समान होनी चाहिए, हालांकि ब्लॉक की लंबाई समान नहीं होनी चाहिए।

OS के शुरुआती संस्करणों में (निश्चित रूप से OS/360 R21.8 से पहले) ब्लॉक की लंबाई घटते क्रम में होनी चाहिए, या उपयोगकर्ता को प्रत्येक इंस्टेंस का निरीक्षण करना होगा और नामांकित DD स्टेटमेंट में पाई गई अधिकतम ब्लॉक लंबाई को जोड़ना होगा, उदाहरण के लिए ,

//INPUT01 DD DSN=MYFILE01,DISP=SHR,BLKSIZE=800
//        DD DSN=JOESFILE,DISP=SHR (BLKSIZE assumed to be equal to or less than 800)
//        DD DSN=SUESFILE,DISP=SHR (BLKSIZE assumed to be equal to or less than 800)

ओएस के बाद के संस्करणों में (निश्चित रूप से उपयुक्त चयन योग्य इकाइयों के साथ ओएस/एमवीएस आर3.7 के बाद) ओएस स्वयं, आवंटन के दौरान, प्रत्येक उदाहरण का एक संयोजन में निरीक्षण करेगा और जो अधिकतम ब्लॉक लंबाई पाई गई थी उसे प्रतिस्थापित कर देगा।

एक सामान्य फ़ॉलबैक केवल डिवाइस पर अधिकतम संभव ब्लॉक लंबाई निर्धारित करना था, और उसे नामित डीडी स्टेटमेंट पर निर्दिष्ट करना था, उदाहरण के लिए,

//INPUT01 DD DSN=MYFILE01,DISP=SHR,BLKSIZE=8000
//        DD DSN=JOESFILE,DISP=SHR (BLKSIZE assumed to be equal to or less than 8000)
//        DD DSN=SUESFILE,DISP=SHR (BLKSIZE assumed to be equal to or less than 8000)

इस फ़ॉलबैक का उद्देश्य यह सुनिश्चित करना था कि एक्सेस विधि एक इनपुट बफ़र सेट आवंटित करेगी जो किसी भी और सभी निर्दिष्ट डेटासेट को समायोजित करने के लिए पर्याप्त बड़ा था।

सशर्त प्रसंस्करण

ओएस उम्मीद करता है कि प्रोग्राम एक रिटर्न कोड सेट करें जो निर्दिष्ट करता है कि प्रोग्राम ने सोचा था कि यह कितना सफल था। सबसे आम पारंपरिक मूल्य हैं:[28]: p.87 

  • 0 = सामान्य - सब ठीक है
  • 4 = चेतावनी - छोटी त्रुटियाँ या समस्याएँ
  • 8 = त्रुटि - महत्वपूर्ण त्रुटियाँ या समस्याएँ
  • 12 = गंभीर त्रुटि - प्रमुख त्रुटियाँ या समस्याएँ, परिणाम (जैसे फ़ाइलें या उत्पादित रिपोर्ट) पर भरोसा नहीं किया जाना चाहिए।
  • 16 = टर्मिनल त्रुटि - बहुत गंभीर समस्याएँ, परिणामों का उपयोग न करें!

ओएस जेसीएल रिटर्न कोड को संदर्भित करता है COND (स्थिति कोड), और इसका उपयोग यह तय करने के लिए कर सकता है कि बाद के चरणों को चलाना है या नहीं। हालाँकि, अधिकांश आधुनिक प्रोग्रामिंग भाषाओं के विपरीत, ओएस जेसीएल में सशर्त चरणों को निष्पादित नहीं किया जाता है यदि निर्दिष्ट स्थिति सत्य है - इस प्रकार स्मरक को जन्म देता है, यदि यह सत्य है, तो [बिना कोड चलाए] आगे बढ़ें। मामले को और अधिक जटिल बनाने के लिए, शर्त को केवल उस चरण के बाद ही निर्दिष्ट किया जा सकता है जिसका वह संदर्भ देता है। उदाहरण के लिए:

//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)
....

साधन:

  1. दौड़ना STEP01, और इसका रिटर्न कोड एकत्र करें।
  2. भागो मत STEP02 यदि संख्या 4 से बड़ी है STEP01का रिटर्न कोड.
  3. भागो मत STEP03 यदि संख्या 8 किसी पिछले रिटर्न कोड से कम या उसके बराबर है।
  4. दौड़ना STEP04 केवल STEP01 असामान्य रूप से समाप्त हो गया.
  5. दौड़ना STEP05, भले ही STEP03 असामान्य रूप से समाप्त हो गया.

इसका अनुवाद निम्नलिखित छद्मकोड में होता है:

STEP01 चलाएँ
यदि STEP01 का रिटर्न कोड 4 से अधिक या उसके बराबर है
    STEP02 चलाएँ
अगर अंत
यदि कोई पिछला रिटर्न कोड 8 से कम है
    STEP03 चलाएँ
अगर अंत
यदि STEP01 असामान्य रूप से समाप्त हो गया तो
    STEP04 चलाएँ
अगर अंत
यदि STEP03 असामान्य रूप से समाप्त हो गया तो
    STEP05 चलाएँ
अन्य
    STEP05 चलाएँ
अगर अंत

युक्त चरणों को पढ़कर ध्यान दें COND कथनों को पीछे की ओर मोड़ने से कोई भी उन्हें आसानी से समझ सकता है। यह स्थानान्तरण (तर्क)तर्क) का एक उदाहरण है। हालाँकि, बाद में IBM ने JCL में IF कंडीशन पेश की, जिससे प्रोग्रामर्स के लिए कोडिंग को बनाए रखते हुए कुछ हद तक आसान बना दिया गया COND पैरामीटर (मौजूदा जेसीएल में परिवर्तन करने से बचने के लिए COND parm प्रयोग किया जाता है)। COND ई> पैरामीटर पर भी निर्दिष्ट किया जा सकता है JOB कथन। यदि ऐसा है तो सिस्टम किसी कार्य के प्रत्येक चरण के लिए समान रिटर्न कोड परीक्षण करता है। यदि जॉब स्टेटमेंट रिटर्न कोड परीक्षण संतुष्ट हो जाता है, तो नौकरी समाप्त हो जाती है।[29]


उपयोगिताएँ

नौकरियां डेटा के प्रसंस्करण में सहायता के लिए कई आईबीएम मेनफ्रेम उपयोगिता कार्यक्रमों का उपयोग करती हैं। बैच प्रोसेसिंग में उपयोगिताएँ सबसे उपयोगी होती हैं। उपयोगिताओं को तीन सेटों में बांटा जा सकता है:

  • डेटा सेट उपयोगिताएँ - डेटा सेट बनाएं, प्रिंट करें, कॉपी करें, स्थानांतरित करें और हटाएं।
  • सिस्टम यूटिलिटीज़ - कैटलॉग और अन्य सिस्टम जानकारी को बनाए रखें और प्रबंधित करें।
  • एक्सेस मेथड सेवाएँ - वर्चुअल स्टोरेज एक्सेस विधि (वीएसएएम) और गैर-वीएसएएम डेटा सेट को प्रोसेस करें।

उपयोग की कठिनाई

ओएस जेसीएल निर्विवाद रूप से जटिल है[30]और इसे उपयोक्ता शत्रुतापूर्ण बताया गया है।[31][32] जैसा कि जेसीएल पर एक निर्देशात्मक पुस्तक में पूछा गया है, जब जॉब कंट्रोल लैंग्वेज की बात आती है तो परिष्कृत प्रोग्रामर भी झिझकते क्यों हैं?[33] पुस्तक में कहा गया है कि कई प्रोग्रामर या तो वास्तव में यह समझे बिना कि उन्होंने क्या किया, नियंत्रण कार्ड की नकल की, या प्रचलित अफवाहों पर विश्वास किया कि जेसीएल भयानक था, और केवल 'डाई-हार्ड' कंप्यूटर-प्रकारों ने ही इसे समझा और जेसीएल के बयानों का पता लगाने का काम सौंपा। किसी और को।[33] ऐसा रवैया प्रोग्रामिंग भाषा की पाठ्यपुस्तकों में पाया जा सकता है, जो भाषा पर ध्यान केंद्रित करना पसंद करते हैं न कि इसमें प्रोग्राम कैसे चलाए जाते हैं। जैसा कि एक फोरट्रान IV पाठ्यपुस्तक ने WATFOR कंपाइलर से संभावित त्रुटि संदेशों को सूचीबद्ध करते समय कहा था: क्या आप इतने मूर्ख हैं कि अपने स्वयं के 'डीडी' सिस्टम नियंत्रण कार्ड लिखने का प्रयास कर रहे हैं? तुरंत बंद करो और रुको; मदद के लिए दौड़ें, चलें नहीं।[34] फिर भी, जेसीएल में गई कुछ पुस्तकों में इस बात पर विस्तार से जोर दिया गया है कि एक बार जब इसे कम से कम कुछ हद तक कुशल डिग्री तक सीख लिया जाता है, तो व्यक्ति को इंस्टॉलेशन-वाइड डिफ़ॉल्ट से मुक्ति मिल जाती है और आईबीएम सिस्टम आपके कार्यभार को कैसे संसाधित करता है, इस पर बेहतर नियंत्रण मिलता है।[33][30] एक अन्य पुस्तक ने जटिलता पर टिप्पणी की लेकिन कहा, हिम्मत रखो। [पिछले अध्याय] से आपको जो जेसीएल क्षमता प्राप्त होगी वह वह सब है जिसकी अधिकांश प्रोग्रामर को कभी आवश्यकता होगी।[30]


कार्य प्रवेश नियंत्रण भाषा

आईबीएम मेनफ्रेम सिस्टम पर जॉब एंट्री कंट्रोल लैंग्वेज या जेईसीएल कमांड लैंग्वेज कंट्रोल स्टेटमेंट का सेट है जो अटेरन सबसिस्टम के लिए जानकारी प्रदान करता है - जेड/ओएस पर जॉब एंट्री सबसिस्टम 2/3 या आईबीएम पावर (सॉफ्टवेयर) | वीएसई (ऑपरेटिंग) के लिए वीएसई/पावर सिस्टम)|जेड/वीएसई। जेईसीएल स्टेटमेंट निर्दिष्ट कर सकते हैं कि किस नेटवर्क कंप्यूटर पर जॉब स्ट्रीम चलाना है, कब जॉब चलाना है और परिणामी आउटपुट कहां भेजना है।[28] जेईसीएल कार्य नियंत्रण भाषा (जेसीएल) से अलग है, जो ऑपरेटिंग सिस्टम को निर्देश देता है कि जॉब कैसे चलाया जाए।

तीनों परिवेशों के लिए जेईसीएल के अलग-अलग संस्करण हैं।

ओएस/360

OS/360 रिमोट जॉब एंट्री (प्रोग्राम नंबर 360S-RC-536) के लिए जॉब एंट्री कंट्रोल लैंग्वेज के शुरुआती संस्करण में पहचानकर्ता का उपयोग किया गया था..इनपुट रिकॉर्ड के कॉलम 1-2 में और एक एकल नियंत्रण कथन शामिल है: JED (नौकरी प्रवेश परिभाषा)। वर्कस्टेशन कमांड जैसे LOGON, LOGOFF, और STATUS से भी शुरुआत हुई.. .[35]


प्री-जेईएस जेईसीएल

हालाँकि यह शब्द अभी तक विकसित नहीं हुआ था, ह्यूस्टन स्वचालित स्पूलिंग प्राथमिकता में जॉब एंट्री सबसिस्टम 2/3 के जेईसीएल के समान कार्यक्षमता थी, जिसमें शामिल है /* वाक्य - विन्यास।

जेड/ओएस

JES2 के लिए जेईसीएल स्टेटमेंट्स से शुरू होते हैं /*, JES3 के लिए वे शुरुआत करते हैं //*, रिमोट को छोड़कर/*SIGNONऔर/*SIGNOFFआदेश. दोनों प्रणालियों के लिए कमांड पूरी तरह से अलग हैं।

जेईएस2 जेईसीएल

निम्नलिखित JES2 जेईसीएल कथनों का उपयोग z/OS 1.2.0 में किया जाता है।[36]

JECL statement Function Example
/*$command Enters an operator (console) command /*$S PRINTER3[37]
/*JOBPARM Specifies values for job-related parameters /*JOBPARM TIME=10
/*MESSAGE Sends a message to the operator console /*MESSAGE CALL JOE AT HOME IF JOB ABENDS
/*NETACCT Specifies account number for network job /*NETACCT 12345
/*NOTIFY Specifies destination for notification messages /*NOTIFY SAM
/*OUTPUT Specifies SYSOUT dataset options /*OUTPUT FORMS=BILL
/*PRIORITY Sets job selection priority /*PRIORITY 15
/*ROUTE Specifies output destination or execution node /*ROUTE PRT RMT5
/*SETUP Requests volume mounting or other offline operation /*SETUP TAPE01,TAPE02
/*SIGNOFF Ends remote session /*SIGNOFF
/*SIGNON Begins remote session /*SIGNON REMOTE5 password
/*XEQ Specifies execution node /*XEQ DENVER
/*XMIT Indicates job or dataset to be transmitted to another network node /*XMIT NYC


जेईएस3 जेईसीएल

निम्नलिखित JES3 जेईसीएल कथनों का उपयोग z/OS 1.2.0 में किया जाता है[38]

JECL statement Function Example
//**command Enters a JES3 operator (console) command
//*DATASET Marks the beginning of an in-stream dataset
//*ENDDATASET Marks the end of an in-stream dataset
//*ENDPROCESS Marks the end of a series of  //*PROCESS  statements
//*FORMAT Specifies  SYSOUT  dataset options
//*MAIN Specifies values for job-related parameters
//*NET Identifies relationships among jobs using JES3 dependent job control
//*NETACCT Specifies account number for network job
//*OPERATOR Sends a message to the operator console
//*PAUSE Stops the input reader
//*PROCESS Identifies a non-standard job
//*ROUTE Specifies the execution node for the job
/*SIGNOFF Ends remote session /*SIGNOFF
/*SIGNON Begins remote session


z/VSE

वीएसई के लिए जेईसीएल स्टेटमेंट 'से शुरू होते हैं* $$' (एकल स्थान पर ध्यान दें)। जॉब एंट्री कंट्रोल लैंग्वेज जेसीएल नौकरियों की शुरुआत और अंत पंक्तियों को परिभाषित करती है। यह वीएसई (ऑपरेटिंग सिस्टम)/आईबीएम पावर (सॉफ्टवेयर) को सलाह देता है कि यह काम कैसे संभाला जाता है। जेईसीएल विवरण नौकरी का नाम (वीएसई/पावर द्वारा प्रयुक्त), वह वर्ग जिसमें नौकरी संसाधित की जाती है, और नौकरी का स्वभाव (यानी) को परिभाषित करते हैं। D, L, K, H).

JECL statement[39] Function Example
* $$ CTL Establishes a default input class * $$ CTL CLASS=A
* $$ JOB Specifies attributes of a job * $$ JOB JNM=PYRL,PRI=9
* $$ EOJ Marks the end of a job * $$ EOJ
* $$ RDR Inserts a file from a 3540 diskette into the input stream * $$ RDR SYS005,'fname',2
* $$ PRT Specifies characteristics of spooled print files
"LST' is a synonym for "PRT"
* $$ PRT FNO=STD,COPY=2
* $$ PUN Specifies characteristics of spooled punch files * $$ PUN DISP=T,TADDR=280
* $$ SLI Inserts data ("book") from source statement library into the input stream * $$ SLI A.JCL1
* $$ DATA Inserts data from the card reader into a book retrieved from the source statement library * $$ DATA INPUT1

उदाहरण:

* $$ JOB JNM=NAME,DISP=K,CLASS=2

[some JCL statements here]

* $$ EOJ


अन्य सिस्टम

अन्य मेनफ्रेम बैच प्रोसेसिंग सिस्टम में किसी न किसी प्रकार की जॉब कंट्रोल भाषा होती थी, चाहे उसे ऐसा कहा जाए या नहीं; उनका सिंटैक्स आईबीएम संस्करणों से पूरी तरह से अलग था, लेकिन वे आम तौर पर समान क्षमताएं प्रदान करते थे। इंटरैक्टिव कंप्यूटिंग सिस्टम कमांड भाषाएँ शामिल करें - कमांड फ़ाइलें (जैसे PCDOS .bat फ़ाइलें) को गैर-इंटरैक्टिव रूप से चलाया जा सकता है, लेकिन ये आमतौर पर JCL की तरह अप्राप्य नौकरियों को चलाने के लिए उतना मजबूत वातावरण प्रदान नहीं करते हैं। कुछ कंप्यूटर सिस्टम पर जॉब कंट्रोल भाषा और इंटरैक्टिव कमांड भाषा भिन्न हो सकती है। उदाहरण के लिए, z/OS सिस्टम पर समय साझा करने का विकल्प बैच कार्य के लिए JCL के साथ-साथ कमांड भाषाओं के रूप में CLIST या Rexx का उपयोग करता है। अन्य प्रणालियों पर ये समान हो सकते हैं।

यह भी देखें

  • डीडी (यूनिक्स), यूनिक्स कार्यक्रम से प्रेरित DD
  • आईबीएम मेनफ्रेम उपयोगिता कार्यक्रम
  • प्रचय संसाधन
  • डेटा सेट (आईबीएम मेनफ्रेम)#जेनरेशन डेटा ग्रुप

संदर्भ

  1. "Every job submitted for execution ... must include JCL statements" -- ibm.com
  2. and many more complex details, such as whether the file is to be retained or deleted, the maximum of disk space to which it can grow, the name of a tape to be pre-mounted
  3. Ashley and Fernandez, Job Control Language, p. 1.
  4. Ashley and Fernandez, Job Control Language, p. 5.
  5. McQuillen, System/360–370 Assembler Language, pp. 385–386.
  6. 6.0 6.1 McQuillen, System/360–370 Assembler Language, pp. 288–289, 400.
  7. Lewis, Cecilia (August 8, 2011). "हमने हाल ही में पीडीएसई के साथ आपके लिए क्या किया है" (PDF). SHARE in Orlando. Retrieved 2023-03-03.
  8. McQuillen, System/360–370 Assembler Language, pp. 22–24.
  9. McQuillen, System/360–370 Assembler Language, pp. 380–382.
  10. Stern and Stern, Structured COBOL Programming, pp. 528–529.
  11. Stern and Stern, Structured COBOL Programming, pp. 529, 531.
  12. Stern and Stern, Structured COBOL Programming, pp. 529, 537.
  13. modeled on 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, using knowledge dating back to when Green Cards came from IBM, and Manix worked for a company owning an IBM card sorter
  14. "IBM Archives: System/360 Model 30". www-03.ibm.com (in English). 2003-01-23. Retrieved 2016-04-25.
  15. "आईबीएम पीसी". Archived from the original on 2006-07-05. Retrieved 2007-10-21.
  16. IBM-compatible computers History of PCs Archived August 14, 2007, at the Wayback Machine
  17. Brown, Gary DeWard (2002). ज़ोस जेसीएल (fifth ed.). John Wiley & Sons. p. 248. ISBN 0471-236357.
  18. Ashley and Fernandez, Job Control Language, pp. 8, 23. There are also two additional statements, PROC and PEND, used to test JCL procedures.
  19. A pre-stored set of "EXEC PGM=" and "DD" JCL commands which could be parameterized
  20. Ashley and Fernandez, Job Control Language, pp. 12–16.
  21. Ashley and Fernandez, Job Control Language, pp. 13–15.
  22. IBM Corporation (August 1978). OS/VS MVS Data Management Services Guide (PDF). Retrieved Oct 17, 2014.
  23. IBM Corporation (June 1971). IBM System/360 Operating System: Job Control Language Reference (PDF). Retrieved June 25, 2019.
  24. McQuillen, System/360–370 Assembler Language, pp. 297, 406–407.
  25. the default for the EXEC statement is PROC=
  26. Ashley and Fernandez, Job Control Language, pp. 129–131.
  27. "Data set names". IBM. 27 March 2014. Data set names must not exceed 44 characters, including all name segments and periods.
  28. 28.0 28.1 Brown, Gary DeWard (2002). ज़ोस जेसीएल. John Wiley & Sons. ISBN 9780471426738. Retrieved 2014-05-05.
  29. IBM Corporation. "JOB और EXEC कथनों पर COND मापदंडों का संबंध". IBM Knowledge Center. Retrieved Feb 21, 2018.
  30. 30.0 30.1 30.2 McQuillen, System/360–370 Assembler Language, pp. 406–407.
  31. Charley, Alfred (1993). NetView: IBM's Network Management Product. New York: Van Nostrand Reinhold. p. 93. ISBN 0-442-01407-4.
  32. Mathew W. Blode (April 6, 2020). "Newly unemployed New Yorkers are being frustrated by 1970s-era technology(nytimes.com)". Retrieved May 7, 2020. JCL in particular is notoriously user hostile and has been called "the worst programming language ever designed" by Fred Brooks ... (http://dtsc.dfw.ibm.com/MVSDS/'HTTPD2.APPS.ZOSCLASS.PDF(ZCLA...). {{cite web}}: External link in |quote= (help)
  33. 33.0 33.1 33.2 Ashley and Fernandez, Job Control Language, pp. vii–viii, back cover.
  34. Blatt, John M. (1971). Introduction to FORTRAN IV Programming: Using the WATFOR/WATFIV Compilers. Pacific Palisades, California: Goodyear Publishing Company. p. 276. ISBN 0-87620-440-X.
  35. IBM Corporation (1968). IBM System/360 Operating System Remote Job Entry (PDF). Retrieved 2014-05-05.
  36. IBM Corporation. "Job Entry Subsystem 2 (JES2) Control Statements". z/OS V1R2.0 MVS JCL. Archived from the original on October 18, 2015. Retrieved February 25, 2013.
  37. other examples can be viewed at Houston Automatic Spooling Priority#Operator Commands
  38. IBM Corporation. "Job Entry Subsystem 3 (JES3) Control Statements". z/OS V1R2.0 MVS JCL. Archived from the original on October 18, 2015. Retrieved February 25, 2013.
  39. IBM Corporation (1974). DOS/VS POWER/VS Installation and Operations (PDF).


स्रोत

श्रेणी:स्क्रिप्टिंग भाषाएँ श्रेणी:कार्य शेड्यूलिंग श्रेणी:आईबीएम मेनफ्रेम ऑपरेटिंग सिस्टम