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

From Vigyanwiki
No edit summary
No edit summary
 
(7 intermediate revisions by 3 users not shown)
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 से ज़ेड/ओएस तक की वंशावली के लिए,बाद वाले में अब जेईएस विस्तारण, कार्य प्रवेश नियंत्रण भाषा (जेईसीएल) सम्मिलित है।


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


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


===मूल वाक्यविन्यास===
===मूल वाक्यविन्यास===
डीओएस और ओएस जेसीएल दोनों में अधिकतम प्रयोग करने योग्य लाइन की लंबाई 80 अक्षर है, क्योंकि जब Dओएस/360 और ओएस/360 का पहली बार उपयोग किया गया था तो परिकलक प्रणाली में नया इनपुट प्रदान करने की मुख्य विधि 80-कॉलम वाले [[छिद्रित कार्ड]] थे।<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 528–529.</ref> बाद में लंबी रिकॉर्ड लंबाई वाली डिस्क या टेप फ़ाइलों के माध्यम से कार्य सबमिट करना संभव हो गया, परन्तु संचालन प्रणाली के कार्य सबमिशन घटकों ने कैरेक्टर 80 के बाद सब कुछ नजरअंदाज कर दिया।
डॉस और ओएस जेसीएल दोनों में अधिकतम प्रयोग करने योग्य पंक्ति की लंबाई 80 अक्षर है, क्योंकि जब डॉस/360 और ओएस/360 का पहली बार उपयोग किया गया था तो परिकलक प्रणाली में नया इनपुट प्रदान करने की मुख्य विधि 80-स्तम्भ वाले [[छिद्रित कार्ड|पंच कार्ड]] थे।<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 528–529.</ref> बाद में लंबी अभिलेख लंबाई वाली डिस्क या टेप फ़ाइलों के माध्यम से कार्य प्रस्तुत करना संभव हो गया, परन्तु संचालन प्रणाली के कार्य प्रस्तुति घटकों ने अक्षर 80 के बाद सब कुछ उपेक्षित कर दिया।


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


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


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


