कार्य नियंत्रण भाषा

From Vigyanwiki

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

आईबीएम कार्य नियंत्रण की दो अलग-अलग भाषाएँ हैं:

  • एक संचालन प्रणाली वर्ग के लिए एक जो डीओएस/360 से प्रारंभ होता है और जिसका नवीनतम सदस्य ज़ेड/वीएसई है; और
  • दूसरा ओएस/360 से ज़ेड/ओएस तक की वंशावली के लिए,बाद वाले में अब जेईएस विस्तारण, कार्य प्रवेश नियंत्रण भाषा (जेईसीएल) सम्मिलित है।

वे कुछ बुनियादी वाक्यविन्यास नियम और कुछ बुनियादी अवधारणाएँ साझा करते हैं, परन्तु अन्यथा बहुत भिन्न होते हैं।[3]

वीएम संचालन प्रणाली में जेसीएल नहीं है; सीपी और सीएमएस घटकों में से प्रत्येक में संकेत भाषाएँ हैं।

शब्दावली

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

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

प्रेरणा

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

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

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

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

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

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

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

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

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

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

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

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

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

ओएस जेसीएल डीओएस जेसीएल
अंतिम को छोड़कर सभी वास्तविक जेसीएल कार्डों को उस बिंदु पर समाप्त करना जहां वाक्य रचना के लिए अल्पविराम (,) की आवश्यकता होती है। अंतिम को छोड़कर सभी वास्तविक जेसीएल कार्डों को उस बिंदु पर समाप्त करना जहां वाक्य रचना के लिए कॉलम 72 में अल्पविराम (,) और एक गैर-रिक्त वर्ण की आवश्यकता होती है
प्रत्येक निरंतरता कार्ड को कॉलम 1 में // और फिर कम से कम 1 स्थान से प्रारंभ करें प्रत्येक निरंतरता कार्ड को रिक्त स्थान से शुरू करें और कॉलम 15 में जारी रखें

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

ओएस जेसीएल डीओएस जेसीएल
  • //
  • Name field for this विवरण, following // with no space between. If this विवरण does not have a name at least one blank immediately follows the //.
  • Space(s)
  • विवरण type
  • Space(s)
  • Parameters, which vary depending on the विवरण type, separated by commas and with no space between them.
  • // (spaces if this is a continuation of a previous line)
  • विवरण type for this विवरण, following // with a space between.
  • Space(s)
  • Name of resource
  • Space(s)
  • Parameters, which vary depending on the विवरण type, separated by commas and with no space between them. Pओएसitional parameters, followed by keyword parameters.


शृंखलाबद्ध इनपुट

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

