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

From Vigyanwiki
No edit summary
No edit summary
Line 2: Line 2:
{{About|आईबीएम मेनफ्रेम कार्य नियंत्रण भाषा|मुक्त प्रणालियाँ|कार्य नियंत्रण (यूनिक्स)|सामान्य नियम|job control (computing){{!}}job control}}
{{About|आईबीएम मेनफ्रेम कार्य नियंत्रण भाषा|मुक्त प्रणालियाँ|कार्य नियंत्रण (यूनिक्स)|सामान्य नियम|job control (computing){{!}}job control}}


कार्य नियंत्रण भाषा (जेसीएल) [[आईबीएम मेनफ्रेम]] संचालन प्रणाली पर उपयोग की जाने वाली लिपिबद्धन भाषाओं का एक नाम है, जो प्रणाली को [[ प्रचय संसाधन ]] चलाने या उप-प्रणाली प्रारंभ करने के तरीके के विषय में निर्देश देती है।<ref>"Every job submitted for execution ... must include JCL statements" -- ibm.com</ref> जेसीएल का उद्देश्य यह बताना है कि कौन से प्रोग्राम को किस फाइल या उपकरण का उपयोग करके चलाना है<ref>and many more [[#Complexity|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</ref> इनपुट या आउटपुट के लिए, और कभी-कभी यह भी इंगित करने के लिए कि किन परिस्थितियों में एक कदम छोड़ना है। जेसीएल में मापदण्ड किसी कार्य द्वारा उपयोग किए जाने वाले संसाधनों के साथ-साथ कार्य को किस यंत्र पर चलाना चाहिए, इस पर नज़र रखने के लिए लेखांकन जानकारी भी प्रदान कर सकते हैं।
कार्य नियंत्रण भाषा (JCL) [[आईबीएम मेनफ्रेम]] संचालन प्रणाली पर उपयोग की जाने वाली लिपिबद्धन भाषाओं का एक नाम है, जो प्रणाली को [[ प्रचय संसाधन |प्रचय संसाधन]] चलाने या उप-प्रणाली प्रारंभ करने के तरीके के विषय में निर्देश देती है।<ref>"Every job submitted for execution ... must include JCL statements" -- ibm.com</ref> जेसीएल का उद्देश्य यह बताना है कि कौन से प्रोग्राम चलाने हैं, इनपुट या आउटपुट के लिए कौन सी फाइल या उपकरण<ref>and many more [[#Complexity|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</ref> का उपयोग करना है और कभी-कभी यह भी इंगित करना है कि किन परिस्थितियों में एक चरण छोड़ना है। जेसीएल में मापदण्ड किसी कार्य द्वारा उपयोग किए जाने वाले संसाधनों के साथ-साथ कार्य को किस यंत्र पर चलाना चाहिए, इस पर अनुसरण के लिए लेखांकन सूचना भी प्रदान कर सकते हैं।


आईबीएम कार्य नियंत्रण की दो अलग-अलग भाषाएँ हैं:
आईबीएम कार्य नियंत्रण की दो अलग-अलग भाषाएँ हैं:
* संचालन प्रणाली वंश के लिए एक जो Dओएस/360 से प्रारंभ होता है और जिसका नवीनतम सदस्य z/VSE है; और
* एक संचालन प्रणाली वर्ग के लिए एक जो डीओएस/360 से प्रारंभ होता है और जिसका नवीनतम सदस्य ज़ेड/वीएसई है; और
* ओएस/360 से z/ओएस तक की वंशावली के लिए दूसरा, बाद वाला अब कार्य प्रवेश उप-प्रणाली 2/3 एक्सटेंशन, #कार्य प्रवेश नियंत्रण भाषा|कार्य प्रवेश नियंत्रण भाषा (JECL) सहित।
* दूसरा ओएस/360 से ज़ेड/ओएस तक की वंशावली के लिए,बाद वाले में अब जेईएस विस्तारण, कार्य प्रवेश नियंत्रण भाषा (JECL) सम्मिलित है।


वे कुछ बुनियादी वाक्यविन्यास नियम और कुछ बुनियादी अवधारणाएँ साझा करते हैं, परन्तु अन्यथा बहुत भिन्न होते हैं।<ref>Ashley and Fernandez, ''Job Control Language'', p. 1.</ref> [[वीएम (ऑपरेटिंग सिस्टम)|वीएम (संचालन प्रणाली)]] में जेसीएल नहीं है; CP/CMS घटकों में से प्रत्येक में संकेत भाषाएँ होती हैं।
वे कुछ बुनियादी वाक्यविन्यास नियम और कुछ बुनियादी अवधारणाएँ साझा करते हैं, परन्तु अन्यथा बहुत भिन्न होते हैं।<ref>Ashley and Fernandez, ''Job Control Language'', p. 1.</ref>  
 
[[वीएम (ऑपरेटिंग सिस्टम)|वीएम संचालन प्रणाली]] में जेसीएल नहीं है; सीपी और सीएमएस घटकों में से प्रत्येक में संकेत भाषाएँ हैं।


==शब्दावली==
==शब्दावली==
जेसीएल के संयोजन में उपयोग किए जाने वाले कुछ शब्द या वाक्यांश आईबीएम मेनफ्रेम प्रौद्योगिकी के लिए विशिष्ट हैं।
जेसीएल के संयोजन में उपयोग किए जाने वाले कुछ शब्द या वाक्यांश आईबीएम मेनफ्रेम प्रौद्योगिकी के लिए विशिष्ट हैं।
* डेटासेट: डेटासेट एक फ़ाइल है; यह अस्थायी या स्थायी हो सकता है, और डिस्क ड्राइव, टेप स्टोरेज या अन्य उपकरण पर स्थित हो सकता है।<ref>Ashley and Fernandez, ''Job Control Language'', p. 5.</ref><ref>McQuillen, ''System/360–370 Assembler Language'', pp. 385–386.</ref>
* डेटासेट: एक "डेटासेट" एक फ़ाइल है; यह अस्थायी या स्थायी हो सकता है और डिस्क ड्राइव, टेप भंडारण या अन्य उपकरण पर स्थित हो सकता है।<ref>Ashley and Fernandez, ''Job Control Language'', p. 5.</ref><ref>McQuillen, ''System/360–370 Assembler Language'', pp. 385–386.</ref>
* सदस्य: एक विभाजित डेटासेट (पीडीएस) का सदस्य एक पीडीएस के भीतर एक व्यक्तिगत डेटासेट है। कोष्ठक में सदस्य नाम के साथ पीडीएस का नाम निर्दिष्ट करके किसी सदस्य तक पहुंचा जा सकता है। उदाहरण के लिए, SYS1.MACLIB में प्रणाली मैक्रो GETMAIN को SYS1.MACLIB(GETMAIN) के रूप में संदर्भित किया जा सकता है।<ref name="mcq-pds">McQuillen, ''System/360–370 Assembler Language'', pp. 288–289, 400.</ref> * विभाजित डेटासेट: एक विभाजित डेटासेट या पीडीएस सदस्यों का संग्रह, या संग्रह है। विभाजित डेटासेट का उपयोग सामान्यतः स्रोत कोड, असेंबलर मैक्रोज़ (SYS1.MACLIB), प्रणाली कॉन्फ़िगरेशन (SYS1.PARMLIB), पुन: प्रयोज्य जेसीएल प्रक्रियाओं (SYS1.PROCLIB) आदि जैसे टेक्स्ट डेटा को संग्रहीत करने के लिए किया जाता है। फ़ाइलें (ज़िप, टीएआर, आदि) संग्रहित करें और अन्य संचालन प्रणाली में निर्देशिकाओं के साथ। इनका उपयोग द्वि आधारी कूट (लोड मॉड्यूल या प्रोग्राम ऑब्जेक्ट) को संग्रहीत करने के लिए भी किया जाता है; उस रूप में, वे मोटे तौर पर यूनिक्स-आधारित प्रणालियों में [[एआर (यूनिक्स)]]|एआर-आधारित स्थिर पुस्तकालयों के समान हैं। ऐसी अधिकांश संरचनाओं की तरह, एक बार संग्रहीत सदस्य को अद्यतन नहीं किया जा सकता है; सदस्य को हटाया जाना चाहिए और प्रतिस्थापित किया जाना चाहिए, जैसे कि [[IEBUPDTE]] उपयोगिता के साथ।<ref name="mcq-pds"/>1989 में एमवीएस डीएफपी 3.2 के जारी होने के बाद से, पीडीएसई (विभाजित डेटा सेट विस्तारित) पीडीएस के एक उन्नत संस्करण के रूप में अस्तित्व में है;<ref>{{Cite web |last=Lewis |first=Cecilia |date=August 8, 2011 |title=हमने हाल ही में पीडीएसई के साथ आपके लिए क्या किया है|url=https://share.confex.com/share/117/webprogram/Handout/Session9939/SHARE%209939%20PDSE%20v1.pdf |access-date=2023-03-03 |website=SHARE in Orlando }}</ref> उपयोगकर्ता या एप्लिकेशन क्रमादेशक के दृष्टिकोण से, वे काफी हद तक अपरिवर्तित हैं (कुछ अस्पष्ट विरासत सुविधाओं को हटाने के अलावा), परन्तु उनका आंतरिक कार्यान्वयन बहुत अलग है।
* सदस्य: एक विभाजित डेटासेट (PDS) का "सदस्य" एक पीडीएस के भीतर एक व्यक्तिगत डेटासेट है। कोष्ठक में सदस्य नाम के साथ पीडीएस का नाम निर्दिष्ट करके किसी सदस्य तक पहुंचा जा सकता है। उदाहरण के लिए, एसवाईएस1.एमएसीएलआईबी में प्रणाली बृहत् जीईटीएमएआईएन को एसवाईएस1.एमएसीएलआईबी (GETMAIN) के रूप में संदर्भित किया जा सकता है।<ref name="mcq-pds">McQuillen, ''System/360–370 Assembler Language'', pp. 288–289, 400.</ref>  
* यूएसएस: यूनिक्स प्रणाली सेवाएं, एमवीएस के हिस्से के रूप में चलने वाला एक यूनिक्स उप-प्रणाली, और यूनिक्स फ़ाइलों, स्क्रिप्ट, कार्यों और प्रोग्रामों को यूनिक्स वातावरण में मेनफ्रेम पर चलाने की अनुमति देता है।
*विभाजित डेटासेट: एक "विभाजित डेटासेट" या पीडीएस सदस्यों का संग्रह, या संग्रह है। विभाजित डेटासेट का उपयोग सामान्यतः स्रोत कूट, समायोजक मैक्रो (SYS1.MACLIB), प्रणाली विन्यास (SYS1.PARMLIB), पुन: प्रयोज्य जेसीएल प्रक्रियाओं (SYS1.PROCLIB) आदि जैसे पाठीय डेटा को संग्रहीत करने के लिए किया जाता है और अन्य संचालन प्रणाली में निर्देशिकाओं के साथ फ़ाइलें (ज़िप, टीएआर, आदि) संग्रहित करें। इनका उपयोग द्वि-आधारी कूट (भार प्रतिरूपक या प्रोग्राम ऑब्जेक्ट) को संग्रहीत करने के लिए भी किया जाता है; उस रूप में, वे स्थूलतः यूनिक्स-आधारित प्रणालियों में [[एआर (यूनिक्स)|एआर-]] आधारित स्थिर पुस्तकालयों के समान हैं। ऐसी अधिकांश संरचनाओं की तरह, एक बार संग्रहीत सदस्य को अद्यतन नहीं किया जा सकता है; सदस्य को हटाया जाना चाहिए, जैसे कि [[IEBUPDTE|आईईबीयूपीडीटीई]] उपयोगिता के साथ प्रतिस्थापित किया जाना चाहिए।<ref name="mcq-pds" />1989 में एमवीएस डीएफपी 3.2 के जारी होने के बाद से, पीडीएसई (विभाजित डेटा सेट विस्तारित) पीडीएस के एक उन्नत संस्करण के रूप में अस्तित्व में है;<ref>{{Cite web |last=Lewis |first=Cecilia |date=August 8, 2011 |title=हमने हाल ही में पीडीएसई के साथ आपके लिए क्या किया है|url=https://share.confex.com/share/117/webprogram/Handout/Session9939/SHARE%209939%20PDSE%20v1.pdf |access-date=2023-03-03 |website=SHARE in Orlando }}</ref> उपयोगकर्ता या एप्लिकेशन क्रमादेशक के दृष्टिकोण से, वे काफी हद तक अपरिवर्तित हैं (कुछ अस्पष्ट विरासत सुविधाओं को हटाने के अतिरिक्त), परन्तु उनका आंतरिक कार्यान्वयन बहुत भिन्न है।
* यूएसएस: यूनिक्स प्रणाली सेवाएं, एमवीएस के भाग के रूप में चलने वाली एक यूनिक्स उप-प्रणाली और यूनिक्स फ़ाइलों, लिपि, कार्यों और प्रोग्रामों को यूनिक्स वातावरण में मेनफ्रेम पर चलाने की अनुमति देता है।


== प्रेरणा ==
== प्रेरणा ==
मूल रूप से, मेनफ्रेम प्रणाली बैच संसाधन की ओर उन्मुख थे। कई बैच नौकरियों के लिए सेटअप की आवश्यकता होती है, [[मुख्य भंडारण]] के लिए विशिष्ट आवश्यकताओं के साथ, और [[चुंबकीय टेप]], निजी डिस्क वॉल्यूम और विशेष रूपों के साथ प्रिंटर जैसे समर्पित उपकरणों की आवश्यकता होती है।<ref>McQuillen, ''System/360–370 Assembler Language'', pp. 22–24.</ref> जेसीएल को यह सुनिश्चित करने के साधन के रूप में विकसित किया गया था कि नौकरी प्रारंभ होने से पहले सभी आवश्यक संसाधन उपलब्ध हैं। उदाहरण के लिए, कई प्रणालियाँ, जैसे कि [[लिनक्स]], [[कमांड लाइन इंटरफेस|संकेत लाइन इंटरफेस]] पर निर्दिष्ट आवश्यक डेटासेट की पहचान की अनुमति देती हैं, और इसलिए [[ शैल (कंप्यूटिंग) ]] द्वारा प्रतिस्थापन के अधीन होती हैं, या रन-टाइम पर प्रोग्राम द्वारा उत्पन्न होती हैं। इन प्रणालियों पर [[ऑपरेटिंग सिस्टम|संचालन प्रणाली]] [[ कार्य अनुसूचक ]] को कार्य की आवश्यकताओं के बारे में बहुत कम या कोई जानकारी नहीं होती है। इसके विपरीत, जेसीएल सभी आवश्यक डेटासेट और उपकरणों को स्पष्ट रूप से निर्दिष्ट करता है। शेड्यूलर कार्य को चलाने के लिए जारी करने से पहले संसाधनों को पूर्व-आवंटित कर सकता है। यह [[गतिरोध]] से बचने में सहायता करता है, जहां कार्य A संसाधन R1 रखता है और संसाधन R2 का अनुरोध करता है, जबकि समवर्ती रूप से चलने वाला कार्य B संसाधन R2 रखता है और R1 का अनुरोध करता है। ऐसे स्थितियों में [[कंप्यूटर ऑपरेटर|परिकलक ऑपरेटर]] के लिए एकमात्र समाधान यह है कि वह किसी एक कार्य को समाप्त कर दे, जिसे फिर से प्रारंभ करने की आवश्यकता होती है। कार्य नियंत्रण के साथ, यदि कार्य A को चलाने के लिए निर्धारित किया गया है, तो कार्य B तब तक प्रारंभ नहीं किया जाएगा जब तक कार्य A पूर्ण नहीं कर लेता या आवश्यक संसाधन जारी नहीं कर देता।
मूल रूप से, मेनफ्रेम प्रणाली प्रचय संसाधन की ओर उन्मुख थे। कई प्रचय कार्यों के लिए सेटअप की आवश्यकता होती है, [[मुख्य भंडारण]] के लिए विशिष्ट आवश्यकताओं के साथ और [[चुंबकीय टेप]], निजी डिस्क वॉल्यूम और विशेष रूपों के साथ मुद्रक जैसे समर्पित उपकरणों की आवश्यकता होती है।<ref>McQuillen, ''System/360–370 Assembler Language'', pp. 22–24.</ref> जेसीएल को यह सुनिश्चित करने के साधन के रूप में विकसित किया गया था कि कार्य प्रारंभ होने से पूर्व सभी आवश्यक संसाधन उपलब्ध हैं। उदाहरण के लिए, कई प्रणालियाँ, जैसे कि [[लिनक्स]], आवश्यक डेटासेट की पहचान को कमांड लाइन पर निर्दिष्ट करने की अनुमति देते हैं और इसलिए [[ शैल (कंप्यूटिंग) |शैल]] द्वारा प्रतिस्थापन के अधीन होते हैं, या कार्यावधि पर प्रोग्राम द्वारा उत्पन्न होते हैं। इन प्रणालियों पर [[ऑपरेटिंग सिस्टम|संचालन प्रणाली]] [[ कार्य अनुसूचक |कार्य अनुसूचक]] को कार्य की आवश्यकताओं के विषय में बहुत कम या कोई सूचना नहीं होती है। इसके विपरीत, जेसीएल सभी आवश्यक डेटासेट और उपकरणों को स्पष्ट रूप से निर्दिष्ट करता है। अनुसूचक कार्य को चलाने के लिए जारी करने से पहले संसाधनों को पूर्व-आवंटित कर सकता है। यह [[गतिरोध]] से बचने में सहायता करता है, जहां कार्य A संसाधन R1 रखता है और संसाधन R2 का अनुरोध करता है, जबकि समवर्ती रूप से चलने वाला कार्य B संसाधन R2 रखता है और R1 का अनुरोध करता है। ऐसी स्थितियों में [[कंप्यूटर ऑपरेटर|परिकलक संचालक]] के लिए एकमात्र समाधान यह है कि वह किसी एक कार्य को समाप्त कर दे, जिसे पुनः प्रारंभ करने की आवश्यकता होती है। कार्य नियंत्रण के साथ, यदि कार्य A को चलाने के लिए निर्धारित किया गया है, तो कार्य B तब तक प्रारंभ नहीं किया जाएगा जब तक कार्य A पूर्ण नहीं कर लेता या आवश्यक संसाधन जारी नहीं कर देता।


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


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


डॉस और ओएस जेसीएल दोनों में पहला कार्ड कार्य कार्ड होना चाहिए, जो:<ref>McQuillen, ''System/360–370 Assembler Language'', pp. 380–382.</ref> *कार्य की पहचान करता है.
डीओएस और ओएस जेसीएल दोनों में पहला कार्ड कार्य कार्ड होना चाहिए, जो:<ref>McQuillen, ''System/360–370 Assembler Language'', pp. 380–382.</ref>  
* सामान्यतः परिकलक सेवा विभाग को उपयुक्त उपयोगकर्ता विभाग को बिल देने में सक्षम बनाने के लिए जानकारी प्रदान करता है।
* कार्य की पहचान करता है.
*सामान्यतः परिकलक सेवा विभाग को उपयुक्त उपयोगकर्ता विभाग को बिल देने में सक्षम बनाने के लिए सूचना प्रदान करता है।
* परिभाषित करता है कि संपूर्ण कार्य को कैसे चलाया जाना है, उदा. कतार में अन्य नौकरियों के सापेक्ष इसकी प्राथमिकता।
* परिभाषित करता है कि संपूर्ण कार्य को कैसे चलाया जाना है, उदा. कतार में अन्य नौकरियों के सापेक्ष इसकी प्राथमिकता।


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


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


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


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


Dओएस और ओएस जेसीएल में इन-स्ट्रीम इनपुट की शुरुआत का संकेत देने के अलग-अलग तरीके हैं, परन्तु दोनों इन-स्ट्रीम इनपुट को समाप्त करते हैं <code>/*</code> अंतिम इन-स्ट्रीम डेटा कार्ड के बाद कार्ड के कॉलम 1 पर। इससे संचालन प्रणाली कार्ड में जेसीएल की संसाधन फिर से प्रारंभ कर देता है <code>/*</code> कार्ड।<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 529, 537.</ref>
Dओएस और ओएस जेसीएल में इन-स्ट्रीम इनपुट की शुरुआत का संकेत देने के अलग-अलग तरीके हैं, परन्तु दोनों इन-स्ट्रीम इनपुट को समाप्त करते हैं <code>/*</code> अंतिम इन-स्ट्रीम डेटा कार्ड के बाद कार्ड के कॉलम 1 पर। इससे संचालन प्रणाली कार्ड में जेसीएल की संसाधन फिर से प्रारंभ कर देता है <code>/*</code> कार्ड।<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 529, 537.</ref>
*ओएस जेसीएल: डीडी स्टेटमेंट का उपयोग इन-स्ट्रीम डेटा, साथ ही डेटा सेट का वर्णन करने के लिए किया जा सकता है। इन-स्ट्रीम डेटा से संबंधित डीडी स्टेटमेंट में डीडी पहचानकर्ता के बाद एक तारांकन चिह्न (*) होता है, उदाहरण के लिए। <code>//SYSIN DD *</code>. जेसीएल स्टेटमेंट को डीडी डेटा स्टेटमेंट का उपयोग करके इन-स्ट्रीम डेटा के हिस्से के रूप में सम्मिलित किया जा सकता है।
*ओएस जेसीएल: डीडी स्टेटमेंट का उपयोग इन-स्ट्रीम डेटा, साथ ही डेटा सेट का वर्णन करने के लिए किया जा सकता है। इन-स्ट्रीम डेटा से संबंधित डीडी स्टेटमेंट में डीडी पहचानकर्ता के बाद एक तारांकन चिह्न (*) होता है, उदाहरण के लिए। <code>//SYSIN DD *</code>. जेसीएल स्टेटमेंट को डीडी डेटा स्टेटमेंट का उपयोग करके इन-स्ट्रीम डेटा के हिस्से के रूप में सम्मिलित किया जा सकता है।
:डीएलएम नामक एक ऑपरेंड एक सीमांकक निर्दिष्ट करने की अनुमति देता है (डिफ़ॉल्ट /* है)। एक वैकल्पिक सीमांकक निर्दिष्ट करने से जेसीएल को डेटा के रूप में पढ़ा जा सकता है, उदाहरण के लिए लाइब्रेरी सदस्य को प्रक्रियाओं की प्रतिलिपि बनाना या ''आंतरिक पाठक'' को नौकरी सबमिट करना।
:डीएलएम नामक एक ऑपरेंड एक सीमांकक निर्दिष्ट करने की अनुमति देता है (डिफ़ॉल्ट /* है)। एक वैकल्पिक सीमांकक निर्दिष्ट करने से जेसीएल को डेटा के रूप में पढ़ा जा सकता है, उदाहरण के लिए लाइब्रेरी सदस्य को प्रक्रियाओं की प्रतिलिपि बनाना या ''आंतरिक पाठक'' को कार्य सबमिट करना।
:*एक उदाहरण,<ref>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</ref> जो आंतरिक रीडर ('INTRDR') को एक कार्य सबमिट करता है और फिर दो फ़ाइलें हटा देता है वह है:
:*एक उदाहरण,<ref>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</ref> जो आंतरिक रीडर ('INTRDR') को एक कार्य सबमिट करता है और फिर दो फ़ाइलें हटा देता है वह है:
<सिंटैक्सहाइलाइट लैंग= जेसीएल हाइलाइट= 8,12,13 >
<सिंटैक्सहाइलाइट लैंग= जेसीएल हाइलाइट= 8,12,13 >
Line 84: Line 88:
//SYSUT1 DD डेटा,DLM=ZZ
//SYSUT1 DD डेटा,DLM=ZZ
//Runlatr कार्य ACCT,MANIX,क्लास=A.TYPRUN=होल्ड
//Runlatr कार्य ACCT,MANIX,क्लास=A.TYPRUN=होल्ड
//* ^ बाद में चलाने के लिए एक नौकरी
//* ^ बाद में चलाने के लिए एक कार्य
//CPUHOG EXEC PGM=PICALC1K
//CPUHOG EXEC PGM=PICALC1K
//आउटपुट DD DSN=PICALC.1000DGTS,स्पेस=(TRK,1),DISP=(,KEEP)
//आउटपुट DD DSN=PICALC.1000DGTS,स्पेस=(TRK,1),DISP=(,KEEP)
Line 96: Line 100:
::# IEFBR14 नामक प्रोग्राम अभी चलेगा और पूर्ण होने पर, दो मौजूदा फ़ाइलें, PICALC.4DGTS और PICALC.5DGTS हटा दी जाएंगी।
::# IEFBR14 नामक प्रोग्राम अभी चलेगा और पूर्ण होने पर, दो मौजूदा फ़ाइलें, PICALC.4DGTS और PICALC.5DGTS हटा दी जाएंगी।


*डॉस जेसीएल: प्रोग्राम के लिए EXEC कार्ड के बाद बस इन-स्ट्रीम डेटा दर्ज करें।
*डीओएस जेसीएल: प्रोग्राम के लिए EXEC कार्ड के बाद बस इन-स्ट्रीम डेटा दर्ज करें।


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


जेसीएल की जटिलता के लिए दूसरी व्याख्या [[आईबीएम पीसी]] या यूनिक्स जैसे वातावरण में नौकरी चलाने की अपेक्षाओं से भिन्न है।
जेसीएल की जटिलता के लिए दूसरी व्याख्या [[आईबीएम पीसी]] या यूनिक्स जैसे वातावरण में कार्य चलाने की अपेक्षाओं से भिन्न है।
*लो-एंड प्रणाली/360 सीपीयू 1980 के दशक के मध्य के पीसी की तुलना में कम शक्तिशाली और अधिक महंगे थे जिनके लिए MS-Dओएस डिज़ाइन किया गया था। ओएस/360 न्यूनतम 32 KB मेमोरी साइज वाले प्रणाली के लिए था और Dओएस/360 न्यूनतम 16 KB वाले प्रणाली के लिए था। एक IBM 2030|360/30 CPU—जब प्रणाली/360 की घोषणा 1964 में की गई थी तब निम्न-स्तरीय सीपीयू-प्रति सेकंड 1.8K से 34.5K निर्देशों को संसाधित करता था।<ref>{{Cite web|url=http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2030.html|title=IBM Archives: System/360 Model 30|date=2003-01-23|website=www-03.ibm.com|language=en-US|access-date=2016-04-25}}</ref> 1981 में पहले IBM PC में 16 KB या 64 KB मेमोरी थी और यह प्रति सेकंड लगभग 330K निर्देशों को प्रोसेस करता था।<ref name="vintageComputerIBMPC">{{Cite web |url=http://www.vintage-computer.com/ibm_pc.shtml |title=आईबीएम पीसी|access-date=2007-10-21 |archive-date=2006-07-05 |archive-url=https://web.archive.org/web/20060705211337/http://www.vintage-computer.com/ibm_pc.shtml |url-status=dead }}</ref><ref name="iathVirginiaEduPCs">[http://www3.iath.virginia.edu/elab/hfl0108.html IBM-compatible computers] History of PCs {{webarchive |url=https://web.archive.org/web/20070814010809/http://www3.iath.virginia.edu/elab/hfl0108.html |date=August 14, 2007 }}</ref> परिणामस्वरूप, जेसीएल को परिकलक के लिए प्रोसेस करना आसान होना था, और क्रमादेशक द्वारा उपयोग में आसानी बहुत कम प्राथमिकता थी। इस युग में क्रमादेशक परिकलक की तुलना में बहुत सस्ते थे।
*लो-एंड प्रणाली/360 सीपीयू 1980 के दशक के मध्य के पीसी की तुलना में कम शक्तिशाली और अधिक महंगे थे जिनके लिए MS-Dओएस डिज़ाइन किया गया था। ओएस/360 न्यूनतम 32 KB मेमोरी साइज वाले प्रणाली के लिए था और Dओएस/360 न्यूनतम 16 KB वाले प्रणाली के लिए था। एक IBM 2030|360/30 CPU—जब प्रणाली/360 की घोषणा 1964 में की गई थी तब निम्न-स्तरीय सीपीयू-प्रति सेकंड 1.8K से 34.5K निर्देशों को संसाधित करता था।<ref>{{Cite web|url=http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2030.html|title=IBM Archives: System/360 Model 30|date=2003-01-23|website=www-03.ibm.com|language=en-US|access-date=2016-04-25}}</ref> 1981 में पहले IBM PC में 16 KB या 64 KB मेमोरी थी और यह प्रति सेकंड लगभग 330K निर्देशों को प्रोसेस करता था।<ref name="vintageComputerIBMPC">{{Cite web |url=http://www.vintage-computer.com/ibm_pc.shtml |title=आईबीएम पीसी|access-date=2007-10-21 |archive-date=2006-07-05 |archive-url=https://web.archive.org/web/20060705211337/http://www.vintage-computer.com/ibm_pc.shtml |url-status=dead }}</ref><ref name="iathVirginiaEduPCs">[http://www3.iath.virginia.edu/elab/hfl0108.html IBM-compatible computers] History of PCs {{webarchive |url=https://web.archive.org/web/20070814010809/http://www3.iath.virginia.edu/elab/hfl0108.html |date=August 14, 2007 }}</ref> परिणामस्वरूप, जेसीएल को परिकलक के लिए प्रोसेस करना आसान होना था, और क्रमादेशक द्वारा उपयोग में आसानी बहुत कम प्राथमिकता थी। इस युग में क्रमादेशक परिकलक की तुलना में बहुत सस्ते थे।
*जेसीएल को बैच संसाधन के लिए डिज़ाइन किया गया था। इस प्रकार, इसे संचालन प्रणाली को सब कुछ बताना होगा, जिसमें एक चरण के परिणाम के आधार पर क्या करना है। उदाहरण के लिए, <code>DISP=(NEW,CATLG,DELETE)</code> इसका मतलब है कि यदि प्रोग्राम सफलतापूर्वक चलता है, तो एक नई फ़ाइल बनाएं और उसे सूचीबद्ध करें; अन्यथा नई फ़ाइल हटाएँ. पीसी पर चलने वाले प्रोग्राम अक्सर समस्याओं से निपटने के बाद सफाई के लिए उपयोगकर्ता पर निर्भर करते हैं।
*जेसीएल को प्रचय संसाधन के लिए डिज़ाइन किया गया था। इस प्रकार, इसे संचालन प्रणाली को सब कुछ बताना होगा, जिसमें एक चरण के परिणाम के आधार पर क्या करना है। उदाहरण के लिए, <code>DISP=(NEW,CATLG,DELETE)</code> इसका मतलब है कि यदि प्रोग्राम सफलतापूर्वक चलता है, तो एक नई फ़ाइल बनाएं और उसे सूचीबद्ध करें; अन्यथा नई फ़ाइल हटाएँ. पीसी पर चलने वाले प्रोग्राम अक्सर समस्याओं से निपटने के बाद सफाई के लिए उपयोगकर्ता पर निर्भर करते हैं।
*प्रणाली/360 यंत्रों को एक संगठन में सभी उपयोगकर्ताओं द्वारा साझा करने के लिए डिज़ाइन किया गया था। इतना <code>JOB</code> कार्ड संचालन प्रणाली को बताता है कि उपयोगकर्ता के खाते को कैसे बिल देना है (<code>IS198T30500</code>), भंडारण और अन्य संसाधनों की कितनी पूर्वनिर्धारित मात्रा आवंटित की जा सकती है (<code>CLASS=L</code>), और कई अन्य चीज़ें। <code>{{nowrap|1=//SYSPRINT DD SYSOUT=*}}</code> परिकलक को प्रोग्राम की रिपोर्ट को डिफ़ॉल्ट [[प्रिंटर (कंप्यूटिंग)]] पर प्रिंट करने के लिए कहता है जो साधारण कागज के साथ लोड होता है, न कि किसी अन्य प्रिंटर पर जो खाली चेक के साथ लोड किया जा सकता है। <code>DISP=SHR</code> संचालन प्रणाली को बताता है कि अन्य प्रोग्राम पढ़ सकते हैं <code>OLDFILE </code>[[ बहु क्रमादेशन ]]
*प्रणाली/360 यंत्रों को एक संगठन में सभी उपयोगकर्ताओं द्वारा साझा करने के लिए डिज़ाइन किया गया था। इतना <code>JOB</code> कार्ड संचालन प्रणाली को बताता है कि उपयोगकर्ता के खाते को कैसे बिल देना है (<code>IS198T30500</code>), भंडारण और अन्य संसाधनों की कितनी पूर्वनिर्धारित मात्रा आवंटित की जा सकती है (<code>CLASS=L</code>), और कई अन्य चीज़ें। <code>{{nowrap|1=//SYSPRINT DD SYSOUT=*}}</code> परिकलक को प्रोग्राम की रिपोर्ट को डिफ़ॉल्ट [[प्रिंटर (कंप्यूटिंग)]] पर प्रिंट करने के लिए कहता है जो साधारण कागज के साथ लोड होता है, न कि किसी अन्य प्रिंटर पर जो खाली चेक के साथ लोड किया जा सकता है। <code>DISP=SHR</code> संचालन प्रणाली को बताता है कि अन्य प्रोग्राम पढ़ सकते हैं <code>OLDFILE </code>[[ बहु क्रमादेशन ]]


Dओएस/360 और ओएस/360 संचालन प्रणाली के बाद के संस्करण मूल जेसीएल की अधिकांश विशेषताओं को बरकरार रखते हैं - हालाँकि ग्राहकों को अपनी सभी जेसीएल फ़ाइलों को फिर से लिखने के लिए मजबूर करने से बचने के लिए कुछ सरलीकरण किया गया है।{{Citation needed|date=October 2012}} कई उपयोगकर्ता जेसीएल स्टेटमेंट के किसी भी सेट को एक प्रक्रिया के रूप में सहेजते हैं जिसका उपयोग एक या दो से अधिक होने की संभावना है।<ref>{{cite book |last1=Brown |first1=Gary DeWard |title=ज़ोस जेसीएल|date=2002 |publisher=John Wiley & Sons |isbn=0471-236357 |page=248 |edition=fifth |url=https://books.google.com/books?id=K8kMJa8arlIC&pg=PA248}}</ref>
Dओएस/360 और ओएस/360 संचालन प्रणाली के बाद के संस्करण मूल जेसीएल की अधिकांश विशेषताओं को बरकरार रखते हैं - हालाँकि ग्राहकों को अपनी सभी जेसीएल फ़ाइलों को फिर से लिखने के लिए मजबूर करने से बचने के लिए कुछ सरलीकरण किया गया है।{{Citation needed|date=October 2012}} कई उपयोगकर्ता जेसीएल स्टेटमेंट के किसी भी सेट को एक प्रक्रिया के रूप में सहेजते हैं जिसका उपयोग एक या दो से अधिक होने की संभावना है।<ref>{{cite book |last1=Brown |first1=Gary DeWard |title=ज़ोस जेसीएल|date=2002 |publisher=John Wiley & Sons |isbn=0471-236357 |page=248 |edition=fifth |url=https://books.google.com/books?id=K8kMJa8arlIC&pg=PA248}}</ref>
ओएस जेसीएल का सिंटैक्स प्रणाली/360 असेंबली भाषा में [[ मैक्रो अनुदेश ]] के सिंटैक्स के समान है, और इसलिए क्रमादेशक उस समय परिचित रहे होंगे जब कई प्रोग्राम असेंबली भाषा में कोडित किए गए थे।
ओएस जेसीएल का सिंटैक्स प्रणाली/360 असेंबली भाषा में [[ मैक्रो अनुदेश ]] के सिंटैक्स के समान है, और इसलिए क्रमादेशक उस समय परिचित रहे होंगे जब कई प्रोग्राम असेंबली भाषा में कूटित किए गए थे।


==डॉस जेसीएल==
==डीओएस जेसीएल==


===स्थितीय मापदण्ड===
===स्थितीय मापदण्ड===
Line 134: Line 138:
//EXTENT SYS005,VOL01,1,0,800,1600
//EXTENT SYS005,VOL01,1,0,800,1600
</syntaxhighlight>
</syntaxhighlight>
डॉस जेसीएल मापदण्ड स्थितीय हैं, जिससे उन्हें पढ़ना और लिखना कठिन हो जाता है, परन्तु प्रणाली के लिए पार्स करना आसान हो जाता है।
डीओएस जेसीएल मापदण्ड स्थितीय हैं, जिससे उन्हें पढ़ना और लिखना कठिन हो जाता है, परन्तु प्रणाली के लिए पार्स करना आसान हो जाता है।
* क्रमादेशक को यह याद रखना चाहिए कि प्रत्येक प्रकार के स्टेटमेंट में कौन सा आइटम किस स्थिति में जाता है।
* क्रमादेशक को यह याद रखना चाहिए कि प्रत्येक प्रकार के स्टेटमेंट में कौन सा आइटम किस स्थिति में जाता है।
* यदि कुछ वैकल्पिक मापदण्ड छोड़ दिए गए हैं परन्तु बाद में सम्मिलित किए गए हैं, तो छोड़े गए मापदण्ड को बिना किसी रिक्त स्थान के अल्पविराम द्वारा दर्शाया जाना चाहिए, जैसा कि ऊपर टीएलबीएल कथन में है।
* यदि कुछ वैकल्पिक मापदण्ड छोड़ दिए गए हैं परन्तु बाद में सम्मिलित किए गए हैं, तो छोड़े गए मापदण्ड को बिना किसी रिक्त स्थान के अल्पविराम द्वारा दर्शाया जाना चाहिए, जैसा कि ऊपर टीएलबीएल कथन में है।


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


===उपकरण निर्भरता===
===उपकरण निर्भरता===
Line 146: Line 150:


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


==ओएस जेसीएल==
==ओएस जेसीएल==
ओएस जेसीएल में तीन मूल कथन प्रकार होते हैं:<ref>Ashley and Fernandez, ''Job Control Language'', pp. 8, 23.  There are also two additional statements, PROC and PEND, used to test JCL procedures.</ref>
ओएस जेसीएल में तीन मूल कथन प्रकार होते हैं:<ref>Ashley and Fernandez, ''Job Control Language'', pp. 8, 23.  There are also two additional statements, PROC and PEND, used to test JCL procedures.</ref>
* <code>JOB</code> विवरण, जो कार्य की शुरुआत की पहचान करता है, और संपूर्ण कार्य के बारे में जानकारी, जैसे बिलिंग, रन प्राथमिकता, और समय और स्थान सीमा।
* <code>JOB</code> विवरण, जो कार्य की शुरुआत की पहचान करता है, और संपूर्ण कार्य के बारे में सूचना, जैसे बिलिंग, रन प्राथमिकता, और समय और स्थान सीमा।
* <code>EXEC</code> कथन, जो कार्यक्रम या प्रक्रिया की पहचान करता है<ref>A pre-stored set of "EXEC PGM=" and "DD" JCL commands which could be parameterized</ref> कार्य के इस चरण में निष्पादित होने के लिए,<br> और चरण के बारे में जानकारी, जिसमें किसी चरण को चलाने या छोड़ने की शर्तें भी सम्मिलित हैं।
* <code>EXEC</code> कथन, जो कार्यक्रम या प्रक्रिया की पहचान करता है<ref>A pre-stored set of "EXEC PGM=" and "DD" JCL commands which could be parameterized</ref> कार्य के इस चरण में निष्पादित होने के लिए,<br> और चरण के बारे में सूचना, जिसमें किसी चरण को चलाने या छोड़ने की शर्तें भी सम्मिलित हैं।
* <code>DD</code> (डेटा परिभाषा) कथन, जो एक चरण में उपयोग की जाने वाली डेटा फ़ाइल की पहचान करते हैं, और उस फ़ाइल के बारे में विस्तृत जानकारी देते हैं। <code>DD</code> चरण के भीतर कथन किसी भी क्रम में हो सकते हैं।
* <code>DD</code> (डेटा परिभाषा) कथन, जो एक चरण में उपयोग की जाने वाली डेटा फ़ाइल की पहचान करते हैं, और उस फ़ाइल के बारे में विस्तृत सूचना देते हैं। <code>DD</code> चरण के भीतर कथन किसी भी क्रम में हो सकते हैं।


शुरुआत से ही, ओएस परिवार के लिए जेसीएल (z/ओएस तक और इसमें सम्मिलित) अधिक लचीला और उपयोग में आसान था।
शुरुआत से ही, ओएस परिवार के लिए जेसीएल (z/ओएस तक और इसमें सम्मिलित) अधिक लचीला और उपयोग में आसान था।
Line 158: Line 162:
निम्नलिखित उदाहरण सिंटैक्स की पुरानी शैली का उपयोग करते हैं जो 1964 में प्रणाली/360 के लॉन्च से ही प्रदान की गई थी। पुरानी सिंटैक्स अभी भी उन नौकरियों में काफी आम है जो केवल मामूली बदलावों के साथ दशकों से चल रही हैं।
निम्नलिखित उदाहरण सिंटैक्स की पुरानी शैली का उपयोग करते हैं जो 1964 में प्रणाली/360 के लॉन्च से ही प्रदान की गई थी। पुरानी सिंटैक्स अभी भी उन नौकरियों में काफी आम है जो केवल मामूली बदलावों के साथ दशकों से चल रही हैं।


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


प्रत्येक जेसीएल कथन को पाँच क्षेत्रों में विभाजित किया गया है:<ref>Ashley and Fernandez, ''Job Control Language'', pp. 12–16.</ref>
प्रत्येक जेसीएल कथन को पाँच क्षेत्रों में विभाजित किया गया है:<ref>Ashley and Fernandez, ''Job Control Language'', pp. 12–16.</ref>
Line 171: Line 175:
** सीमांकक विवरण के कॉलम 1 और 2 में सम्मिलित हैं <code>/*</code>
** सीमांकक विवरण के कॉलम 1 और 2 में सम्मिलित हैं <code>/*</code>
** जेसीएल टिप्पणी विवरण के कॉलम 1, 2, और 3 में सम्मिलित हैं <code>//*</code>
** जेसीएल टिप्पणी विवरण के कॉलम 1, 2, और 3 में सम्मिलित हैं <code>//*</code>
* <var>नाम-फ़ील्ड</var>: नाम फ़ील्ड एक विशेष कथन की पहचान करता है ताकि अन्य कथन और प्रणाली इसे संदर्भित कर सकें। जेसीएल कथनों के लिए, इसे इस प्रकार कोडित किया जाना चाहिए:
* <var>नाम-फ़ील्ड</var>: नाम फ़ील्ड एक विशेष कथन की पहचान करता है ताकि अन्य कथन और प्रणाली इसे संदर्भित कर सकें। जेसीएल कथनों के लिए, इसे इस प्रकार कूटित किया जाना चाहिए:
** नाम कॉलम 3 से प्रारंभ होना चाहिए।
** नाम कॉलम 3 से प्रारंभ होना चाहिए।
** नाम 1 से 8 अक्षरांकीय या राष्ट्रीय है (<code>$</code>, <code>#</code>, <code>@</code>) पात्र।
** नाम 1 से 8 अक्षरांकीय या राष्ट्रीय है (<code>$</code>, <code>#</code>, <code>@</code>) पात्र।
** पहला अक्षर वर्णानुक्रमिक होना चाहिए।
** पहला अक्षर वर्णानुक्रमिक होना चाहिए।
** नाम के बाद कम से कम एक रिक्त स्थान अवश्य होना चाहिए।
** नाम के बाद कम से कम एक रिक्त स्थान अवश्य होना चाहिए।
* <var>ऑपरेशन-फ़ील्ड</var>: ऑपरेशन फ़ील्ड स्टेटमेंट के प्रकार को निर्दिष्ट करता है, या, संकेत स्टेटमेंट के लिए, संकेत को निर्दिष्ट करता है। <var>ऑपरेशन-फ़ील्ड</var> को इस प्रकार कोडित किया जाना चाहिए:
* <var>ऑपरेशन-फ़ील्ड</var>: ऑपरेशन फ़ील्ड स्टेटमेंट के प्रकार को निर्दिष्ट करता है, या, संकेत स्टेटमेंट के लिए, संकेत को निर्दिष्ट करता है। <var>ऑपरेशन-फ़ील्ड</var> को इस प्रकार कूटित किया जाना चाहिए:
** ऑपरेशन फ़ील्ड में कथन के लिए सिंटैक्स बॉक्स में वर्ण सम्मिलित होते हैं।
** ऑपरेशन फ़ील्ड में कथन के लिए सिंटैक्स बॉक्स में वर्ण सम्मिलित होते हैं।
** ऑपरेशन नाम फ़ील्ड का अनुसरण करता है।
** ऑपरेशन नाम फ़ील्ड का अनुसरण करता है।
** ऑपरेशन से पहले और बाद में कम से कम एक रिक्त होना चाहिए।
** ऑपरेशन से पहले और बाद में कम से कम एक रिक्त होना चाहिए।
** ऑपरेशन में से एक होगा <code>JOB</code>, <code>EXEC</code> और <code>DD</code>.
** ऑपरेशन में से एक होगा <code>JOB</code>, <code>EXEC</code> और <code>DD</code>.
* <var>मापदण्ड-फ़ील्ड</var>: मापदण्ड फ़ील्ड, जिसे कभी-कभी ऑपरेंड फ़ील्ड भी कहा जाता है, में अल्पविराम द्वारा अलग किए गए मापदण्ड होते हैं। मापदण्ड फ़ील्ड को इस प्रकार कोडित किया जाना चाहिए:
* <var>मापदण्ड-फ़ील्ड</var>: मापदण्ड फ़ील्ड, जिसे कभी-कभी ऑपरेंड फ़ील्ड भी कहा जाता है, में अल्पविराम द्वारा अलग किए गए मापदण्ड होते हैं। मापदण्ड फ़ील्ड को इस प्रकार कूटित किया जाना चाहिए:
** मापदण्ड फ़ील्ड ऑपरेशन फ़ील्ड का अनुसरण करता है।
** मापदण्ड फ़ील्ड ऑपरेशन फ़ील्ड का अनुसरण करता है।
** मापदण्ड फ़ील्ड के पहले कम से कम एक रिक्त स्थान होना चाहिए।
** मापदण्ड फ़ील्ड के पहले कम से कम एक रिक्त स्थान होना चाहिए।
** मापदण्ड फ़ील्ड में मापदण्ड होते हैं जो कीवर्ड होते हैं जिनका उपयोग प्रोग्राम या डेटासेट नाम जैसी जानकारी प्रदान करने के लिए स्टेटमेंट में किया जाता है।
** मापदण्ड फ़ील्ड में मापदण्ड होते हैं जो कीवर्ड होते हैं जिनका उपयोग प्रोग्राम या डेटासेट नाम जैसी सूचना प्रदान करने के लिए स्टेटमेंट में किया जाता है।
* <var>टिप्पणियाँ-फ़ील्ड</var>: इसमें [[टिप्पणी (कंप्यूटर प्रोग्रामिंग)|टिप्पणी (परिकलक प्रोग्रामिंग)]] सम्मिलित है। <var>टिप्पणियाँ-फ़ील्ड</var> को निम्नानुसार कोडित किया जाना चाहिए:
* <var>टिप्पणियाँ-फ़ील्ड</var>: इसमें [[टिप्पणी (कंप्यूटर प्रोग्रामिंग)|टिप्पणी (परिकलक प्रोग्रामिंग)]] सम्मिलित है। <var>टिप्पणियाँ-फ़ील्ड</var> को निम्नानुसार कूटित किया जाना चाहिए:
** टिप्पणी फ़ील्ड मापदण्ड फ़ील्ड का अनुसरण करती है।
** टिप्पणी फ़ील्ड मापदण्ड फ़ील्ड का अनुसरण करती है।
** टिप्पणी फ़ील्ड के पहले कम से कम एक रिक्त स्थान अवश्य होना चाहिए।
** टिप्पणी फ़ील्ड के पहले कम से कम एक रिक्त स्थान अवश्य होना चाहिए।
Line 202: Line 206:
===डेटा एक्सेस (डीडी स्टेटमेंट)=== <code>DD</code> e>  
===डेटा एक्सेस (डीडी स्टेटमेंट)=== <code>DD</code> e>  


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


फ़ाइल का वर्णन करने वाली जानकारी तीन स्रोतों से आ सकती है: डीडी कार्ड की जानकारी, टेप या डिस्क पर संग्रहीत मौजूदा फ़ाइल के लिए डेटासेट लेबल जानकारी, और प्रोग्राम में कोडित डीसीबी मैक्रो। जब फ़ाइल खोली जाती है तो यह डेटा मर्ज हो जाता है, जिसमें डीडी जानकारी को लेबल जानकारी पर प्राथमिकता दी जाती है, और डीसीबी जानकारी को दोनों पर प्राथमिकता दी जाती है। अद्यतन विवरण फिर डेटासेट लेबल पर वापस लिखा जाता है। यदि गलत डीसीबी जानकारी प्रदान की जाती है तो इससे अनपेक्षित परिणाम हो सकते हैं।<ref>{{cite book|last1=IBM Corporation|title=OS/VS MVS Data Management Services Guide|date=August 1978|url=http://www.prycroft6.com.au/misc/download/GC26-3875-0_MVS_DataMgmtSrvcsGde_Aug78OCR.pdf|access-date=Oct 17, 2014|ref=DataMgmt}}</ref>
फ़ाइल का वर्णन करने वाली सूचना तीन स्रोतों से आ सकती है: डीडी कार्ड की सूचना, टेप या डिस्क पर संग्रहीत मौजूदा फ़ाइल के लिए डेटासेट लेबल सूचना, और प्रोग्राम में कूटित डीसीबी मैक्रो। जब फ़ाइल खोली जाती है तो यह डेटा मर्ज हो जाता है, जिसमें डीडी सूचना को लेबल सूचना पर प्राथमिकता दी जाती है, और डीसीबी सूचना को दोनों पर प्राथमिकता दी जाती है। अद्यतन विवरण फिर डेटासेट लेबल पर वापस लिखा जाता है। यदि गलत डीसीबी सूचना प्रदान की जाती है तो इससे अनपेक्षित परिणाम हो सकते हैं।<ref>{{cite book|last1=IBM Corporation|title=OS/VS MVS Data Management Services Guide|date=August 1978|url=http://www.prycroft6.com.au/misc/download/GC26-3875-0_MVS_DataMgmtSrvcsGde_Aug78OCR.pdf|access-date=Oct 17, 2014|ref=DataMgmt}}</ref>
ऊपर सूचीबद्ध मापदंडों और विभिन्न एक्सेस विधियों और उपकरणों के लिए विशिष्ट जानकारी के कारण डीडी स्टेटमेंट सबसे जटिल जेसीएल स्टेटमेंट है। एक आईबीएम संदर्भ में डीडी स्टेटमेंट का मैनुअल विवरण 130 से अधिक पृष्ठों का है - जो कि JOB और EXEC स्टेटमेंट के संयुक्त विवरण से दोगुने से भी अधिक है।<ref>{{cite book |last1=IBM Corporation |title=IBM System/360 Operating System: Job Control Language Reference |date=June 1971 |url=http://www.bitsavers.org/pdf/ibm/360/os/R20.1_Mar71/GC28-6704-1_OS_JCL_Reference_Rel_20.1_Jun71.pdf |access-date=June 25, 2019}}</ref>
ऊपर सूचीबद्ध मापदंडों और विभिन्न एक्सेस विधियों और उपकरणों के लिए विशिष्ट सूचना के कारण डीडी स्टेटमेंट सबसे जटिल जेसीएल स्टेटमेंट है। एक आईबीएम संदर्भ में डीडी स्टेटमेंट का मैनुअल विवरण 130 से अधिक पृष्ठों का है - जो कि JOB और EXEC स्टेटमेंट के संयुक्त विवरण से दोगुने से भी अधिक है।<ref>{{cite book |last1=IBM Corporation |title=IBM System/360 Operating System: Job Control Language Reference |date=June 1971 |url=http://www.bitsavers.org/pdf/ibm/360/os/R20.1_Mar71/GC28-6704-1_OS_JCL_Reference_Rel_20.1_Jun71.pdf |access-date=June 25, 2019}}</ref>
डीडी स्टेटमेंट इनलाइन डेटा को कार्य स्ट्रीम में इंजेक्ट करने की अनुमति देता है। यह IDCAMS, SORT इत्यादि जैसी उपयोगिताओं को नियंत्रण जानकारी प्रदान करने के साथ-साथ कार्यक्रमों को इनपुट डेटा प्रदान करने के लिए उपयोगी है।
डीडी स्टेटमेंट इनलाइन डेटा को कार्य स्ट्रीम में इंजेक्ट करने की अनुमति देता है। यह IDCAMS, SORT इत्यादि जैसी उपयोगिताओं को नियंत्रण सूचना प्रदान करने के साथ-साथ कार्यक्रमों को इनपुट डेटा प्रदान करने के लिए उपयोगी है।


===उपकरण स्वतंत्रता===
===उपकरण स्वतंत्रता===
Line 232: Line 236:


===मापदण्डीकृत प्रक्रियाएं===
===मापदण्डीकृत प्रक्रियाएं===
ओएस जेसीएल प्रक्रियाओं को प्रारंभ से ही मानकीकृत किया गया था, जिससे वे [[मैक्रो असेंबलर]] या यहां तक ​​कि सरल [[सबरूटीन]] की तरह बन गए और इस प्रकार विभिन्न स्थितियों में उनके [[कोड का पुन: उपयोग]] बढ़ गया।<ref>Ashley and Fernandez, ''Job Control Language'', pp. 129–131.</ref>
ओएस जेसीएल प्रक्रियाओं को प्रारंभ से ही मानकीकृत किया गया था, जिससे वे [[मैक्रो असेंबलर]] या यहां तक ​​कि सरल [[सबरूटीन]] की तरह बन गए और इस प्रकार विभिन्न स्थितियों में उनके [[कोड का पुन: उपयोग|कूट का पुन: उपयोग]] बढ़ गया।<ref>Ashley and Fernandez, ''Job Control Language'', pp. 129–131.</ref>
<syntaxhighlight lang="jcl">
<syntaxhighlight lang="jcl">
//MYPROC PROC FNAME=MYFILE01,SPTYPE=TRK,SPINIT=50,SPEXT=10,LR=100,BLK=1000
//MYPROC PROC FNAME=MYFILE01,SPTYPE=TRK,SPINIT=50,SPEXT=10,LR=100,BLK=1000
Line 240: Line 244:
....
....
</syntaxhighlight>
</syntaxhighlight>
इस उदाहरण में, एम्परसेंड से प्रारंभ होने वाले सभी मान<code>&</code>वे मापदण्ड हैं जो तब निर्दिष्ट किए जाएंगे जब कोई नौकरी अनुरोध करती है कि प्रक्रिया का उपयोग किया जाए। PROC कथन, प्रक्रिया को एक नाम देने के अलावा, क्रमादेशक को प्रत्येक मापदण्ड के लिए डिफ़ॉल्ट मान निर्दिष्ट करने की अनुमति देता है। इसलिए कोई इस उदाहरण में एक प्रक्रिया का उपयोग करके कई अलग-अलग आकार और लेआउट की नई फ़ाइलें बना सकता है। उदाहरण के लिए:
इस उदाहरण में, एम्परसेंड से प्रारंभ होने वाले सभी मान<code>&</code>वे मापदण्ड हैं जो तब निर्दिष्ट किए जाएंगे जब कोई कार्य अनुरोध करती है कि प्रक्रिया का उपयोग किया जाए। PROC कथन, प्रक्रिया को एक नाम देने के अलावा, क्रमादेशक को प्रत्येक मापदण्ड के लिए डिफ़ॉल्ट मान निर्दिष्ट करने की अनुमति देता है। इसलिए कोई इस उदाहरण में एक प्रक्रिया का उपयोग करके कई अलग-अलग आकार और लेआउट की नई फ़ाइलें बना सकता है। उदाहरण के लिए:
<syntaxhighlight lang="jcl">
<syntaxhighlight lang="jcl">
//JOB01  JOB ..........
//JOB01  JOB ..........
Line 268: Line 272:
  |quote=Data set names must not exceed 44 characters, including all name segments and periods.}}</ref>).
  |quote=Data set names must not exceed 44 characters, including all name segments and periods.}}</ref>).


ऐसी नौकरियों में जिनमें नौकरी-विशिष्ट जेसीएल और प्रक्रिया कॉल का मिश्रण होता है, नौकरी-विशिष्ट चरण उस फ़ाइल को वापस संदर्भित कर सकता है जो प्रक्रिया में पूरी तरह से निर्दिष्ट थी, उदाहरण के लिए:
ऐसी नौकरियों में जिनमें कार्य-विशिष्ट जेसीएल और प्रक्रिया कॉल का मिश्रण होता है, कार्य-विशिष्ट चरण उस फ़ाइल को वापस संदर्भित कर सकता है जो प्रक्रिया में पूरी तरह से निर्दिष्ट थी, उदाहरण के लिए:
<syntaxhighlight lang="jcl">
<syntaxhighlight lang="jcl">
//MYJOB JOB ..........
//MYJOB JOB ..........
Line 275: Line 279:
//INPUT01 DD DSN=*.STEP01.MYPR01.NEWFILE
//INPUT01 DD DSN=*.STEP01.MYPR01.NEWFILE
</syntaxhighlight>
</syntaxhighlight>
कहाँ <code>DSN=*.STEP01.MYPR01.NEWFILE</code> का अर्थ है पहचानी गई फ़ाइल का उपयोग करें <code>NEWFILE</code> चरण में <code>MYPR01</code> चरण-दर-चरण उपयोग की जाने वाली प्रक्रिया का <code>STEP01</code> इस नौकरी का. प्रक्रिया के नाम के बजाय उस चरण के नाम का उपयोग करना, जिसे प्रक्रिया कहा जाता है, एक क्रमादेशक को एक ही कार्य में एक ही प्रक्रिया को कई बार उपयोग करने की अनुमति देता है, बिना किसी भ्रम के कि रेफरबैक में प्रक्रिया का कौन सा उदाहरण उपयोग किया जाता है।
कहाँ <code>DSN=*.STEP01.MYPR01.NEWFILE</code> का अर्थ है पहचानी गई फ़ाइल का उपयोग करें <code>NEWFILE</code> चरण में <code>MYPR01</code> चरण-दर-चरण उपयोग की जाने वाली प्रक्रिया का <code>STEP01</code> इस कार्य का. प्रक्रिया के नाम के बजाय उस चरण के नाम का उपयोग करना, जिसे प्रक्रिया कहा जाता है, एक क्रमादेशक को एक ही कार्य में एक ही प्रक्रिया को कई बार उपयोग करने की अनुमति देता है, बिना किसी भ्रम के कि रेफरबैक में प्रक्रिया का कौन सा उदाहरण उपयोग किया जाता है।


===टिप्पणियाँ===
===टिप्पणियाँ===
Line 321: Line 325:


===सशर्त प्रसंस्करण===
===सशर्त प्रसंस्करण===
ओएस उम्मीद करता है कि प्रोग्राम एक रिटर्न कोड सेट करें जो निर्दिष्ट करता है कि प्रोग्राम ने सोचा था कि यह कितना सफल था। सबसे आम पारंपरिक मूल्य हैं:<ref name=Brown />{{rp|p.87}}
ओएस उम्मीद करता है कि प्रोग्राम एक रिटर्न कूट सेट करें जो निर्दिष्ट करता है कि प्रोग्राम ने सोचा था कि यह कितना सफल था। सबसे आम पारंपरिक मूल्य हैं:<ref name=Brown />{{rp|p.87}}
*0 = सामान्य - सब ठीक है
*0 = सामान्य - सब ठीक है
*4 = चेतावनी - छोटी त्रुटियाँ या समस्याएँ
*4 = चेतावनी - छोटी त्रुटियाँ या समस्याएँ
Line 328: Line 332:
*16 = टर्मिनल त्रुटि - बहुत गंभीर समस्याएँ, परिणामों का उपयोग न करें!
*16 = टर्मिनल त्रुटि - बहुत गंभीर समस्याएँ, परिणामों का उपयोग न करें!


ओएस जेसीएल रिटर्न कोड को संदर्भित करता है <code>COND</code> (स्थिति कोड), और इसका उपयोग यह तय करने के लिए कर सकता है कि बाद के चरणों को चलाना है या नहीं। हालाँकि, अधिकांश आधुनिक प्रोग्रामिंग भाषाओं के विपरीत, ओएस जेसीएल में सशर्त चरणों को निष्पादित नहीं किया जाता है यदि निर्दिष्ट स्थिति सत्य है - इस प्रकार स्मरक को जन्म देता है, यदि यह सत्य है, तो [बिना कोड चलाए] आगे बढ़ें। मामले को और अधिक जटिल बनाने के लिए, शर्त को केवल उस चरण के बाद ही निर्दिष्ट किया जा सकता है जिसका वह संदर्भ देता है। उदाहरण के लिए:
ओएस जेसीएल रिटर्न कूट को संदर्भित करता है <code>COND</code> (स्थिति कूट), और इसका उपयोग यह तय करने के लिए कर सकता है कि बाद के चरणों को चलाना है या नहीं। हालाँकि, अधिकांश आधुनिक प्रोग्रामिंग भाषाओं के विपरीत, ओएस जेसीएल में सशर्त चरणों को निष्पादित नहीं किया जाता है यदि निर्दिष्ट स्थिति सत्य है - इस प्रकार स्मरक को जन्म देता है, यदि यह सत्य है, तो [बिना कूट चलाए] आगे बढ़ें। मामले को और अधिक जटिल बनाने के लिए, शर्त को केवल उस चरण के बाद ही निर्दिष्ट किया जा सकता है जिसका वह संदर्भ देता है। उदाहरण के लिए:
<syntaxhighlight lang="jcl">
<syntaxhighlight lang="jcl">
//MYJOB JOB ...........
//MYJOB JOB ...........
Line 343: Line 347:
</syntaxhighlight>
</syntaxhighlight>
साधन:
साधन:
# दौड़ना <code>STEP01</code>, और इसका रिटर्न कोड एकत्र करें।
# दौड़ना <code>STEP01</code>, और इसका रिटर्न कूट एकत्र करें।
# भागो मत <code>STEP02</code> यदि संख्या 4 से बड़ी है <code>STEP01</code>का रिटर्न कोड.
# भागो मत <code>STEP02</code> यदि संख्या 4 से बड़ी है <code>STEP01</code>का रिटर्न कूट.
# भागो मत <code>STEP03</code> यदि संख्या 8 किसी पिछले रिटर्न कोड से कम या उसके बराबर है।
# भागो मत <code>STEP03</code> यदि संख्या 8 किसी पिछले रिटर्न कूट से कम या उसके बराबर है।
# दौड़ना <code>STEP04</code> केवल <code>STEP01</code> असामान्य रूप से समाप्त हो गया.
# दौड़ना <code>STEP04</code> केवल <code>STEP01</code> असामान्य रूप से समाप्त हो गया.
# दौड़ना <code>STEP05</code>, भले ही <code>STEP03</code> असामान्य रूप से समाप्त हो गया.
# दौड़ना <code>STEP05</code>, भले ही <code>STEP03</code> असामान्य रूप से समाप्त हो गया.


इसका अनुवाद निम्नलिखित छद्मकोड में होता है:
इसका अनुवाद निम्नलिखित छद्मकूट में होता है:
  STEP01 चलाएँ
  STEP01 चलाएँ
  यदि STEP01 का रिटर्न कोड 4 से अधिक या उसके बराबर है
  यदि STEP01 का रिटर्न कूट 4 से अधिक या उसके बराबर है
     STEP02 चलाएँ
     STEP02 चलाएँ
  अगर अंत
  अगर अंत
  यदि कोई पिछला रिटर्न कोड 8 से कम है
  यदि कोई पिछला रिटर्न कूट 8 से कम है
     STEP03 चलाएँ
     STEP03 चलाएँ
  अगर अंत
  अगर अंत
Line 367: Line 371:


युक्त चरणों को पढ़कर ध्यान दें <code>COND</code> कथनों को पीछे की ओर मोड़ने से कोई भी उन्हें आसानी से समझ सकता है। यह [[स्थानान्तरण (तर्क)]]तर्क) का एक उदाहरण है।
युक्त चरणों को पढ़कर ध्यान दें <code>COND</code> कथनों को पीछे की ओर मोड़ने से कोई भी उन्हें आसानी से समझ सकता है। यह [[स्थानान्तरण (तर्क)]]तर्क) का एक उदाहरण है।
हालाँकि, बाद में IBM ने जेसीएल में IF कंडीशन पेश की, जिससे क्रमादेशक्स के लिए कोडिंग को बनाए रखते हुए कुछ हद तक आसान बना दिया गया <code>COND</code> मापदण्ड (मौजूदा जेसीएल में परिवर्तन करने से बचने के लिए {{code|COND parm}} प्रयोग किया जाता है)। <code>COND</code> ई> मापदण्ड पर भी निर्दिष्ट किया जा सकता है <code>JOB</code> कथन। यदि ऐसा है तो प्रणाली किसी कार्य के प्रत्येक चरण के लिए समान रिटर्न कोड परीक्षण करता है। यदि कार्य स्टेटमेंट रिटर्न कोड परीक्षण संतुष्ट हो जाता है, तो नौकरी समाप्त हो जाती है।<ref>{{cite web|last1=IBM Corporation|title=JOB और EXEC कथनों पर COND मापदंडों का संबंध|url=https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.ieab500/iea3b5_Relationship_of_the_COND_parameters_on_JOB_and_EXEC_statements.htm|website=IBM Knowledge Center|access-date=Feb 21, 2018}}</ref>
हालाँकि, बाद में IBM ने जेसीएल में IF कंडीशन पेश की, जिससे क्रमादेशक्स के लिए कूटिंग को बनाए रखते हुए कुछ हद तक आसान बना दिया गया <code>COND</code> मापदण्ड (मौजूदा जेसीएल में परिवर्तन करने से बचने के लिए {{code|COND parm}} प्रयोग किया जाता है)। <code>COND</code> ई> मापदण्ड पर भी निर्दिष्ट किया जा सकता है <code>JOB</code> कथन। यदि ऐसा है तो प्रणाली किसी कार्य के प्रत्येक चरण के लिए समान रिटर्न कूट परीक्षण करता है। यदि कार्य स्टेटमेंट रिटर्न कूट परीक्षण संतुष्ट हो जाता है, तो कार्य समाप्त हो जाती है।<ref>{{cite web|last1=IBM Corporation|title=JOB और EXEC कथनों पर COND मापदंडों का संबंध|url=https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.ieab500/iea3b5_Relationship_of_the_COND_parameters_on_JOB_and_EXEC_statements.htm|website=IBM Knowledge Center|access-date=Feb 21, 2018}}</ref>




===उपयोगिताएँ===
===उपयोगिताएँ===
नौकरियां डेटा के प्रसंस्करण में सहायता के लिए कई [[आईबीएम मेनफ्रेम उपयोगिता कार्यक्रम]]ों का उपयोग करती हैं। बैच संसाधन में उपयोगिताएँ सबसे उपयोगी होती हैं। उपयोगिताओं को तीन सेटों में बांटा जा सकता है:
नौकरियां डेटा के प्रसंस्करण में सहायता के लिए कई [[आईबीएम मेनफ्रेम उपयोगिता कार्यक्रम]]ों का उपयोग करती हैं। प्रचय संसाधन में उपयोगिताएँ सबसे उपयोगी होती हैं। उपयोगिताओं को तीन सेटों में बांटा जा सकता है:
* डेटा सेट उपयोगिताएँ - डेटा सेट बनाएं, प्रिंट करें, कॉपी करें, स्थानांतरित करें और हटाएं।
* डेटा सेट उपयोगिताएँ - डेटा सेट बनाएं, प्रिंट करें, कॉपी करें, स्थानांतरित करें और हटाएं।
* प्रणाली यूटिलिटीज़ - कैटलॉग और अन्य प्रणाली जानकारी को बनाए रखें और प्रबंधित करें।
* प्रणाली यूटिलिटीज़ - कैटलॉग और अन्य प्रणाली सूचना को बनाए रखें और प्रबंधित करें।
* एक्सेस मेथड सेवाएँ - [[ वर्चुअल स्टोरेज एक्सेस विधि ]] (वीएसएएम) और गैर-वीएसएएम डेटा सेट को प्रोसेस करें।
* एक्सेस मेथड सेवाएँ - [[ वर्चुअल स्टोरेज एक्सेस विधि | वर्चुअल भंडारण एक्सेस विधि]] (वीएसएएम) और गैर-वीएसएएम डेटा सेट को प्रोसेस करें।


===उपयोग की कठिनाई===
===उपयोग की कठिनाई===
Line 386: Line 390:


==कार्य प्रवेश नियंत्रण भाषा==
==कार्य प्रवेश नियंत्रण भाषा==
आईबीएम मेनफ्रेम प्रणाली पर कार्य प्रवेश नियंत्रण भाषा या जेईसीएल संकेत लैंग्वेज कंट्रोल स्टेटमेंट का सेट है जो [[ अटेरन ]] उप-प्रणाली के लिए जानकारी प्रदान करता है - जेड/ओएस पर कार्य प्रवेश उप-प्रणाली 2/3 या आईबीएम पावर (सॉफ्टवेयर) | वीएसई (संचालन) के लिए वीएसई/पावर प्रणाली)|जेड/वीएसई। जेईसीएल स्टेटमेंट निर्दिष्ट कर सकते हैं कि किस नेटवर्क परिकलक पर कार्य स्ट्रीम चलाना है, कब कार्य चलाना है और परिणामी आउटपुट कहां भेजना है।<ref name=Brown>{{cite book|last=Brown|first=Gary DeWard|title=ज़ोस जेसीएल|year=2002|publisher=John Wiley & Sons|isbn=9780471426738|url=https://books.google.com/books?id=K8kMJa8arlIC&dq=jecl+definition&pg=PA3|access-date=2014-05-05}}</ref>
आईबीएम मेनफ्रेम प्रणाली पर कार्य प्रवेश नियंत्रण भाषा या जेईसीएल संकेत लैंग्वेज कंट्रोल स्टेटमेंट का सेट है जो [[ अटेरन ]] उप-प्रणाली के लिए सूचना प्रदान करता है - जेड/ओएस पर कार्य प्रवेश उप-प्रणाली 2/3 या आईबीएम पावर (सॉफ्टवेयर) | वीएसई (संचालन) के लिए वीएसई/पावर प्रणाली)|जेड/वीएसई। जेईसीएल स्टेटमेंट निर्दिष्ट कर सकते हैं कि किस नेटवर्क परिकलक पर कार्य स्ट्रीम चलाना है, कब कार्य चलाना है और परिणामी आउटपुट कहां भेजना है।<ref name=Brown>{{cite book|last=Brown|first=Gary DeWard|title=ज़ोस जेसीएल|year=2002|publisher=John Wiley & Sons|isbn=9780471426738|url=https://books.google.com/books?id=K8kMJa8arlIC&dq=jecl+definition&pg=PA3|access-date=2014-05-05}}</ref>
जेईसीएल [[ कार्य नियंत्रण भाषा ]] (जेसीएल) से अलग है, जो संचालन प्रणाली को निर्देश देता है कि कार्य कैसे चलाया जाए।
जेईसीएल [[ कार्य नियंत्रण भाषा ]] (जेसीएल) से अलग है, जो संचालन प्रणाली को निर्देश देता है कि कार्य कैसे चलाया जाए।


Line 392: Line 396:


===ओएस/360===
===ओएस/360===
ओएस/360 रिमोट कार्य प्रवेश (प्रोग्राम नंबर 360S-RC-536) के लिए कार्य प्रवेश नियंत्रण भाषा के शुरुआती संस्करण में पहचानकर्ता का उपयोग किया गया था<code>..</code>इनपुट रिकॉर्ड के कॉलम 1-2 में और एक एकल नियंत्रण कथन सम्मिलित है: <code>JED</code> (नौकरी प्रवेश परिभाषा)। वर्कस्टेशन संकेत जैसे <code>LOGON</code>, <code>LOGOFF</code>, और <code>STATUS</code> से भी शुरुआत हुई<code>..</code> .<ref>{{cite book|last=IBM Corporation|title=IBM System/360 Operating System Remote Job Entry|year=1968|url=http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/360/rje/C30-2006-1_Remote_Job_Entry_May68.pdf|access-date=2014-05-05}}</ref>
ओएस/360 रिमोट कार्य प्रवेश (प्रोग्राम नंबर 360S-RC-536) के लिए कार्य प्रवेश नियंत्रण भाषा के शुरुआती संस्करण में पहचानकर्ता का उपयोग किया गया था<code>..</code>इनपुट रिकॉर्ड के कॉलम 1-2 में और एक एकल नियंत्रण कथन सम्मिलित है: <code>JED</code> (कार्य प्रवेश परिभाषा)। वर्कस्टेशन संकेत जैसे <code>LOGON</code>, <code>LOGOFF</code>, और <code>STATUS</code> से भी शुरुआत हुई<code>..</code> .<ref>{{cite book|last=IBM Corporation|title=IBM System/360 Operating System Remote Job Entry|year=1968|url=http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/360/rje/C30-2006-1_Remote_Job_Entry_May68.pdf|access-date=2014-05-05}}</ref>




Line 443: Line 447:
! JECL statement !! Function !! Example
! JECL statement !! Function !! Example
|-
|-
| <code>//**''command''</code> || Enters a JES3 operator (console) command ||
| <code>//**''command''</code> || एक JES3 ऑपरेटर (कंसोल) कमांड दर्ज करता है ||
|-
|-
| <code>//*DATASET</code> || Marks the beginning of an in-stream dataset ||
| <code>//*DATASET</code> || इन-स्ट्रीम डेटासेट की शुरुआत को चिह्नित करता है ||
|-
|-
| <code>//*ENDDATASET</code> || Marks the end of an in-stream dataset ||  
| <code>//*ENDDATASET</code> || इन-स्ट्रीम डेटासेट के अंत को चिह्नित करता है ||
|-
|-
| <code>//*ENDPROCESS</code> || Marks the end of a series of &nbsp;<code>//*PROCESS</code>&nbsp; statements ||  
| <code>//*ENDPROCESS</code> || &nbsp;<code>//*PROCESS</code>&nbsp; कथनों की श्रृंखला के अंत को चिह्नित करता है ||
|-
|-
| <code>//*FORMAT</code> || Specifies &nbsp;<code>SYSOUT</code>&nbsp; dataset options ||  
| <code>//*FORMAT</code> || &nbsp;<code>SYSOUT</code>&nbsp; डेटासेट विकल्प निर्दिष्ट करता है ||
|-
|-
| <code>//*MAIN</code> || Specifies values for job-related parameters ||
| <code>//*MAIN</code> || नौकरी से संबंधित मापदंडों के लिए मान निर्दिष्ट करता है ||
|-
|-
| <code>//*NET</code> || Identifies relationships among jobs using JES3 ''dependent job control'' ||
| <code>//*NET</code> || JES3 निर्भर कार्य नियंत्रण का उपयोग करके नौकरियों के बीच संबंधों की पहचान करता है ||
|-
|-
| <code>//*NETACCT</code> || Specifies account number for network job ||
| <code>//*NETACCT</code> || नेटवर्क कार्य के लिए खाता संख्या निर्दिष्ट करता है ||
|-
|-
| <code>//*OPERATOR</code> || Sends a message to the operator console ||
| <code>//*OPERATOR</code> || ऑपरेटर कंसोल को एक संदेश भेजता है ||
|-
|-
| <code>//*PAUSE</code> || Stops the input reader ||
| <code>//*PAUSE</code> || इनपुट रीडर बंद कर देता है ||
|-
|-
| <code>//*PROCESS</code> || Identifies a non-standard job ||
| <code>//*PROCESS</code> || एक गैर-मानक कार्य की पहचान करता है ||
|-
|-
| <code>//*ROUTE</code> || Specifies the execution node for the job ||
| <code>//*ROUTE</code> || कार्य के लिए निष्पादन नोड निर्दिष्ट करता है ||
|-
|-
| <code>/*SIGNOFF</code> || Ends remote session || <code>/*SIGNOFF</code>
| <code>/*SIGNOFF</code> || दूरस्थ सत्र समाप्त होता है || <code>/*SIGNOFF</code>
|-
|-
| <code>/*SIGNON</code> || Begins remote session ||
| <code>/*SIGNON</code> || दूरस्थ सत्र प्रारंभ होता है ||
|}
|}




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


{| class="wikitable"
{| class="wikitable"
Line 480: Line 484:
! JECL statement<ref>{{cite book|last=IBM Corporation|title=DOS/VS POWER/VS Installation and Operations|year=1974|url=http://bitsavers.trailing-edge.com/pdf/ibm/370/DOS_VS/GC33-5403-1_DOS_VS_POWER_VS_Installation_and_Operation_Sep74.pdf}}</ref> !! Function !! Example
! JECL statement<ref>{{cite book|last=IBM Corporation|title=DOS/VS POWER/VS Installation and Operations|year=1974|url=http://bitsavers.trailing-edge.com/pdf/ibm/370/DOS_VS/GC33-5403-1_DOS_VS_POWER_VS_Installation_and_Operation_Sep74.pdf}}</ref> !! Function !! Example
|-
|-
| <code>* $$ CTL</code> || Establishes a default ''input class'' || <code>* $$ CTL CLASS=A</code>
| <code>* $$ CTL</code> || एक डिफ़ॉल्ट इनपुट क्लास स्थापित करता है || <code>* $$ CTL CLASS=A</code>
|-
|-
| <code>* $$ JOB</code> || Specifies attributes of a job || <code>* $$ JOB JNM=PYRL,PRI=9</code>
| <code>* $$ JOB</code> || किसी कार्य की विशेषताएँ निर्दिष्ट करता है || <code>* $$ JOB JNM=PYRL,PRI=9</code>
|-
|-
| <code>* $$ EOJ</code> || Marks the end of a job || <code>* $$ EOJ</code>
| <code>* $$ EOJ</code> || Marks the end of a job || <code>* $$ EOJ</code>
Line 509: Line 513:
{{For|Other (non-IBM) Job Control Languages|Job control (computing)}}
{{For|Other (non-IBM) Job Control Languages|Job control (computing)}}


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


== यह भी देखें ==
== यह भी देखें ==

Revision as of 19:18, 5 July 2023

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

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

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

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

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

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

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

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

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

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

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


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

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

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

ओएस/360

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


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

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

जेड/ओएस

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

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

निम्नलिखित JES2 जेईसीएल कथनों का उपयोग z/ओएस 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/ओएस 1.2.0 में किया जाता है[38]

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


z/VSE

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

JECL statement[39] Function Example
* $$ CTL एक डिफ़ॉल्ट इनपुट क्लास स्थापित करता है * $$ CTL CLASS=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.जेसीएल1
* $$ 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


अन्य प्रणाली

अन्य मेनफ्रेम प्रचय संसाधन प्रणाली में किसी न किसी प्रकार की कार्य नियंत्रण भाषा होती थी, चाहे उसे ऐसा कहा जाए या नहीं; उनका सिंटैक्स आईबीएम संस्करणों से पूरी तरह से अलग था, परन्तु वे आम तौर पर समान क्षमताएं प्रदान करते थे। इंटरैक्टिव कंप्यूटिंग प्रणाली संकेत भाषाएँ सम्मिलित करें - संकेत फ़ाइलें (जैसे PCDओएस .bat फ़ाइलें) को गैर-इंटरैक्टिव रूप से चलाया जा सकता है, परन्तु ये सामान्यतः जेसीएल की तरह अप्राप्य नौकरियों को चलाने के लिए उतना मजबूत वातावरण प्रदान नहीं करते हैं। कुछ परिकलक प्रणाली पर कार्य नियंत्रण भाषा और इंटरैक्टिव संकेत भाषा भिन्न हो सकती है। उदाहरण के लिए, z/ओएस प्रणाली पर समय साझा करने का विकल्प प्रचय कार्य के लिए जेसीएल के साथ-साथ संकेत भाषाओं के रूप में 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).


स्रोत

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