कई जेसीएल कथन 71 अक्षरों के भीतर फिट होने के लिए बहुत लंबे हैं, परन्तु इन्हें अनिश्चित संख्या में निरंतरता कार्डों तक बढ़ाया जा सकता है:
कई जेसीएल विवरण 71 अक्षरों के भीतर उपयुक्त होने के लिए बहुत लंबे हैं, परन्तु इन्हें अनिश्चित संख्या में निरंतरता कार्डों तक बढ़ाया जा सकता है:
{| class="wikitable"
{| class="wikitable"
|-
|-
! ओएस जेसीएल !! डीओएस जेसीएल
! ओएस जेसीएल !! डॉस जेसीएल
|-
|-
| अंतिम को छोड़कर सभी वास्तविक जेसीएल कार्डों को उस बिंदु पर समाप्त करना जहां सिंटैक्स के लिए अल्पविराम (<code>,</code>) की आवश्यकता होती है। || अंतिम को छोड़कर सभी वास्तविक जेसीएल कार्डों को उस बिंदु पर समाप्त करना जहां सिंटैक्स के लिए कॉलम 72 में अल्पविराम (<code>,</code>) और एक गैर-रिक्त वर्ण की आवश्यकता होती है
| अंतिम को छोड़कर सभी वास्तविक जेसीएल कार्डों को उस बिंदु पर समाप्त करना जहां वाक्य रचना के लिए अल्पविराम (<code>,</code>) की आवश्यकता होती है। || अंतिम को छोड़कर सभी वास्तविक जेसीएल कार्डों को उस बिंदु पर समाप्त करना जहां वाक्य रचना के लिए स्तम्भ 72 में अल्पविराम (<code>,</code>) और एक गैर-रिक्त वर्ण की आवश्यकता होती है।
|-
|-
| प्रत्येक निरंतरता कार्ड को कॉलम 1 में <code>//</code> और फिर कम से कम 1 स्थान से प्रारंभ करें || प्रत्येक निरंतरता कार्ड को रिक्त स्थान से शुरू करें और कॉलम 15 में जारी रखें
| प्रत्येक निरंतरता कार्ड को स्तम्भ 1 में <code>//</code> और फिर कम से कम 1 स्थान से प्रारंभ करें। || प्रत्येक निरंतरता कार्ड को रिक्त स्थान से प्रारंभ करें और स्तम्भ 15 में जारी रखें।
|}
|}
सबसे सामान्य प्रकार के कार्ड की संरचना इस प्रकार है:<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 529, 531.</ref>
सबसे सामान्य प्रकार के कार्ड की संरचना इस प्रकार है:<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 529, 531.</ref>
{| class="wikitable"
{| class="wikitable"
|-
|-
! ओएस जेसीएल !! डीओएस जेसीएल
! ओएस जेसीएल !! डॉस जेसीएल
|-
|-
|
|
*<code>//</code>
*<code>//</code>
*Name field for this statement, following <code>//</code> with no space between.  If this statement does not have a name at least one blank immediately follows the <code>//</code>.
*इस विवरण के लिए नाम क्षेत्र, निम्नलिखित <code>//</code> मध्य में कोई स्थान नहीं है। यदि इस विवरण में कोई नाम नहीं है तो कम-से-कम एक रिक्त स्थान तुरंत <code>//</code> के बाद आता है।
*Space(s)
*स्थान (s)
*Statement type
*विवरण के प्रकार
*Space(s)
*स्थान (s)
*Parameters, which vary depending on the statement type, separated by commas and with no space between them.
*मापदण्ड, जो विवरण प्रकार के आधार पर भिन्न होते हैं, अल्पविराम द्वारा अलग किए जाते हैं और उनके मध्य कोई स्थान नहीं होता है।
||
||
*<code>//</code> (spaces if this is a continuation of a previous line)
*<code>//</code> (रिक्त स्थान यदि यह पिछली पंक्ति की निरंतरता है)
*Statement type for this statement, following <code>//</code> with a space between. 
*इस विवरण के लिए विवरण टाइप करें, मध्य में रिक्त स्थान के साथ <code>//</code> का अनुसरण करें।
*Space(s)
*स्थान (s)
*Name of resource
*संसाधन का नाम
*Space(s)
*स्थान (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ओएस और ओएस जेसीएल में इन-स्ट्रीम इनपुट की शुरुआत का संकेत देने के अलग-अलग तरीके हैं, परन्तु दोनों इन-स्ट्रीम इनपुट को समाप्त करते हैं <code>/*</code> अंतिम इन-स्ट्रीम डेटा कार्ड के बाद कार्ड के कॉलम 1 पर। इससे संचालन प्रणाली कार्ड में जेसीएल की संसाधन फिर से प्रारंभ कर देता है <code>/*</code> कार्ड।<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 529, 537.</ref>
डॉस और ओएस जेसीएल के पास शृंखलाबद्ध इनपुट के प्रारम्भ का संकेत देने के अलग-अलग तरीके हैं, परन्तु दोनों अंतिम शृंखलाबद्ध डेटा कार्ड के बाद कार्ड के स्तम्भ 1 पर <code>/*</code>  के साथ शृंखलाबद्ध इनपुट को समाप्त करते हैं। इससे संचालन प्रणाली <code>/*</code> कार्ड के बाद कार्ड में जेसीएल की प्रोसेसिंग पुनः प्रारंभ कर देता है।<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 529, 537.</ref>
*ओएस जेसीएल: डीडी स्टेटमेंट का उपयोग इन-स्ट्रीम डेटा, साथ ही डेटा सेट का वर्णन करने के लिए किया जा सकता है। इन-स्ट्रीम डेटा से संबंधित डीडी स्टेटमेंट में डीडी पहचानकर्ता के बाद एक तारांकन चिह्न (*) होता है, उदाहरण के लिए। <code>//SYSIN DD *</code>. जेसीएल स्टेटमेंट को डीडी डेटा स्टेटमेंट का उपयोग करके इन-स्ट्रीम डेटा के हिस्से के रूप में सम्मिलित किया जा सकता है।
*ओएस जेसीएल: डीडी विवरण का उपयोग शृंखलाबद्ध डेटा, साथ ही डेटा सेट का वर्णन करने के लिए किया जा सकता है। शृंखलाबद्ध डेटा से संबंधित डीडी विवरण में डीडी पहचानकर्ता के बाद एक तारांकन चिह्न (*) होता है, उदाहरण के लिए, <code>//एसवाईएसIN 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') को एक कार्य सबमिट करता है और फिर दो फ़ाइलें हटा देता है वह है:
==={{anchor}}जटिलता===
<सिंटैक्सहाइलाइट लैंग= जेसीएल हाइलाइट= 8,12,13 >
ओएस जेसीएल की अधिकांश जटिलता, विशेष रूप से, [[डेटा सेट (आईबीएम मेनफ्रेम)|डेटासेट]] सूचना निर्दिष्ट करने के लिए बड़ी संख्या में विकल्पों से उत्पन्न होती है। जबकि [[यूनिक्स]] जैसे संचालन प्रणाली पर फ़ाइलों को बाइट्स की क्रमबद्ध धाराओं में सारगर्भित किया जाता है, जिसमें संरचित डेटा को पढ़ने और लिखने का कार्य विशेष रूप से उपयोगकर्ता-स्तरीय प्रोग्रामों (जो अंततः, ऐसी धाराओं को अंतग्रर्हण और उत्सर्जित करना) और डेटा के व्यावहारिक विवरण से संबंधित होता है। उपयोगकर्ता प्रोग्रामों की सूचना के बिना संचालन प्रणाली द्वारा बड़े पैमाने पर भंडारण और अधिगम को नियंत्रित किया जाता है; ओएस/360 और उसके आनुक्रमिको पर डेटासेट उनके फ़ाइल प्रकार और आकार, अभिलेख प्रकार और लंबाई, खंड आकार, [[चुंबकीय टेप डेटा भंडारण|चुंबकीय टेप]] घनत्व जैसी उपकरण-विशिष्ट सूचना और लेबल सूचना को उजागर करते हैं। हालाँकि कई विकल्पों के लिए प्रणाली व्यतिक्रम हैं, फिर भी प्रोग्रामर द्वारा जेसीएल और प्रोग्राम में कोडित सूचना के संयोजन के माध्यम से बहुत कुछ निर्दिष्ट किया जाना शेष है। प्रोग्राम में जितनी अधिक सूचना कोडित की जाएगी, वह उतना ही कम नम्य होगा, क्योंकि प्रोग्राम की सूचना जेसीएल में किसी भी चीज़ को प्रत्यादेश कर देती है; इस प्रकार, अधिकांश सूचना सामान्यतः जेसीएल के माध्यम से प्रदान की जाती है।
//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=(पुराना,हटाएं)
</वाक्यविन्यास हाइलाइट>
::# PICALC1K नामक प्रोग्राम (TYPRUN=HOLD) मैन्युअल रूप से जारी होने की प्रतीक्षा करेगा
::# IEFBR14 नामक प्रोग्राम अभी चलेगा और पूर्ण होने पर, दो मौजूदा फ़ाइलें, PICALC.4DGTS और PICALC.5DGTS हटा दी जाएंगी।
 
*डॉस जेसीएल: प्रोग्राम के लिए EXEC कार्ड के बाद बस इन-स्ट्रीम डेटा दर्ज करें।


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


जेसीएल का उपयोग करते हुए निम्नलिखित उदाहरण का उपयोग ओएस/360 पर फ़ाइल की प्रतिलिपि बनाने के लिए किया जा सकता है:
जेसीएल की जटिलता के लिए दूसरी व्याख्या किसी कार्य को चलाने के लिए पीसी या यूनिक्स जैसे वातावरण में पाई जाने वाली अपेक्षाओं से भिन्न है।
<सिंटैक्सहाइलाइट लैंग= जेसीएल हाइलाइट= 3 >
*निम्न-स्तरीय प्रणाली/360 सीपीयू 1980 के दशक के मध्य के पीसी की तुलना में कम शक्तिशाली और अधिक महंगे थे जिनके लिए एमएस-डॉस रूपांकित किया गया था। ओएस/360 न्यूनतम 32 केबी मेमोरी आकार वाले प्रणाली के लिए था और डॉस/360 न्यूनतम 16 केबी वाले प्रणाली के लिए था। 1964 में प्रणाली/360 की घोषणा के समय एक 360/30 सीपीयू निम्न-स्तरीय सीपीयू-प्रति सेकंड 1.8के से 34.5के निर्देशों को संसाधित करता था।<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 में पहले आईबीएम पीसी में 16 केबी या 64 केबी मेमोरी थी और यह प्रति सेकंड लगभग 330के निर्देशों को संसाधित करता था।<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> परिणामस्वरूप, जेसीएल को परिकलक के लिए संसाधित करना सरल होना था और प्रोग्रामर द्वारा उपयोग में सरली बहुत कम प्राथमिकता थी। इस युग में प्रोग्रामर परिकलक की तुलना में बहुत सस्ते थे।
//IS198CPY कार्य (IS198T30500), 'कॉपी कार्य', क्लास=L, MSGCLASS=X
*जेसीएल को प्रचय संसाधन के लिए रूपांकित किया गया था। इस प्रकार, इसे संचालन प्रणाली को सब कुछ बताना होगा, जिसमें एक चरण के परिणाम के आधार पर क्या करना है। उदाहरण के लिए, <code>DISP=(NEW,CATLG,DELETE)</code> इसका अर्थ है कि यदि प्रोग्राम सफलतापूर्वक चलता है, तो एक नई फ़ाइल बनाएं और उसे सूचीबद्ध करें; अन्यथा नई फ़ाइल हटाएँ. पीसी पर चलने वाले प्रोग्राम प्रायः समस्याओं से संसाधित करने के बाद सफाई के लिए उपयोगकर्ता पर निर्भर करते हैं।
//COPY01 EXEC PGM=IEBGENER
*प्रणाली/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>पढ़ सकते हैं।
//सिप्रिंट डीडी सिसौट=*
//SYSUT1 DD DSN=OLDFILE,DISP=SHR
//SYSUT2 DD DSN=न्यूफ़ाइल,
// DISP=(नया,CATLG,हटाएं),
// स्पेस=(CYL,(40,5),RLSE),
// DCB=(LRECL=115,BLKSIZE=1150)
//सिसिन डीडी डमी
</वाक्यविन्यास हाइलाइट>


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


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


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


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


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


===मैन्युअल फ़ाइल आवंटन===
===मैन्युअल फ़ाइल आवंटन===
Dओएस/360 को मूल रूप से क्रमादेशक को [[डायरेक्ट-एक्सेस स्टोरेज डिवाइस|डायरेक्ट-एक्सेस स्टोरेज उपकरण]] पर सभी फ़ाइलों का स्थान और आकार निर्दिष्ट करने की आवश्यकता थी। <code>EXTENT</code> ई> कार्ड उस वॉल्यूम को निर्दिष्ट करता है जिस पर सीमा स्थित है, आरंभिक निरपेक्ष ट्रैक और ट्रैक की संख्या। z/VSE के लिए एक फ़ाइल में विभिन्न वॉल्यूम पर 256 विस्तार तक हो सकते हैं।
डॉस/360 को मूल रूप से प्रोग्रामर को [[डायरेक्ट-एक्सेस स्टोरेज डिवाइस|डीएएसडी]] पर सभी फ़ाइलों का स्थान और आकार निर्दिष्ट करने की आवश्यकता थी। <code>EXTENT</code> कार्ड उस प्रबलता को निर्दिष्ट करता है जिस पर सीमा स्थित है, आरंभिक पूर्णपंक्ति और पंक्ति की संख्या हैं। जेड/वीएसई के लिए एक फ़ाइल में विभिन्न प्रबलता पर 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> की पहचान करता है और चरण के विषय में सूचना, जिसमें किसी चरण को चलाने या छोड़ने के प्रतिबन्ध भी सम्मिलित हैं।
* <code>DD</code> (डेटा परिभाषा) कथन, जो एक चरण में उपयोग की जाने वाली डेटा फ़ाइल की पहचान करते हैं, और उस फ़ाइल के बारे में विस्तृत जानकारी देते हैं। <code>DD</code> चरण के भीतर कथन किसी भी क्रम में हो सकते हैं।
* <code>DD</code> (डेटा परिभाषा) विवरण, जो एक चरण में उपयोग की जाने वाली डेटा फ़ाइल की पहचान करते हैं और उस फ़ाइल के विषय में विस्तृत सूचना देते हैं। <code>DD</code> विवरण के भीतर किसी भी क्रम में हो सकते हैं।
 
प्रारम्भ से ही, ओएस वर्ग के लिए जेसीएल (जेड/ओएस तक और इसमें सम्मिलित) अधिक सुनम्य और उपयोग में सरल था।
 
निम्नलिखित उदाहरण वाक्य रचना की पुरानी शैली का उपयोग करते हैं जो 1964 में प्रणाली/360 के प्रमोचन से ही प्रदान की गई थी। पुरानी वाक्य रचना अभी भी उन कार्यों में काफी सामान्य है जो केवल सामान्य परिवर्तनों के साथ दशकों से चल रही हैं।


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


निम्नलिखित उदाहरण सिंटैक्स की पुरानी शैली का उपयोग करते हैं जो 1964 में प्रणाली/360 के लॉन्च से ही प्रदान की गई थी। पुरानी सिंटैक्स अभी भी उन नौकरियों में काफी आम है जो केवल मामूली बदलावों के साथ दशकों से चल रही हैं।
प्रत्येक जेसीएल विवरण को पाँच क्षेत्रों में विभाजित किया गया है:<ref>Ashley and Fernandez, ''Job Control Language'', pp. 12–16.</ref>


===जेसीएल कथनों को कोड करने के नियम===
पहचानकर्ता-क्षेत्र नाम-क्षेत्र संचालन-क्षेत्र मापदण्ड-क्षेत्र टिप्पणियाँ-क्षेत्र


प्रत्येक जेसीएल कथन को पाँच क्षेत्रों में विभाजित किया गया है:<ref>Ashley and Fernandez, ''Job Control Language'', pp. 12–16.</ref>
पहचानकर्ता-फ़ील्ड नाम-फ़ील्ड ऑपरेशन-फ़ील्ड मापदण्ड-फ़ील्ड टिप्पणियाँ-फ़ील्ड
                  ^ ^ ^ ^
              कोई जगह नहीं, कोई जगह नहीं, कोई जगह नहीं


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


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


===कीवर्ड मापदण्ड===
===संकेत शब्द मापदण्ड===
<syntaxhighlight lang="jcl">
<syntaxhighlight lang="jcl">
//NEWFILE DD DSN=MYFILE01,UNIT=DISK,SPACE=(TRK,80,10),
//NEWFILE DD DSN=MYFILE01,UNIT=DISK,SPACE=(TRK,80,10),
Line 195: Line 163:
//          DISP=(NEW,CATLG,DELETE)
//          DISP=(NEW,CATLG,DELETE)
</syntaxhighlight>
</syntaxhighlight>
ओएस जेसीएल स्टेटमेंट के सभी प्रमुख मापदण्ड कीवर्ड द्वारा पहचाने जाते हैं और इन्हें किसी भी क्रम में प्रस्तुत किया जा सकता है। इनमें से कुछ में दो या दो से अधिक उप-मापदण्ड होते हैं, जैसे <code>SPACE</code> (एक नई फ़ाइल को कितना डिस्क स्थान आवंटित करना है) और <code>DCB</code> (फ़ाइल के लेआउट का विस्तृत विवरण) उपरोक्त उदाहरण में। उप-मापदण्ड कभी-कभी स्थितीय होते हैं, जैसे कि <code>SPACE</code>, परन्तु सबसे जटिल मापदण्ड, जैसे <code>DCB</code>, कीवर्ड उप-मापदण्ड हैं।
ओएस जेसीएल विवरण के सभी प्रमुख मापदण्ड संकेत शब्द द्वारा पहचाने जाते हैं और इन्हें किसी भी क्रम में प्रस्तुत किया जा सकता है। इनमें से कुछ में दो या दो से अधिक उप-मापदण्ड होते हैं, जैसे उपरोक्त उदाहरण में <code>SPACE</code> (एक नई फ़ाइल को कितना डिस्क स्थान आवंटित करना है) और <code>DCB</code> (फ़ाइल के प्रदर्शन का विस्तृत विवरण) है। उप-मापदण्ड कभी-कभी स्थितीय होते हैं, जैसे कि <code>SPACE</code> में, परन्तु सबसे जटिल मापदण्ड, जैसे <code>DCB</code> में, संकेत शब्द उप-मापदण्ड होते हैं।


स्थितीय मापदण्ड को कीवर्ड मापदण्ड से पहले होना चाहिए। कीवर्ड मापदण्ड हमेशा बराबर चिह्न का उपयोग करके किसी कीवर्ड को मान निर्दिष्ट करते हैं (<code>=</code>).<ref>Ashley and Fernandez, ''Job Control Language'', pp. 13–15.</ref>
स्थितीय मापदण्ड को संकेत शब्द मापदण्ड से पहले होना चाहिए। संकेत शब्द मापदण्ड सदैव बराबर चिह्न <code>=</code> का उपयोग करके किसी संकेत शब्द को मान निर्दिष्ट करते हैं।<ref>Ashley and Fernandez, ''Job Control Language'', pp. 13–15.</ref>


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


===डेटा एक्सेस (डीडी स्टेटमेंट)=== <code>DD</code> e>  
फ़ाइल का वर्णन करने वाली सूचना तीन स्रोतों से आ सकती है: डीडी कार्ड की सूचना, टेप या डिस्क पर संग्रहीत उपस्थित फ़ाइल के लिए डेटासेट लेबल सूचना और प्रोग्राम में कोडित डीसीबी मैक्रो है। जब फ़ाइल खोली जाती है तो यह डेटा मर्ज हो जाता है, जिसमें डीडी सूचना को लेबल सूचना पर प्राथमिकता दी जाती है और डीसीबी सूचना को दोनों पर प्राथमिकता दी जाती है। अद्यतन विवरण फिर डेटासेट लेबल पर वापस लिखा जाता है। यदि गलत डीसीबी सूचना प्रदान की जाती है तो इससे अनपेक्षित परिणाम हो सकते हैं।<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>


स्टेटमेंट का उपयोग डेटा को संदर्भित करने के लिए किया जाता है। यह कथन किसी प्रोग्राम के डेटासेट के आंतरिक विवरण को बाहरी उपकरणों पर डेटा से जोड़ता है: डिस्क, टेप, कार्ड, प्रिंटर इत्यादि। डीडी उपकरण प्रकार (उदाहरण के लिए '181', '2400-5',') जैसी जानकारी प्रदान कर सकता है। टेप'), टेप या डिस्क के लिए एक [[वॉल्यूम (कंप्यूटिंग)]] संख्या, और डेटा फ़ाइल का विवरण, जिसे कहा जाता है <code>DCB</code> प्रोग्राम में [[डेटा नियंत्रण ब्लॉक]] (डीसीबी) के बाद उपमापदण्ड का उपयोग फ़ाइल की पहचान करने के लिए किया जाता है।
ऊपर सूचीबद्ध मापदंडों और विभिन्न अभिगम विधियों और उपकरणों के लिए विशिष्ट सूचना के कारण डीडी विवरण सबसे जटिल जेसीएल विवरण है। एक आईबीएम संदर्भ में डीडी विवरण का मैनुअल विवरण 130 से अधिक पृष्ठों का है - जो कि जेओबी और ईएक्सईसी विवरण के संयुक्त विवरण से दोगुने से भी अधिक है।<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>


फ़ाइल का वर्णन करने वाली जानकारी तीन स्रोतों से आ सकती है: डीडी कार्ड की जानकारी, टेप या डिस्क पर संग्रहीत मौजूदा फ़ाइल के लिए डेटासेट लेबल जानकारी, और प्रोग्राम में कोडित डीसीबी मैक्रो। जब फ़ाइल खोली जाती है तो यह डेटा मर्ज हो जाता है, जिसमें डीडी जानकारी को लेबल जानकारी पर प्राथमिकता दी जाती है, और डीसीबी जानकारी को दोनों पर प्राथमिकता दी जाती है। अद्यतन विवरण फिर डेटासेट लेबल पर वापस लिखा जाता है। यदि गलत डीसीबी जानकारी प्रदान की जाती है तो इससे अनपेक्षित परिणाम हो सकते हैं।<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>
डीडी स्टेटमेंट इनलाइन डेटा को कार्य स्ट्रीम में इंजेक्ट करने की अनुमति देता है। यह IDCAMS, SORT इत्यादि जैसी उपयोगिताओं को नियंत्रण जानकारी प्रदान करने के साथ-साथ कार्यक्रमों को इनपुट डेटा प्रदान करने के लिए उपयोगी है।


===उपकरण स्वतंत्रता===
===उपकरण स्वतंत्रता===
शुरुआत से ही, संचालन प्रणाली के ओएस परिवार के लिए जेसीएल ने उच्च स्तर की उपकरण स्वतंत्रता की पेशकश की। यहां तक ​​कि नई फाइलों के लिए भी जिन्हें काम खत्म होने के बाद रखा जाना था, कोई भी उपकरण प्रकार को सामान्य शब्दों में निर्दिष्ट कर सकता है, उदाहरण के लिए, <code>UNIT=DISK</code>, <code>UNIT=TAPE</code>, या <code>UNIT=SYSSQ</code> (टेप या डिस्क). बेशक, अगर यह मायने रखता है तो कोई मॉडल नंबर या यहां तक ​​कि एक विशिष्ट उपकरण पता भी निर्दिष्ट कर सकता है।<ref>McQuillen, ''System/360–370 Assembler Language'', pp. 297, 406–407.</ref>
प्रारंभ से ही, संचालन प्रणाली के ओएस वर्ग के लिए जेसीएल ने उच्च स्तर की उपकरण स्वतंत्रता की प्रस्तुति की। यहां तक ​​कि नई फाइलों के लिए भी, जिन्हें कार्य समाप्त होने के बाद रखा जाना था, कोई भी उपकरण प्रकार को सामान्य शब्दों में निर्दिष्ट कर सकता है, उदाहरण के लिए, <code>UNIT=DISK</code>, <code>UNIT=TAPE</code>, या <code>UNIT=एसवाईएसSQ</code> (टेप या डिस्क) है। अवश्य ही, यदि यह महत्व रखता है तो कोई मॉडल संख्या या यहां तक ​​कि एक विशिष्ट उपकरण पता भी निर्दिष्ट कर सकता है।<ref>McQuillen, ''System/360–370 Assembler Language'', pp. 297, 406–407.</ref>






==={{anchor}}प्रक्रियाएँ===
==={{anchor}}प्रक्रियाएँ===
प्रक्रियाएं एक या अधिक ''EXEC PGM='' और ''DD'' कथनों को समूहीकृत करने और फिर उन्हें ''EXEC PROC=''procname -या- बस EXEC procname के साथ लागू करने की अनुमति देती हैं। <ref>the default for the EXEC statement is PROC=</ref>
प्रक्रियाएं एक या अधिक ''ईएक्सईसी पीजीएम='' और ''डीडी'' विवरणों को समूहीकृत करने और फिर उन्हें ''ईएक्सईसी पीआरओसी=''प्रोक नाम या केवल ''पीआरओसी'' प्रोक नाम के साथ अनुप्रयुक्त करने की अनुमति देता हैं। <ref>the default for the EXEC statement is PROC=</ref>
प्रोसीजर लाइब्रेरी नामक सुविधा पूर्व-भंडारण प्रक्रियाओं की अनुमति देती है।


====PROC और PEND====
प्रक्रियाएं पुस्तकालय नामक सुविधा पूर्व-भंडारण प्रक्रियाओं की अनुमति देता है।
के साथ प्रक्रिया को समाप्त करके प्रक्रियाओं को कार्य स्ट्रीम में भी सम्मिलित किया जा सकता है <code>// PEND</code> कथन, फिर इसे नाम से पुकारना वैसा ही था जैसे कि यह एक प्रक्रिया पुस्तकालय में हो।


उदाहरण के लिए:
====पीआरओसी और पीईएनडी====
<सिंटैक्सहाइलाइट लैंग= जेसीएल हाइलाइट= 1,6 >
प्रक्रियाओं को <code>// PEND</code> विवरण के साथ प्रक्रिया को समाप्त करके कार्य धारा में भी सम्मिलित किया जा सकता है , मिल किया जा सकता है, फिर इसे नाम से अनुप्रयुक्त किया जा सकता है जैसे कि यह एक प्रक्रिया पुस्तकालय में था।
//संप्रिंट प्रोसी
//प्रिंट EXEC PGM=IEBGENER
//SYSUT1 DD DSN=CEO.FILES.DAYEND.RPT24A,DISP=SHR
//SYSUT2 DD SYSOUT=A
//सिसिन डीडी डमी
// पेंड
// कार्यकारी सारांश
</वाक्यविन्यास हाइलाइट>


===मापदण्डीकृत प्रक्रियाएं===
===मापदण्डीकृत प्रक्रियाएं===
ओएस जेसीएल प्रक्रियाओं को प्रारंभ से ही मानकीकृत किया गया था, जिससे वे [[मैक्रो असेंबलर]] या यहां तक ​​कि सरल [[सबरूटीन]] की तरह बन गए और इस प्रकार विभिन्न स्थितियों में उनके [[कोड का पुन: उपयोग]] बढ़ गया।<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 198:
....
....
</syntaxhighlight>
</syntaxhighlight>
इस उदाहरण में, एम्परसेंड से प्रारंभ होने वाले सभी मान<code>&</code>वे मापदण्ड हैं जो तब निर्दिष्ट किए जाएंगे जब कोई नौकरी अनुरोध करती है कि प्रक्रिया का उपयोग किया जाए। PROC कथन, प्रक्रिया को एक नाम देने के अलावा, क्रमादेशक को प्रत्येक मापदण्ड के लिए डिफ़ॉल्ट मान निर्दिष्ट करने की अनुमति देता है। इसलिए कोई इस उदाहरण में एक प्रक्रिया का उपयोग करके कई अलग-अलग आकार और लेआउट की नई फ़ाइलें बना सकता है। उदाहरण के लिए:
इस उदाहरण में, एम्परसेंड <code>&</code> से प्रारंभ होने वाले सभी मान मापदण्ड हैं जो तब निर्दिष्ट किए जाएंगे जब कोई कार्य अनुरोध करती है कि प्रक्रिया का उपयोग किया जाए। पीआरओसी विवरण, प्रक्रिया को एक नाम देने के अतिरिक्त, प्रोग्रामर को प्रत्येक मापदण्ड के लिए व्यतिक्रम मान निर्दिष्ट करने की अनुमति देता है। इसलिए कोई इस उदाहरण में एक प्रक्रिया का उपयोग करके कई अलग-अलग आकार और प्रदर्शन की नई फ़ाइलें बना सकता है। उदाहरण के लिए:
<syntaxhighlight lang="jcl">
<syntaxhighlight lang="jcl">
//JOB01  JOB ..........
//JOB01  JOB ..........
Line 251: Line 209:


===संदर्भ===
===संदर्भ===
बहु-चरणीय नौकरियों में, बाद के चरण में किसी फ़ाइल को पूर्ण रूप से निर्दिष्ट करने के बजाय रेफरबैक का उपयोग किया जा सकता है, जिसे पहले चरण में पहले ही निर्दिष्ट किया जा चुका है। उदाहरण के लिए:
बहु-चरणीय कार्यों में, बाद के चरण में किसी फ़ाइल को पूर्ण रूप से निर्दिष्ट करने के बजाय रेफरबैक का उपयोग किया जा सकता है, जिसे पहले चरण में पहले ही निर्दिष्ट किया जा चुका है। उदाहरण के लिए:
<syntaxhighlight lang="jcl">
<syntaxhighlight lang="jcl">
//MYPROC ................
//MYPROC ................
Line 261: Line 219:
//INPUT01 DD DSN=*.MYPR01.NEWFILE
//INPUT01 DD DSN=*.MYPR01.NEWFILE
</syntaxhighlight>
</syntaxhighlight>
यहाँ, <code>MYPR02</code> के रूप में पहचानी गई फ़ाइल का उपयोग करता है <code>NEWFILE</code> चरण में <code>MYPR01</code> (<code>DSN</code> मतलब डेटासेट नाम और फ़ाइल का नाम निर्दिष्ट करता है; एक डीएसएन 44 अक्षरों से अधिक नहीं हो सकता<ref>{{cite web
यहाँ, <code>MYPR02</code> चरण <code>MYPR01</code> में <code>NEWFILE</code> के रूप में पहचानी गई फ़ाइल का उपयोग करता है (<code>DSN</code> का अर्थ है "डेटासेट नाम" और फ़ाइल का नाम निर्दिष्ट करता है; एक डीएसएन 44 वर्णों से अधिक नहीं हो सकता है)।<ref>{{cite web
   |url=https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.idad400/name.htm
   |url=https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.idad400/name.htm
   |title=Data set names
   |title=Data set names
   |website=[[IBM]]
   |website=[[IBM]]
  |date=27 March 2014
  |date=27 March 2014
  |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 233:
//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>STEP01</code> द्वारा प्रयुक्त प्रक्रिया के चरण <code>MYPR01</code> में <code>NEWFILE</code> के रूप में पहचानी गई फ़ाइल का उपयोग करें"। प्रक्रिया के नाम के बजाय उस चरण के नाम का उपयोग करना, जिसे प्रक्रिया कहा जाता है, एक प्रोग्रामर को एक ही कार्य में एक ही प्रक्रिया को कई बार उपयोग करने की अनुमति देता है, बिना किसी भ्रम के कि रेफरबैक में प्रक्रिया का कौन सा उदाहरण उपयोग किया जाता है।


===टिप्पणियाँ===
===टिप्पणियाँ===
जेसीएल फ़ाइलें लंबी और जटिल हो सकती हैं, और भाषा को पढ़ना आसान नहीं है। ओएस जेसीएल क्रमादेशक्स को दो प्रकार की व्याख्यात्मक टिप्पणी सम्मिलित करने की अनुमति देता है:
जेसीएल फ़ाइलें लंबी और जटिल हो सकती हैं और भाषा को पढ़ना सरल नहीं है। ओएस जेसीएल प्रोग्रामर को दो प्रकार की व्याख्यात्मक टिप्पणी सम्मिलित करने की अनुमति देता है:
*जेसीएल कथन के समान ही। उन्हें एक निरंतरता चरित्र (पारंपरिक रूप से) रखकर बढ़ाया जा सकता है<code>X</code>) कॉलम 72 में, उसके बाद<code>// </code>अगली पंक्ति के कॉलम 1-3 में।
*जेसीएल विवरण के समान ही। उन्हें स्तम्भ 72 में एक निरंतरता वर्ण (पारंपरिक रूप से <code>X</code>) , उसके बाद अगली पंक्ति के स्तम्भ 1-3 में <code>// </code> रखकर बढ़ाया जा सकता है।
*जिन पंक्तियों में केवल टिप्पणी होती है, उनका उपयोग अक्सर स्थानीय विवरणों के बजाय जेसीएल की समग्र संरचना के बारे में प्रमुख बिंदुओं को समझाने के लिए किया जाता है। केवल-टिप्पणी पंक्तियों का उपयोग लंबी, जटिल जेसीएल फ़ाइलों को अनुभागों में विभाजित करने के लिए भी किया जाता है।
*जिन पंक्तियों में केवल टिप्पणी होती है, उनका उपयोग प्रायः स्थानीय विवरणों के बजाय जेसीएल की समग्र संरचना के विषय में प्रमुख बिंदुओं को समझाने के लिए किया जाता है। केवल-टिप्पणी पंक्तियों का उपयोग लंबी, जटिल जेसीएल फ़ाइलों को अनुभागों में विभाजित करने के लिए भी किया जाता है।
<syntaxhighlight lang="jcl">
<syntaxhighlight lang="jcl">
//MYJOB JOB ..........
//MYJOB JOB ..........
Line 293: Line 251:


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


Line 300: Line 258:
//        DD DSN=SUESFILE,DISP=SHR
//        DD DSN=SUESFILE,DISP=SHR
</syntaxhighlight>
</syntaxhighlight>
दूसरे और तीसरे कथन का नाम फ़ील्ड में कोई मूल्य नहीं है, इसलिए ओएस उन्हें संयोजन के रूप में मानता है। फ़ाइलें समान मूल प्रकार (लगभग हमेशा अनुक्रमिक) की होनी चाहिए, और उनकी रिकॉर्ड लंबाई समान होनी चाहिए, हालांकि ब्लॉक की लंबाई समान नहीं होनी चाहिए।
दूसरे और तीसरे विवरण का नाम क्षेत्र में कोई मान नहीं है, इसलिए ओएस उन्हें संयोजन के रूप में मानता है। फ़ाइलें समान मूल प्रकार (लगभग सदैव अनुक्रमिक) की होनी चाहिए और उनकी अभिलेख लंबाई समान होनी चाहिए, हालांकि खंड की लंबाई समान नहीं होनी चाहिए।


ओएस के शुरुआती संस्करणों में (निश्चित रूप से ओएस/360 R21.8 से पहले) ब्लॉक की लंबाई घटते क्रम में होनी चाहिए, या उपयोगकर्ता को प्रत्येक इंस्टेंस का निरीक्षण करना होगा और नामांकित DD स्टेटमेंट में पाई गई अधिकतम ब्लॉक लंबाई को जोड़ना होगा, उदाहरण के लिए ,
ओएस के प्रारंभिक संस्करणों में (निश्चित रूप से ओएस/360 आर21.8 से पहले) खंड की लंबाई घटते क्रम में होनी चाहिए, या उपयोगकर्ता को प्रत्येक दृष्टांत का निरीक्षण करना होगा और नामांकित डीडी विवरणों में पाई गई अधिकतम खंड लंबाई को जोड़ना होगा, उदाहरण के लिए ,
<syntaxhighlight lang="jcl">
<syntaxhighlight lang="jcl">


Line 309: Line 267:
//        DD DSN=SUESFILE,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)
</syntaxhighlight>
</syntaxhighlight>
ओएस के बाद के संस्करणों में (निश्चित रूप से उपयुक्त चयन योग्य इकाइयों के साथ ओएस/एमवीएस आर3.7 के बाद) ओएस स्वयं, आवंटन के दौरान, प्रत्येक उदाहरण का एक संयोजन में निरीक्षण करेगा और जो अधिकतम ब्लॉक लंबाई पाई गई थी उसे प्रतिस्थापित कर देगा।
ओएस के बाद के संस्करणों में (निश्चित रूप से उपयुक्त चयन योग्य इकाइयों के साथ ओएस/एमवीएस आर3.7 के बाद) ओएस स्वयं, आवंटन के पर्यन्त, प्रत्येक उदाहरण का एक संयोजन में निरीक्षण करेगा और जो अधिकतम खंड लंबाई पाई गई थी उसे प्रतिस्थापित करेगा।


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


Line 318: Line 276:
//        DD DSN=SUESFILE,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)
</syntaxhighlight>
</syntaxhighlight>
इस फ़ॉलबैक का उद्देश्य यह सुनिश्चित करना था कि एक्सेस विधि एक इनपुट बफ़र सेट आवंटित करेगी जो किसी भी और सभी निर्दिष्ट डेटासेट को समायोजित करने के लिए पर्याप्त बड़ा था।
इस फ़ॉलबैक का उद्देश्य यह सुनिश्चित करना था कि अभिगम विधि एक इनपुट बफ़र समूह आवंटित करेगी जो किसी भी और सभी निर्दिष्ट डेटासेट को समायोजित करने के लिए पर्याप्त बड़ा था।


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


ओएस जेसीएल रिटर्न कोड को संदर्भित करता है <code>COND</code> (स्थिति कोड), और इसका उपयोग यह तय करने के लिए कर सकता है कि बाद के चरणों को चलाना है या नहीं। हालाँकि, अधिकांश आधुनिक प्रोग्रामिंग भाषाओं के विपरीत, ओएस जेसीएल में सशर्त चरणों को निष्पादित नहीं किया जाता है यदि निर्दिष्ट स्थिति सत्य है - इस प्रकार स्मरक को जन्म देता है, यदि यह सत्य है, तो [बिना कोड चलाए] आगे बढ़ें। मामले को और अधिक जटिल बनाने के लिए, शर्त को केवल उस चरण के बाद ही निर्दिष्ट किया जा सकता है जिसका वह संदर्भ देता है। उदाहरण के लिए:
ओएस जेसीएल पुनरावृत्ति कूट को <code>COND</code> (स्थिति कूट) संदर्भित करता है और इसका उपयोग यह तय करने के लिए कर सकता है कि बाद के चरणों को चलाना है या नहीं। हालाँकि, अधिकांश आधुनिक प्रोग्रामिंग भाषाओं के विपरीत, ओएस जेसीएल में सशर्त चरणों को निष्पादित नहीं किया जाता है यदि निर्दिष्ट स्थिति सत्य है - इस प्रकार स्मरक की उत्पत्ति करता है, यदि यह सत्य है, तो बिना कूट चलाए आगे बढ़ें। स्थिति को और अधिक जटिल बनाने के लिए, प्रतिबंध को केवल उस चरण के बाद ही निर्दिष्ट किया जा सकता है जिसका वह संदर्भ देता है। उदाहरण के लिए:
<syntaxhighlight lang="jcl">
<syntaxhighlight lang="jcl">
//MYJOB JOB ...........
//MYJOB JOB ...........
Line 342: Line 300:
....
....
</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
  अगर अंत
  यदि अंत
  यदि STEP01 असामान्य रूप से समाप्त हो गया तो
  यदि STEP01 असामान्य रूप से समाप्त हो गया तो
    STEP04 चलाएँ
    रन STEP04
  अगर अंत
  यदि अंत
  यदि STEP03 असामान्य रूप से समाप्त हो गया तो
  यदि STEP03 असामान्य रूप से समाप्त हो गया तो
    STEP05 चलाएँ
    रन STEP05
  अन्य
  अन्य
    STEP05 चलाएँ
    रन STEP05  
  अगर अंत
  यदि अंत
 
ध्यान दें कि <code>COND</code> विवरणों वाले चरणों को पीछे की ओर पढ़कर कोई भी उन्हें काफी सरलता से समझ सकता है। यह तार्किक स्थानान्तरण का एक उदाहरण है। हालाँकि, बाद में आईबीएम ने जेसीएल में आईएफ स्थिति प्रस्तुत की, जिससे <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>


युक्त चरणों को पढ़कर ध्यान दें <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>




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


===उपयोग की कठिनाई===
===उपयोग में कठिनाई===
ओएस जेसीएल निर्विवाद रूप से जटिल है<ref name="asm-jcl"/>और इसे उपयोक्ता शत्रुतापूर्ण बताया गया है।<ref>{{cite book | title=NetView: IBM's Network Management Product | first=Alfred | last=Charley | publisher=Van Nostrand Reinhold | location=New York | date=1993 | page=[https://books.google.com/books?id=TPVSAAAAMAAJ&q=jcl+%22user+hostile%22 93] | isbn=0-442-01407-4}}</ref><ref>{{cite web  |author=Mathew W. Blode
ओएस जेसीएल निर्विवाद रूप से जटिल है<ref name="asm-jcl"/>और इसे "उपयोक्ता शत्रुतापूर्ण" के रूप में वर्णित किया गया है।<ref>{{cite book | title=NetView: IBM's Network Management Product | first=Alfred | last=Charley | publisher=Van Nostrand Reinhold | location=New York | date=1993 | page=[https://books.google.com/books?id=TPVSAAAAMAAJ&q=jcl+%22user+hostile%22 93] | isbn=0-442-01407-4}}</ref><ref>{{cite web  |author=Mathew W. Blode
   |url=https://hn.matthewblode.com/item/22785474
   |url=https://hn.matthewblode.com/item/22785474
   |quote=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...).
   |quote=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...).
   |date=April 6, 2020  |access-date=May 7, 2020
   |date=April 6, 2020  |access-date=May 7, 2020
   |title=Newly unemployed New Yorkers are being frustrated by 1970s-era technology(nytimes.com)}}</ref> जैसा कि जेसीएल पर एक निर्देशात्मक पुस्तक में पूछा गया है, जब कार्य नियंत्रण भाषा की बात आती है तो परिष्कृत क्रमादेशक भी झिझकते क्यों हैं?<ref name="jcl-self"/>  पुस्तक में कहा गया है कि कई क्रमादेशक या तो वास्तव में यह समझे बिना कि उन्होंने क्या किया, नियंत्रण कार्ड की नकल की, या प्रचलित अफवाहों पर विश्वास किया कि जेसीएल भयानक था, और केवल 'डाई-हार्ड' परिकलक-प्रकारों ने ही इसे समझा और जेसीएल के बयानों का पता लगाने का काम सौंपा। किसी और को।<ref name="jcl-self">Ashley and Fernandez, ''Job Control Language'', pp. vii–viii, back cover.</ref> ऐसा रवैया प्रोग्रामिंग भाषा की पाठ्यपुस्तकों में पाया जा सकता है, जो भाषा पर ध्यान केंद्रित करना पसंद करते हैं न कि इसमें प्रोग्राम कैसे चलाए जाते हैं। जैसा कि एक [[फोरट्रान IV]] पाठ्यपुस्तक ने [[WATFOR]] कंपाइलर से संभावित त्रुटि संदेशों को सूचीबद्ध करते समय कहा था: क्या आप इतने मूर्ख हैं कि अपने स्वयं के 'डीडी' प्रणाली नियंत्रण कार्ड लिखने का प्रयास कर रहे हैं? तुरंत बंद करो और रुको; सहायता के लिए दौड़ें, चलें नहीं।<ref>{{cite book | title=Introduction to FORTRAN IV Programming: Using the WATFOR/WATFIV Compilers | first=John M. | last=Blatt | publisher=Goodyear Publishing Company | location=Pacific Palisades, California | date=1971 | page=276 | isbn=0-87620-440-X}}</ref>
   |title=Newly unemployed New Yorkers are being frustrated by 1970s-era technology(nytimes.com)}}</ref> जैसा कि जेसीएल पर एक निर्देशात्मक पुस्तक में पूछा गया है, जब कार्य नियंत्रण भाषा की बात आती है तो परिष्कृत प्रोग्रामर भी संकोच क्यों करते हैं?<ref name="jcl-self"/>  कि जेसीएल भयानक था, और केवल 'डाई-हार्ड' परिकलक-प्रकारों ने ही इसे समझा" और जेसीएल के विवरणों का पता लगाने का कार्य किसी और को सौंप दिया।<ref name="jcl-self">Ashley and Fernandez, ''Job Control Language'', pp. vii–viii, back cover.</ref> ऐसा रवैया प्रोग्रामिंग भाषाओं के पाठ्यपुस्तकों में पाया जा सकता है, जो भाषा पर ध्यान केंद्रित करना पसंद करते हैं न कि इसमें प्रोग्राम कैसे चलाए जाते हैं। जैसा कि एक [[फोरट्रान IV|फोरट्रान चतुर्थ]] पाठ्यपुस्तक ने [[WATFOR|डब्ल्यूएटीएफओआर]] संकलनकर्ता से संभावित त्रुटि संदेशों को सूचीबद्ध करते समय कहा था: क्या आप इतने बुध्दिहीन हैं कि अपने स्वयं के 'डीडी' प्रणाली नियंत्रण कार्ड लिखने का प्रयास कर रहे हैं? तुरंत बंद करो और रुको; सहायता के लिए दौड़ें, चलें नहीं।<ref>{{cite book | title=Introduction to FORTRAN IV Programming: Using the WATFOR/WATFIV Compilers | first=John M. | last=Blatt | publisher=Goodyear Publishing Company | location=Pacific Palisades, California | date=1971 | page=276 | isbn=0-87620-440-X}}</ref>
फिर भी, जेसीएल में गई कुछ पुस्तकों में इस बात पर विस्तार से जोर दिया गया है कि एक बार जब इसे कम से कम कुछ हद तक कुशल डिग्री तक सीख लिया जाता है, तो व्यक्ति को इंस्टॉलेशन-वाइड डिफ़ॉल्ट से मुक्ति मिल जाती है और आईबीएम प्रणाली आपके कार्यभार को कैसे संसाधित करता है, इस पर बेहतर नियंत्रण मिलता है।<ref name="jcl-self"/><ref name="asm-jcl"/>  एक अन्य पुस्तक ने जटिलता पर टिप्पणी की परन्तु कहा, हिम्मत रखो। [पिछले अध्याय] से आपको जो जेसीएल क्षमता प्राप्त होगी वह वह सब है जिसकी अधिकांश क्रमादेशक को कभी आवश्यकता होगी।<ref name="asm-jcl">McQuillen, ''System/360–370 Assembler Language'', pp. 406–407.</ref>
 
फिर भी, जेसीएल में गई कुछ पुस्तकों में इस बात पर विस्तार से जोर दिया गया है कि एक बार जब इसे कम-से-कम कुछ हद तक कुशल स्तर तक सीख लिया जाता है, तो व्यक्ति को अधिष्ठापन-व्यापक व्यतिक्रम से मुक्ति मिल जाती है और आईबीएम प्रणाली आपके कार्यभार को कैसे संसाधित करता है, इस पर उन्नत नियंत्रण मिलता है।<ref name="jcl-self" /><ref name="asm-jcl" />  एक अन्य पुस्तक ने जटिलता पर टिप्पणी की परन्तु कहा, हिम्मत रखो। पिछले अध्याय से आपको जो जेसीएल क्षमता प्राप्त होगी वह सब है जिसकी अधिकांश प्रोग्रामर को कभी आवश्यकता होगी।<ref name="asm-jcl">McQuillen, ''System/360–370 Assembler Language'', pp. 406–407.</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>
आईबीएम मेनफ्रेम प्रणाली पर कार्य प्रवेश नियंत्रण भाषा या जेईसीएल संकेत भाषा नियंत्रण विवरण का समूह है जो [[ अटेरन |स्पूलन]] उप-प्रणाली के लिए सूचना प्रदान करता है - जेड/ओएस पर जेईएस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>
जेईसीएल [[ कार्य नियंत्रण भाषा ]] (जेसीएल) से अलग है, जो संचालन प्रणाली को निर्देश देता है कि कार्य कैसे चलाया जाए।
 
जेईसीएल [[ कार्य नियंत्रण भाषा |कार्य नियंत्रण भाषा]] (JCL) से भिन्न है, जो संचालन प्रणाली को निर्देश देता है कि कार्य कैसे चलाया जाए।


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


===ओएस/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 दूरस्थ कार्य प्रवेश (प्रोग्राम संख्या 360एस-आरसी-536) के लिए कार्य प्रवेश नियंत्रण भाषा के प्रारंभिक संस्करण में इनपुट अभिलेख के स्तम्भ 1-2 में पहचानकर्ता <code>..</code> का उपयोग किया गया था और इसमें  एकल नियंत्रण विवरण <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>




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


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


====जेईएस2 जेईसीएल====
====जेईएस2 जेईसीएल====
निम्नलिखित JES2 जेईसीएल कथनों का उपयोग z/ओएस 1.2.0 में किया जाता है।<ref>{{cite web|last=IBM Corporation|title=Job Entry Subsystem 2 (JES2) Control Statements|url=http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/iea2b510/1.1.2?SHELF=EZ2ZO103&DT=20010626133938&CASE=|work=z/OS V1R2.0 MVS JCL|access-date=February 25, 2013|archive-date=October 18, 2015|archive-url=https://web.archive.org/web/20151018201305/http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/iea2b510/1.1.2?SHELF=EZ2ZO103&DT=20010626133938&CASE=|url-status=dead}}</ref>
निम्नलिखित जेईएस2 जेईसीएल विवरणों का उपयोग जेड/ओएस 1.2.0 में किया जाता है।<ref>{{cite web|last=IBM Corporation|title=Job Entry Subsystem 2 (JES2) Control Statements|url=http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/iea2b510/1.1.2?SHELF=EZ2ZO103&DT=20010626133938&CASE=|work=z/OS V1R2.0 MVS JCL|access-date=February 25, 2013|archive-date=October 18, 2015|archive-url=https://web.archive.org/web/20151018201305/http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/iea2b510/1.1.2?SHELF=EZ2ZO103&DT=20010626133938&CASE=|url-status=dead}}</ref>


{| class="wikitable"
{| class="wikitable"
|-
|-
! JECL statement !! Function !! Example
! जेईसीएल विवरण !! कार्य !! Example
|-
|-
| <code>/*$''command''</code> || Enters an operator (console) command || <code>/*$S PRINTER3</code><ref>other examples can be viewed at [[Houston Automatic Spooling Priority#Operator Commands]]</ref>
| <code>/*$''command''</code> || एक प्रचालक (कंसोल) संकेत सम्मिलित करता है। || <code>/*$S PRINTER3</code><ref>other examples can be viewed at [[Houston Automatic Spooling Priority#Operator Commands]]</ref>
|-
|-
| <code>/*JOBPARM</code> || Specifies values for job-related parameters || <code>/*JOBPARM TIME=10</code>
| <code>/*JOBPARM</code> || कार्य से संबंधित मापदंडों के लिए मान निर्दिष्ट करता है। || <code>/*JOBPARM TIME=10</code>
|-
|-
| <code>/*MESSAGE</code> || Sends a message to the operator console || <code>/*MESSAGE CALL JOE AT HOME IF JOB ABENDS</code>
| <code>/*MESSAGE</code> || प्रचालक कंसोल को एक संदेश भेजता है। || <code>/*MESSAGE CALL JOE AT HOME IF JOB ABENDS</code>
|-
|-
| <code>/*NETACCT</code> || Specifies account number for network job || <code>/*NETACCT 12345</code>
| <code>/*NETACCT</code> || नेटवर्क कार्य के लिए खाता संख्या निर्दिष्ट करता है। || <code>/*NETACCT 12345</code>
|-
|-
| <code>/*NOTIFY</code> || Specifies destination for notification messages || <code>/*NOTIFY SAM</code>
| <code>/*NOTIFY</code> || अधिसूचना संदेशों के लिए गंतव्य निर्दिष्ट करता है। || <code>/*NOTIFY SAM</code>
|-
|-
| <code>/*OUTPUT</code> || Specifies ''SYSOUT'' dataset options || <code>/*OUTPUT FORMS=BILL</code>
| <code>/*OUTPUT</code> || ''एसवाईएसओयूटी'' डेटासेट विकल्प निर्दिष्ट करता है। || <code>/*OUTPUT FORMS=BILL</code>
|-
|-
| <code>/*PRIORITY</code> || Sets job selection priority || <code>/*PRIORITY 15</code>
| <code>/*PRIORITY</code> || कार्य चयन प्राथमिकता निर्धारित करता है। || <code>/*PRIORITY 15</code>
|-
|-
| <code>/*ROUTE</code> || Specifies output destination or execution node || <code>/*ROUTE PRT RMT5</code>
| <code>/*ROUTE</code> || आउटपुट गंतव्य या निष्पादन नोड निर्दिष्ट करता है। || <code>/*ROUTE PRT RMT5</code>
|-
|-
| <code>/*SETUP</code> || Requests volume mounting or other offline operation || <code>/*SETUP TAPE01,TAPE02</code>
| <code>/*SETUP</code> || अंक बढ़ाने या अन्य ऑफ़लाइन संचालन का अनुरोध करता है। || <code>/*SETUP TAPE01,TAPE02</code>
|-
|-
| <code>/*SIGNOFF</code> || Ends remote session || <code>/*SIGNOFF</code>
| <code>/*SIGNOFF</code> || दूरस्थ सत्र समाप्त होता है। || <code>/*SIGNOFF</code>
|-
|-
| <code>/*SIGNON</code> || Begins remote session || <code>/*SIGNON REMOTE5 ''password''</code>
| <code>/*SIGNON</code> || दूरस्थ सत्र प्रारंभ होता है। || <code>/*SIGNON REMOTE5 ''password''</code>
|-
|-
| <code>/*XEQ</code> || Specifies execution node || <code>/*XEQ DENVER</code>
| <code>/*XEQ</code> || निष्पादन नोड निर्दिष्ट करता है। || <code>/*XEQ DENVER</code>
|-
|-
| <code>/*XMIT</code> || Indicates job or dataset to be transmitted to another network node || <code>/*XMIT NYC</code>
| <code>/*XMIT</code> || कार्य या डेटासेट को किसी अन्य नेटवर्क नोड पर प्रेषित करने का संकेत देता है। || <code>/*XMIT NYC</code>
|}
|}




====जेईएस3 जेईसीएल====
====जेईएस3 जेईसीएल====
निम्नलिखित JES3 जेईसीएल कथनों का उपयोग z/ओएस 1.2.0 में किया जाता है<ref>{{cite web|last=IBM Corporation|title=Job Entry Subsystem 3 (JES3) Control Statements|url=http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/iea2b510/1.1.2?SHELF=EZ2ZO103&DT=20010626133938&CASE=|work=z/OS V1R2.0 MVS JCL|access-date=February 25, 2013|archive-date=October 18, 2015|archive-url=https://web.archive.org/web/20151018201305/http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/iea2b510/1.1.2?SHELF=EZ2ZO103&DT=20010626133938&CASE=|url-status=dead}}</ref>
निम्नलिखित जेईएस3 जेईसीएल विवरणों का उपयोग जेड/ओएस 1.2.0 में किया जाता है<ref>{{cite web|last=IBM Corporation|title=Job Entry Subsystem 3 (JES3) Control Statements|url=http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/iea2b510/1.1.2?SHELF=EZ2ZO103&DT=20010626133938&CASE=|work=z/OS V1R2.0 MVS JCL|access-date=February 25, 2013|archive-date=October 18, 2015|archive-url=https://web.archive.org/web/20151018201305/http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/iea2b510/1.1.2?SHELF=EZ2ZO103&DT=20010626133938&CASE=|url-status=dead}}</ref>


{| class="wikitable"
{| class="wikitable"
|-
|-
! JECL statement !! Function !! Example
! जेईसीएल विवरण !! कार्य !! उदाहरण
|-
|-
| <code>//**''command''</code> || Enters a JES3 operator (console) command ||
| <code>//**''command''</code> || एक जेईएस3 प्रचालक (कंसोल) संकेत दर्ज करता है। ||
|-
|-
| <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>एसवाईएसOUT</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> || जेईएस3 निर्भर कार्य नियंत्रण का उपयोग करके कार्यों के मध्य संबंधों की पहचान करता है। ||
|-
|-
| <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===
===जेड/वीएसई===
वीएसई के लिए जेईसीएल स्टेटमेंट 'से प्रारंभ होते हैं<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"
|-
|-
! 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
! जेईसीएल विवरण<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> !! कार्य !! उदाहरण
|-
|-
| <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> || किसी कार्य के अंत का प्रतीक है। || <code>* $$ EOJ</code>
|-
|-
| <code>* $$ RDR</code> || Inserts a file from a 3540 diskette into the input stream || <code>* $$ RDR SYS005,'fname',2</code>
| <code>* $$ RDR</code> || 3540 डिस्केट से एक फ़ाइल को इनपुट वर्ग में सम्मिलित करता है। || <code>* $$ RDR एसवाईएस005,'fname',2</code>
|-
|-
| <code>* $$ PRT</code> || Specifies characteristics of spooled print files<br> "LST' is a synonym for "PRT" || <code>* $$ PRT FNO=STD,COPY=2</code>
| <code>* $$ PRT</code> || स्पूल्ड मुद्रण फ़ाइलों की विशेषताओं को निर्दिष्ट करता है।
"एलएसटी' "पीआरटी" का पर्यायवाची है।
| <code>* $$ PRT FNO=STD,COPY=2</code>
|-
|-
| <code>* $$ PUN</code> || Specifies characteristics of spooled punch files || <code>* $$&nbsp;PUN&nbsp;DISP=T,TADDR=280</code>
| <code>* $$ PUN</code> || स्पूल्ड पंच फ़ाइलों की विशेषताओं को निर्दिष्ट करता है। || <code>* $$&nbsp;PUN&nbsp;DISP=T,TADDR=280</code>
|-
|-
| <code>* $$ SLI</code> || Inserts data ("book") from source statement library into the input stream|| <code>* $$ SLI A.जेसीएल1</code>
| <code>* $$ SLI</code> || स्रोत विवरण पुस्तकालय से इनपुट वर्ग में डेटा ("पुस्तक") सम्मिलित करता है।|| <code>* $$ SLI A.JCL1</code>
|-
|-
| <code>* $$ DATA</code> || Inserts data from the card reader into a book retrieved from the source statement library|| <code>* $$ DATA INPUT1</code>
| <code>* $$ DATA</code> || कार्ड पाठक से डेटा को स्रोत विवरण पुस्तकालय से प्राप्त पुस्तक में सम्मिलित करता है।|| <code>* $$ DATA INPUT1</code>
|}
|}
उदाहरण:
उदाहरण:
Line 507: Line 472:


==अन्य प्रणाली==
==अन्य प्रणाली==
{{For|Other (non-IBM) Job Control Languages|Job control (computing)}}
{{For|अन्य (गैर-आईबीएम) कार्य नियंत्रण भाषाएँ|कार्य नियंत्रण (अभिकलन)}}


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


== यह भी देखें ==
== यह भी देखें ==
*[[डीडी (यूनिक्स)]], यूनिक्स कार्यक्रम से प्रेरित <code>DD</code>
*[[डीडी (यूनिक्स)]], <code>DD</code> से प्रेरित यूनिक्स प्रोग्राम
* आईबीएम मेनफ्रेम उपयोगिता कार्यक्रम
* आईबीएम मेनफ्रेम उपयोगिता प्रोग्राम
* प्रचय संसाधन
* प्रचय संसाधन
* डेटा सेट (आईबीएम मेनफ्रेम)#जेनरेशन डेटा ग्रुप
* डेटा सेट  


==संदर्भ==
==संदर्भ==
Line 540: Line 504:
श्रेणी:आईबीएम मेनफ्रेम संचालन प्रणाली
श्रेणी:आईबीएम मेनफ्रेम संचालन प्रणाली


 
[[Category:All articles with unsourced statements]]
[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page]]
[[Category:Articles with unsourced statements from October 2012]]
[[Category:CS1 English-language sources (en)]]
[[Category:CS1 errors]]
[[Category:Created On 22/06/2023]]
[[Category:Created On 22/06/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Webarchive template wayback links]]

Latest revision as of 17:49, 19 September 2023

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

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

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

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

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

शब्दावली

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

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

प्रेरणा

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ओएस जेसीएल डॉस जेसीएल
  • //
  • इस विवरण के लिए नाम क्षेत्र, निम्नलिखित // मध्य में कोई स्थान नहीं है। यदि इस विवरण में कोई नाम नहीं है तो कम-से-कम एक रिक्त स्थान तुरंत // के बाद आता है।
  • स्थान (s)
  • विवरण के प्रकार
  • स्थान (s)
  • मापदण्ड, जो विवरण प्रकार के आधार पर भिन्न होते हैं, अल्पविराम द्वारा अलग किए जाते हैं और उनके मध्य कोई स्थान नहीं होता है।
  • // (रिक्त स्थान यदि यह पिछली पंक्ति की निरंतरता है)।
  • इस विवरण के लिए विवरण टाइप करें, मध्य में रिक्त स्थान के साथ // का अनुसरण करें।
  • स्थान (s)
  • संसाधन का नाम
  • स्थान (s)
  • मापदण्ड, जो कथन प्रकार के आधार पर भिन्न होते हैं, अल्पविराम द्वारा अलग किए जाते हैं और उनके मध्य कोई स्थान नहीं होता है। स्थितीय मापदण्ड, उसके बाद संकेत शब्द मापदण्ड है।


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

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

डॉस और ओएस जेसीएल के पास शृंखलाबद्ध इनपुट के प्रारम्भ का संकेत देने के अलग-अलग तरीके हैं, परन्तु दोनों अंतिम शृंखलाबद्ध डेटा कार्ड के बाद कार्ड के स्तम्भ 1 पर /* के साथ शृंखलाबद्ध इनपुट को समाप्त करते हैं। इससे संचालन प्रणाली /* कार्ड के बाद कार्ड में जेसीएल की प्रोसेसिंग पुनः प्रारंभ कर देता है।[12]

  • ओएस जेसीएल: डीडी विवरण का उपयोग शृंखलाबद्ध डेटा, साथ ही डेटा सेट का वर्णन करने के लिए किया जा सकता है। शृंखलाबद्ध डेटा से संबंधित डीडी विवरण में डीडी पहचानकर्ता के बाद एक तारांकन चिह्न (*) होता है, उदाहरण के लिए, //एसवाईएसIN DD * है। जेसीएल विवरण को डीडी डेटा विवरण का उपयोग करके शृंखलाबद्ध डेटा के भाग के रूप में सम्मिलित किया जा सकता है।
डीएलएम नामक एक संकार्य एक सीमांकक निर्दिष्ट करने की अनुमति देता है (व्यतिक्रम /* है)। एक वैकल्पिक सीमांकक निर्दिष्ट करने से जेसीएल को डेटा के रूप में पढ़ा जा सकता है, उदाहरण के लिए पुस्तकालय सदस्य को प्रक्रियाओं की प्रतिलिपि बनाना या आंतरिक पाठक को कार्य प्रस्तुत करना है।

जटिलता

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


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

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

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

ओएस जेसीएल की वाक्य रचना प्रणाली/360 कोडांतरण भाषा में मैक्रो के वाक्य रचना के समान है और इसलिए प्रोग्रामर उस समय परिचित रहे होंगे जब कई प्रोग्राम कोडांतरण भाषा में कोडित किए गए थे।

डॉस जेसीएल

स्थितीय मापदण्ड

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

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

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

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

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

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

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

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

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

ओएस जेसीएल

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

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

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

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

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

प्रत्येक जेसीएल विवरण को पाँच क्षेत्रों में विभाजित किया गया है:[19]

पहचानकर्ता-क्षेत्र नाम-क्षेत्र संचालन-क्षेत्र मापदण्ड-क्षेत्र टिप्पणियाँ-क्षेत्र


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

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

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

डेटा अभिगम (डीडी विवरण)

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

फ़ाइल का वर्णन करने वाली सूचना तीन स्रोतों से आ सकती है: डीडी कार्ड की सूचना, टेप या डिस्क पर संग्रहीत उपस्थित फ़ाइल के लिए डेटासेट लेबल सूचना और प्रोग्राम में कोडित डीसीबी मैक्रो है। जब फ़ाइल खोली जाती है तो यह डेटा मर्ज हो जाता है, जिसमें डीडी सूचना को लेबल सूचना पर प्राथमिकता दी जाती है और डीसीबी सूचना को दोनों पर प्राथमिकता दी जाती है। अद्यतन विवरण फिर डेटासेट लेबल पर वापस लिखा जाता है। यदि गलत डीसीबी सूचना प्रदान की जाती है तो इससे अनपेक्षित परिणाम हो सकते हैं।[21]

ऊपर सूचीबद्ध मापदंडों और विभिन्न अभिगम विधियों और उपकरणों के लिए विशिष्ट सूचना के कारण डीडी विवरण सबसे जटिल जेसीएल विवरण है। एक आईबीएम संदर्भ में डीडी विवरण का मैनुअल विवरण 130 से अधिक पृष्ठों का है - जो कि जेओबी और ईएक्सईसी विवरण के संयुक्त विवरण से दोगुने से भी अधिक है।[22]

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

उपकरण स्वतंत्रता

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


प्रक्रियाएँ

प्रक्रियाएं एक या अधिक ईएक्सईसी पीजीएम= और डीडी विवरणों को समूहीकृत करने और फिर उन्हें ईएक्सईसी पीआरओसी=प्रोक नाम या केवल पीआरओसी प्रोक नाम के साथ अनुप्रयुक्त करने की अनुमति देता हैं। [24]

प्रक्रियाएं पुस्तकालय नामक सुविधा पूर्व-भंडारण प्रक्रियाओं की अनुमति देता है।

पीआरओसी और पीईएनडी

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

मापदण्डीकृत प्रक्रियाएं

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

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

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

//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 चरण MYPR01 में NEWFILE के रूप में पहचानी गई फ़ाइल का उपयोग करता है (DSN का अर्थ है "डेटासेट नाम" और फ़ाइल का नाम निर्दिष्ट करता है; एक डीएसएन 44 वर्णों से अधिक नहीं हो सकता है)।[26]

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

//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 का अर्थ है "इस कार्य के चरण STEP01 द्वारा प्रयुक्त प्रक्रिया के चरण MYPR01 में NEWFILE के रूप में पहचानी गई फ़ाइल का उपयोग करें"। प्रक्रिया के नाम के बजाय उस चरण के नाम का उपयोग करना, जिसे प्रक्रिया कहा जाता है, एक प्रोग्रामर को एक ही कार्य में एक ही प्रक्रिया को कई बार उपयोग करने की अनुमति देता है, बिना किसी भ्रम के कि रेफरबैक में प्रक्रिया का कौन सा उदाहरण उपयोग किया जाता है।

टिप्पणियाँ

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

  • जेसीएल विवरण के समान ही। उन्हें स्तम्भ 72 में एक निरंतरता वर्ण (पारंपरिक रूप से X) , उसके बाद अगली पंक्ति के स्तम्भ 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 आर21.8 से पहले) खंड की लंबाई घटते क्रम में होनी चाहिए, या उपयोगकर्ता को प्रत्येक दृष्टांत का निरीक्षण करना होगा और नामांकित डीडी विवरणों में पाई गई अधिकतम खंड लंबाई को जोड़ना होगा, उदाहरण के लिए ,

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

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

सप्रतिबंध प्रसंस्करण

ओएस आशा करता है कि प्रोग्राम एक पुनरावृत्ति कूट व्यवस्थित करें जो निर्दिष्ट करता है कि प्रोग्राम ने विचार किया था कि यह कितना सफल था। सबसे सामान्य पारंपरिक मान हैं:[27]: 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 विवरणों वाले चरणों को पीछे की ओर पढ़कर कोई भी उन्हें काफी सरलता से समझ सकता है। यह तार्किक स्थानान्तरण का एक उदाहरण है। हालाँकि, बाद में आईबीएम ने जेसीएल में आईएफ स्थिति प्रस्तुत की, जिससे COND मापदण्ड को बनाए रखते हुए प्रोग्रामर के लिए कूटलेखन को कुछ हद तक सरल बना दिया गया (उपस्थित जेसीएल में परिवर्तन करने से बचने के लिए COND parm का उपयोग किया जाता है)।

COND मापदण्ड को JOB विवरण पर भी निर्दिष्ट किया जा सकता है। यदि ऐसा है तो प्रणाली किसी कार्य के प्रत्येक चरण के लिए समान पुनरावृत्ति कूट परीक्षण करता है। यदि कार्य विवरण पुनरावृत्ति कूट परीक्षण संतुष्ट हो जाता है, तो कार्य समाप्त हो जाता है।[28]


उपयोगिताएँ

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

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

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

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

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


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

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

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

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

ओएस/360

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


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

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

जेड/ओएस

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

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

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

जेईसीएल विवरण कार्य Example
/*$command एक प्रचालक (कंसोल) संकेत सम्मिलित करता है। /*$S PRINTER3[36]
/*JOBPARM कार्य से संबंधित मापदंडों के लिए मान निर्दिष्ट करता है। /*JOBPARM TIME=10
/*MESSAGE प्रचालक कंसोल को एक संदेश भेजता है। /*MESSAGE CALL JOE AT HOME IF JOB ABENDS
/*NETACCT नेटवर्क कार्य के लिए खाता संख्या निर्दिष्ट करता है। /*NETACCT 12345
/*NOTIFY अधिसूचना संदेशों के लिए गंतव्य निर्दिष्ट करता है। /*NOTIFY SAM
/*OUTPUT एसवाईएसओयूटी डेटासेट विकल्प निर्दिष्ट करता है। /*OUTPUT FORMS=BILL
/*PRIORITY कार्य चयन प्राथमिकता निर्धारित करता है। /*PRIORITY 15
/*ROUTE आउटपुट गंतव्य या निष्पादन नोड निर्दिष्ट करता है। /*ROUTE PRT RMT5
/*SETUP अंक बढ़ाने या अन्य ऑफ़लाइन संचालन का अनुरोध करता है। /*SETUP TAPE01,TAPE02
/*SIGNOFF दूरस्थ सत्र समाप्त होता है। /*SIGNOFF
/*SIGNON दूरस्थ सत्र प्रारंभ होता है। /*SIGNON REMOTE5 password
/*XEQ निष्पादन नोड निर्दिष्ट करता है। /*XEQ DENVER
/*XMIT कार्य या डेटासेट को किसी अन्य नेटवर्क नोड पर प्रेषित करने का संकेत देता है। /*XMIT NYC


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

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

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


जेड/वीएसई

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

जेईसीएल विवरण[38] कार्य उदाहरण
* $$ CTL एक व्यतिक्रम इनपुट वर्ग स्थापित करता है। * $$ CTL CLASS=A
* $$ JOB किसी कार्य की विशेषताएँ निर्दिष्ट करता है। * $$ JOB JNM=PYRL,PRI=9
* $$ EOJ किसी कार्य के अंत का प्रतीक है। * $$ EOJ
* $$ RDR 3540 डिस्केट से एक फ़ाइल को इनपुट वर्ग में सम्मिलित करता है। * $$ RDR एसवाईएस005,'fname',2
* $$ PRT स्पूल्ड मुद्रण फ़ाइलों की विशेषताओं को निर्दिष्ट करता है।

"एलएसटी' "पीआरटी" का पर्यायवाची है।

* $$ PRT FNO=STD,COPY=2
* $$ PUN स्पूल्ड पंच फ़ाइलों की विशेषताओं को निर्दिष्ट करता है। * $$ PUN DISP=T,TADDR=280
* $$ SLI स्रोत विवरण पुस्तकालय से इनपुट वर्ग में डेटा ("पुस्तक") सम्मिलित करता है। * $$ SLI A.JCL1
* $$ DATA कार्ड पाठक से डेटा को स्रोत विवरण पुस्तकालय से प्राप्त पुस्तक में सम्मिलित करता है। * $$ DATA INPUT1

उदाहरण:

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

[some JCL statements here]

* $$ EOJ


अन्य प्रणाली

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

यह भी देखें

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

संदर्भ

  1. "Every job submitted for execution ... must include JCL statements" -- ibm.com
  2. and many more complex details, such as whether the file is to be retained or deleted, the maximum of disk space to which it can grow, the name of a tape to be pre-mounted
  3. Ashley and Fernandez, Job Control Language, p. 1.
  4. Ashley and Fernandez, Job Control Language, p. 5.
  5. McQuillen, System/360–370 Assembler Language, pp. 385–386.
  6. 6.0 6.1 McQuillen, System/360–370 Assembler Language, pp. 288–289, 400.
  7. Lewis, Cecilia (August 8, 2011). "हमने हाल ही में पीडीएसई के साथ आपके लिए क्या किया है" (PDF). SHARE in Orlando. Retrieved 2023-03-03.
  8. McQuillen, System/360–370 Assembler Language, pp. 22–24.
  9. McQuillen, System/360–370 Assembler Language, pp. 380–382.
  10. Stern and Stern, Structured COBOL Programming, pp. 528–529.
  11. Stern and Stern, Structured COBOL Programming, pp. 529, 531.
  12. Stern and Stern, Structured COBOL Programming, pp. 529, 537.
  13. "IBM Archives: System/360 Model 30". www-03.ibm.com (in English). 2003-01-23. Retrieved 2016-04-25.
  14. "आईबीएम पीसी". Archived from the original on 2006-07-05. Retrieved 2007-10-21.
  15. IBM-compatible computers History of PCs Archived August 14, 2007, at the Wayback Machine
  16. Brown, Gary DeWard (2002). ज़ोस जेसीएल (fifth ed.). John Wiley & Sons. p. 248. ISBN 0471-236357.
  17. Ashley and Fernandez, Job Control Language, pp. 8, 23. There are also two additional statements, PROC and PEND, used to test JCL procedures.
  18. A pre-stored set of "EXEC PGM=" and "DD" JCL commands which could be parameterized
  19. Ashley and Fernandez, Job Control Language, pp. 12–16.
  20. Ashley and Fernandez, Job Control Language, pp. 13–15.
  21. IBM Corporation (August 1978). OS/VS MVS Data Management Services Guide (PDF). Retrieved Oct 17, 2014.
  22. IBM Corporation (June 1971). IBM System/360 Operating System: Job Control Language Reference (PDF). Retrieved June 25, 2019.
  23. McQuillen, System/360–370 Assembler Language, pp. 297, 406–407.
  24. the default for the EXEC statement is PROC=
  25. Ashley and Fernandez, Job Control Language, pp. 129–131.
  26. "Data set names". IBM. 27 March 2014. Data set names must not exceed 44 characters, including all name segments and periods.
  27. 27.0 27.1 Brown, Gary DeWard (2002). ज़ोस जेसीएल. John Wiley & Sons. ISBN 9780471426738. Retrieved 2014-05-05.
  28. IBM Corporation. "JOB और EXEC कथनों पर COND मापदंडों का संबंध". IBM Knowledge Center. Retrieved Feb 21, 2018.
  29. 29.0 29.1 29.2 McQuillen, System/360–370 Assembler Language, pp. 406–407.
  30. Charley, Alfred (1993). NetView: IBM's Network Management Product. New York: Van Nostrand Reinhold. p. 93. ISBN 0-442-01407-4.
  31. 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)
  32. 32.0 32.1 32.2 Ashley and Fernandez, Job Control Language, pp. vii–viii, back cover.
  33. 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.
  34. IBM Corporation (1968). IBM System/360 Operating System Remote Job Entry (PDF). Retrieved 2014-05-05.
  35. 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.
  36. other examples can be viewed at Houston Automatic Spooling Priority#Operator Commands
  37. 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.
  38. IBM Corporation (1974). DOS/VS POWER/VS Installation and Operations (PDF).


स्रोत

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