Dओएस और ओएस जेसीएल में शृंखलाबद्ध इनपुट की शुरुआत का संकेत देने के अलग-अलग तरीके हैं, परन्तु दोनों शृंखलाबद्ध इनपुट को समाप्त करते हैं /* अंतिम शृंखलाबद्ध डेटा कार्ड के बाद कार्ड के कॉलम 1 पर। इससे संचालन प्रणाली कार्ड में जेसीएल की संसाधन फिर से प्रारंभ कर देता है /* कार्ड।[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 कार्ड के बाद बस शृंखलाबद्ध डेटा दर्ज करें।

जटिलता

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

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

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

जेसीएल का उपयोग करते हुए निम्नलिखित उदाहरण का उपयोग ओएस/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-Dओएस डिज़ाइन किया गया था। ओएस/360 न्यूनतम 32 KB मेमोरी साइज वाले प्रणाली के लिए था और Dओएस/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] परिणामस्वरूप, जेसीएल को परिकलक के लिए प्रोसेस करना आसान होना था, और क्रमादेशक द्वारा उपयोग में आसानी बहुत कम प्राथमिकता थी। इस युग में क्रमादेशक परिकलक की तुलना में बहुत सस्ते थे।
  • जेसीएल को प्रचय संसाधन के लिए डिज़ाइन किया गया था। इस प्रकार, इसे संचालन प्रणाली को सब कुछ बताना होगा, जिसमें एक चरण के परिणाम के आधार पर क्या करना है। उदाहरण के लिए, DISP=(NEW,CATLG,DELETE) इसका मतलब है कि यदि प्रोग्राम सफलतापूर्वक चलता है, तो एक नई फ़ाइल बनाएं और उसे सूचीबद्ध करें; अन्यथा नई फ़ाइल हटाएँ. पीसी पर चलने वाले प्रोग्राम अक्सर समस्याओं से निपटने के बाद सफाई के लिए उपयोगकर्ता पर निर्भर करते हैं।
  • प्रणाली/360 यंत्रों को एक संगठन में सभी उपयोगकर्ताओं द्वारा साझा करने के लिए डिज़ाइन किया गया था। इतना JOB कार्ड संचालन प्रणाली को बताता है कि उपयोगकर्ता के खाते को कैसे बिल देना है (IS198T30500), भंडारण और अन्य संसाधनों की कितनी पूर्वनिर्धारित मात्रा आवंटित की जा सकती है (CLASS=L), और कई अन्य चीज़ें। //SYSPRINT DD SYSOUT=* परिकलक को प्रोग्राम की अभिलेख को डिफ़ॉल्ट प्रिंटर (अभिकलन) पर प्रिंट करने के लिए कहता है जो साधारण कागज के साथ लोड होता है, न कि किसी अन्य प्रिंटर पर जो खाली चेक के साथ लोड किया जा सकता है। DISP=SHR संचालन प्रणाली को बताता है कि अन्य प्रोग्राम पढ़ सकते हैं OLDFILE बहु क्रमादेशन

Dओएस/360 और ओएस/360 संचालन प्रणाली के बाद के संस्करण मूल जेसीएल की अधिकांश विशेषताओं को बरकरार रखते हैं - हालाँकि ग्राहकों को अपनी सभी जेसीएल फ़ाइलों को फिर से लिखने के लिए मजबूर करने से बचने के लिए कुछ सरलीकरण किया गया है।[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 ओएस जेसीएल में बयान।

उपकरण निर्भरता

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

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

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

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

ओएस जेसीएल

ओएस जेसीएल में तीन मूल विवरण प्रकार होते हैं:[18]

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

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

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

जेसीएल विवरणों को कूट करने के नियम

प्रत्येक जेसीएल विवरण को पाँच क्षेत्रों में विभाजित किया गया है:[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

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

ओएस के शुरुआती संस्करणों में (निश्चित रूप से ओएस/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 ने जेसीएल में IF कंडीशन पेश की, जिससे क्रमादेशक्स के लिए कूटिंग को बनाए रखते हुए कुछ हद तक आसान बना दिया गया COND मापदण्ड (मौजूदा जेसीएल में परिवर्तन करने से बचने के लिए COND parm प्रयोग किया जाता है)। COND ई> मापदण्ड पर भी निर्दिष्ट किया जा सकता है JOB विवरण। यदि ऐसा है तो प्रणाली किसी कार्य के प्रत्येक चरण के लिए समान रिटर्न कूट परीक्षण करता है। यदि कार्य विवरण रिटर्न कूट परीक्षण संतुष्ट हो जाता है, तो कार्य समाप्त हो जाती है।[29]


उपयोगिताएँ

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

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

उपयोग में कठिनाई

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

फिर भी, जेसीएल में गई कुछ पुस्तकों में इस बात पर विस्तार से जोर दिया गया है कि एक बार जब इसे कम से कम कुछ हद तक कुशल डिग्री तक सीख लिया जाता है, तो व्यक्ति को इंस्टॉलेशन-वाइड डिफ़ॉल्ट से मुक्ति मिल जाती है और आईबीएम प्रणाली आपके कार्यभार को कैसे संसाधित करता है, इस पर बेहतर नियंत्रण मिलता है।[33][30] एक अन्य पुस्तक ने जटिलता पर टिप्पणी की परन्तु कहा, हिम्मत रखो। [पिछले अध्याय] से आपको जो जेसीएल क्षमता प्राप्त होगी वह वह सब है जिसकी अधिकांश क्रमादेशक को कभी आवश्यकता होगी।[30]


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

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

जेईसीएल कार्य नियंत्रण भाषा (JCL) से भिन्न है, जो संचालन प्रणाली को निर्देश देता है कि कार्य कैसे चलाया जाए।

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

ओएस/360

ओएस/360 दूरस्थ कार्य प्रवेश (प्रोग्राम संख्या 360एस-आरसी-536) के लिए कार्य प्रवेश नियंत्रण भाषा के प्रारंभिक संस्करण में इनपुट अभिलेख के स्तम्भ 1-2 में पहचानकर्ता .. का उपयोग किया गया था और इसमें एकल नियंत्रण विवरण JED (कार्य प्रवेश परिभाषा) सम्मिलित है। LOGON, LOGOFF, और STATUS जैसे कार्य निष्पादित्र का प्रारम्भ भी .. से हुआ।[35]


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

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

जेड/ओएस

जेईएस2 के लिए जेईसीएल विवरण /* से प्रारंभ होते हैं, जेईएस3 के लिए, दूरस्थ /*SIGNONऔर/*SIGNOFF संकेत को छोड़कर वे //* से प्रारंभ होते हैं, दोनों प्रणालियों के लिए संकेत पूर्णतया से भिन्न हैं।

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

निम्नलिखित जेईएस2 जेईसीएल विवरणों का उपयोग जेड/ओएस 1.2.0 में किया जाता है।[36]

जेईसीएल विवरण कार्य Example
/*$command एक प्रचालक (कंसोल) संकेत सम्मिलित करता है। /*$S PRINTER3[37]
/*JOBPARM कार्य से संबंधित मापदंडों के लिए मान निर्दिष्ट करता है। /*JOBPARM TIME=10
/*MESSAGE प्रचालक कंसोल को एक संदेश भेजता है। /*MESSAGE CALL JOE AT HOME IF JOB ABENDS
/*NETACCT नेटवर्क कार्य के लिए खाता संख्या निर्दिष्ट करता है। /*NETACCT 12345
/*NOTIFY अधिसूचना संदेशों के लिए गंतव्य निर्दिष्ट करता है। /*NOTIFY SAM
/*OUTPUT एसवाईएसओयूटी डेटासेट विकल्प निर्दिष्ट करता है। /*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


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

निम्नलिखित जेईएस3 जेईसीएल विवरणों का उपयोग जेड/ओएस 1.2.0 में किया जाता है[38]

जेईसीएल विवरण कार्य उदाहरण
//**command एक जेईएस3 प्रचालक (कंसोल) संकेत दर्ज करता है।
//*DATASET शृंखलाबद्ध डेटासेट के प्रारम्भ को चिह्नित करता है।
//*ENDDATASET शृंखलाबद्ध डेटासेट के अंत को चिह्नित करता है।
//*ENDPROCESS  //*PROCESS  विवरणों की श्रृंखला के अंत को चिह्नित करता है।
//*FORMAT  SYSOUT  डेटासेट विकल्प निर्दिष्ट करता है।
//*MAIN कार्य से संबंधित मापदंडों के लिए मान निर्दिष्ट करता है।
//*NET जेईएस3 निर्भर कार्य नियंत्रण का उपयोग करके कार्यों के मध्य संबंधों की पहचान करता है।
//*NETACCT नेटवर्क कार्य के लिए खाता संख्या निर्दिष्ट करता है।
//*OPERATOR प्रचालक कंसोल को एक संदेश भेजता है।
//*PAUSE इनपुट पाठक बंद कर देता है।
//*PROCESS एक गैर-मानक कार्य की पहचान करता है।
//*ROUTE कार्य के लिए निष्पादन नोड निर्दिष्ट करता है।
/*SIGNOFF दूरस्थ सत्र समाप्त होता है। /*SIGNOFF
/*SIGNON दूरस्थ सत्र प्रारंभ होता है।


जेड/वीएसई

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

जेईसीएल विवरण[39] कार्य उदाहरण
* $$ CTL एक व्यतिक्रम इनपुट वर्ग स्थापित करता है। * $$ CTL CLASS=A
* $$ JOB किसी कार्य की विशेषताएँ निर्दिष्ट करता है। * $$ JOB JNM=PYRL,PRI=9
* $$ EOJ किसी कार्य के अंत का प्रतीक है। * $$ EOJ
* $$ RDR 3540 डिस्केट से एक फ़ाइल को इनपुट वर्ग में सम्मिलित करता है। * $$ RDR SYS005,'fname',2
* $$ 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

[some JCL statements here]

* $$ EOJ


अन्य प्रणाली

अन्य मेनफ्रेम प्रचय प्रणालियों में किसी न किसी प्रकार की कार्य नियंत्रण भाषा होती थी, चाहे उसे वह कहा जाए या नहीं; उनकी वाक्य रचना आईबीएम संस्करणों से पूर्णतया से भिन्न था, परन्तु वे सामान्यतः समान क्षमताएं प्रदान करते थे। पारस्परिक प्रणाली में संकेत भाषाएँ सम्मिलित हैं - संकेत फ़ाइलें (जैसे पीसीडीओएस ".बैट" फ़ाइलें) को गैर-पारस्परिक रूप से चलाया जा सकता है, परन्तु ये सामान्यतः जेसीएल की तरह अप्राप्य कार्यों को चलाने के लिए उतना प्रबल वातावरण प्रदान नहीं करते हैं। कुछ परिकलक प्रणाली पर कार्य नियंत्रण भाषा और पारस्परिक संकेत भाषा भिन्न हो सकती है। उदाहरण के लिए, जेड/ओएस प्रणाली पर टीएसओ प्रचय कार्य के लिए जेसीएल के साथ-साथ संकेत भाषाओं के रूप में सीएलआईएसटी या आरईएक्सएक्स का उपयोग करता है। अन्य प्रणालियों पर ये समान हो सकते हैं।

यह भी देखें

  • डीडी (यूनिक्स), 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).


स्रोत

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