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

From Vigyanwiki
(Created page with "{{short description|Scripting languages used on IBM mainframe}} {{About|IBM mainframe job control language|open systems|job control (Unix)|general term|job control (computin...")
 
No edit summary
Line 1: Line 1:
{{short description|Scripting languages used on IBM mainframe}}
{{short description|Scripting languages used on IBM mainframe}}
{{About|IBM mainframe job control language|open systems|job control (Unix)|general term|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> इनपुट या आउटपुट के लिए, और कभी-कभी यह भी इंगित करने के लिए कि किन परिस्थितियों में एक कदम छोड़ना है। जेसीएल में पैरामीटर किसी कार्य द्वारा उपयोग किए जाने वाले संसाधनों के साथ-साथ कार्य को किस मशीन पर चलाना चाहिए, इस पर नज़र रखने के लिए लेखांकन जानकारी भी प्रदान कर सकते हैं।
कार्य नियंत्रण भाषा (जेसीएल) [[आईबीएम मेनफ्रेम]] संचालन प्रणाली पर उपयोग की जाने वाली लिपिबद्धन भाषाओं का एक नाम है, जो प्रणाली को [[ प्रचय संसाधन ]] चलाने या उप-प्रणाली प्रारंभ करने के तरीके के विषय में निर्देश देती है।<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> इनपुट या आउटपुट के लिए, और कभी-कभी यह भी इंगित करने के लिए कि किन परिस्थितियों में एक कदम छोड़ना है। जेसीएल में मापदण्ड किसी कार्य द्वारा उपयोग किए जाने वाले संसाधनों के साथ-साथ कार्य को किस यंत्र पर चलाना चाहिए, इस पर नज़र रखने के लिए लेखांकन जानकारी भी प्रदान कर सकते हैं।


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


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


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


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


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


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


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


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


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


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


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


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


कई जेसीएल कथन 71 अक्षरों के भीतर फिट होने के लिए बहुत लंबे हैं, लेकिन इन्हें अनिश्चित संख्या में निरंतरता कार्डों तक बढ़ाया जा सकता है:
कई जेसीएल कथन 71 अक्षरों के भीतर फिट होने के लिए बहुत लंबे हैं, परन्तु इन्हें अनिश्चित संख्या में निरंतरता कार्डों तक बढ़ाया जा सकता है:
{| class="wikitable"
{| class="wikitable"
|-
|-
! OS JCL !! DOS JCL
! ओएस जेसीएल !! डीओएस जेसीएल
|-
|-
| Ending all actual JCL cards except the last at a point where the syntax requires a comma (<code>,</code>) || Ending all actual JCL cards except the last at a point where the syntax requires a comma (<code>,</code>) and a non-blank character in column 72
| अंतिम को छोड़कर सभी वास्तविक जेसीएल कार्डों को उस बिंदु पर समाप्त करना जहां सिंटैक्स के लिए अल्पविराम (<code>,</code>) की आवश्यकता होती है। || अंतिम को छोड़कर सभी वास्तविक जेसीएल कार्डों को उस बिंदु पर समाप्त करना जहां सिंटैक्स के लिए कॉलम 72 में अल्पविराम (<code>,</code>) और एक गैर-रिक्त वर्ण की आवश्यकता होती है
|-
|-
| Starting each continuation card with <code>//</code> in column 1 and then at least 1 space || Starting each continuation card with spaces and continuing in column 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"
|-
|-
! OS JCL !! DOS JCL
! ओएस जेसीएल !! डीओएस जेसीएल
|-
|-
|
|
Line 66: Line 66:
*Name of resource
*Name of resource
*Space(s)
*Space(s)
*Parameters, which vary depending on the statement type, separated by commas and with no space between them. Positional parameters, followed by keyword parameters.
*Parameters, which vary depending on the statement type, separated by commas and with no space between them. Pओएसitional parameters, followed by keyword parameters.
|}
|}




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


DOS और OS JCL में इन-स्ट्रीम इनपुट की शुरुआत का संकेत देने के अलग-अलग तरीके हैं, लेकिन दोनों इन-स्ट्रीम इनपुट को समाप्त करते हैं <code>/*</code> अंतिम इन-स्ट्रीम डेटा कार्ड के बाद कार्ड के कॉलम 1 पर। इससे ऑपरेटिंग सिस्टम कार्ड में JCL की प्रोसेसिंग फिर से शुरू कर देता है <code>/*</code> कार्ड।<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 529, 537.</ref>
Dओएस और ओएस जेसीएल में इन-स्ट्रीम इनपुट की शुरुआत का संकेत देने के अलग-अलग तरीके हैं, परन्तु दोनों इन-स्ट्रीम इनपुट को समाप्त करते हैं <code>/*</code> अंतिम इन-स्ट्रीम डेटा कार्ड के बाद कार्ड के कॉलम 1 पर। इससे संचालन प्रणाली कार्ड में जेसीएल की संसाधन फिर से प्रारंभ कर देता है <code>/*</code> कार्ड।<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 529, 537.</ref>
*ओएस जेसीएल: डीडी स्टेटमेंट का उपयोग इन-स्ट्रीम डेटा, साथ ही डेटा सेट का वर्णन करने के लिए किया जा सकता है। इन-स्ट्रीम डेटा से संबंधित डीडी स्टेटमेंट में डीडी पहचानकर्ता के बाद एक तारांकन चिह्न (*) होता है, उदाहरण के लिए। <code>//SYSIN DD *</code>. जेसीएल स्टेटमेंट को डीडी डेटा स्टेटमेंट का उपयोग करके इन-स्ट्रीम डेटा के हिस्से के रूप में शामिल किया जा सकता है।
*ओएस जेसीएल: डीडी स्टेटमेंट का उपयोग इन-स्ट्रीम डेटा, साथ ही डेटा सेट का वर्णन करने के लिए किया जा सकता है। इन-स्ट्रीम डेटा से संबंधित डीडी स्टेटमेंट में डीडी पहचानकर्ता के बाद एक तारांकन चिह्न (*) होता है, उदाहरण के लिए। <code>//SYSIN DD *</code>. जेसीएल स्टेटमेंट को डीडी डेटा स्टेटमेंट का उपयोग करके इन-स्ट्रीम डेटा के हिस्से के रूप में सम्मिलित किया जा सकता है।
:डीएलएम नामक एक ऑपरेंड एक सीमांकक निर्दिष्ट करने की अनुमति देता है (डिफ़ॉल्ट /* है)। एक वैकल्पिक सीमांकक निर्दिष्ट करने से जेसीएल को डेटा के रूप में पढ़ा जा सकता है, उदाहरण के लिए लाइब्रेरी सदस्य को प्रक्रियाओं की प्रतिलिपि बनाना या ''आंतरिक पाठक'' को नौकरी सबमिट करना।
:डीएलएम नामक एक ऑपरेंड एक सीमांकक निर्दिष्ट करने की अनुमति देता है (डिफ़ॉल्ट /* है)। एक वैकल्पिक सीमांकक निर्दिष्ट करने से जेसीएल को डेटा के रूप में पढ़ा जा सकता है, उदाहरण के लिए लाइब्रेरी सदस्य को प्रक्रियाओं की प्रतिलिपि बनाना या ''आंतरिक पाठक'' को नौकरी सबमिट करना।
:*एक उदाहरण,<ref>modeled on https://www.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v2r2.hasc300/has2z1_Submitting_to_the_internal_reader_from_jobs_or_tasks.htm, using knowledge dating back to when Green Cards came from IBM, and Manix worked for a company owning an IBM card sorter</ref> जो आंतरिक रीडर ('INTRDR') को एक कार्य सबमिट करता है और फिर दो फ़ाइलें हटा देता है वह है:
:*एक उदाहरण,<ref>modeled on https://www.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v2r2.hasc300/has2z1_Submitting_to_the_internal_reader_from_jobs_or_tasks.htm, using knowledge dating back to when Green Cards came from IBM, and Manix worked for a company owning an IBM card sorter</ref> जो आंतरिक रीडर ('INTRDR') को एक कार्य सबमिट करता है और फिर दो फ़ाइलें हटा देता है वह है:
Line 83: Line 83:
//सिसिन डीडी डमी
//सिसिन डीडी डमी
//SYSUT1 DD डेटा,DLM=ZZ
//SYSUT1 DD डेटा,DLM=ZZ
//Runlatr जॉब ACCT,MANIX,क्लास=A.TYPRUN=होल्ड
//Runlatr कार्य ACCT,MANIX,क्लास=A.TYPRUN=होल्ड
//* ^ बाद में चलाने के लिए एक नौकरी
//* ^ बाद में चलाने के लिए एक नौकरी
//CPUHOG EXEC PGM=PICALC1K
//CPUHOG EXEC PGM=PICALC1K
Line 94: Line 94:
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>
::# PICALC1K नामक प्रोग्राम (TYPRUN=HOLD) मैन्युअल रूप से जारी होने की प्रतीक्षा करेगा
::# PICALC1K नामक प्रोग्राम (TYPRUN=HOLD) मैन्युअल रूप से जारी होने की प्रतीक्षा करेगा
::# IEFBR14 नामक प्रोग्राम अभी चलेगा और पूरा होने पर, दो मौजूदा फ़ाइलें, PICALC.4DGTS और PICALC.5DGTS हटा दी जाएंगी।
::# IEFBR14 नामक प्रोग्राम अभी चलेगा और पूर्ण होने पर, दो मौजूदा फ़ाइलें, PICALC.4DGTS और PICALC.5DGTS हटा दी जाएंगी।


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


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


JCL का उपयोग करते हुए निम्नलिखित उदाहरण का उपयोग OS/360 पर फ़ाइल की प्रतिलिपि बनाने के लिए किया जा सकता है:
जेसीएल का उपयोग करते हुए निम्नलिखित उदाहरण का उपयोग ओएस/360 पर फ़ाइल की प्रतिलिपि बनाने के लिए किया जा सकता है:
<सिंटैक्सहाइलाइट लैंग= जेसीएल हाइलाइट= 3 >
<सिंटैक्सहाइलाइट लैंग= जेसीएल हाइलाइट= 3 >
//IS198CPY जॉब (IS198T30500), 'कॉपी जॉब', क्लास=L, MSGCLASS=X
//IS198CPY कार्य (IS198T30500), 'कॉपी कार्य', क्लास=L, MSGCLASS=X
//COPY01 EXEC PGM=IEBGENER
//COPY01 EXEC PGM=IEBGENER
//सिप्रिंट डीडी सिसौट=*
//सिप्रिंट डीडी सिसौट=*
Line 118: Line 118:


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


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


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


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


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


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


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


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


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


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


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


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


प्रत्येक JCL कथन को पाँच क्षेत्रों में विभाजित किया गया है:<ref>Ashley and Fernandez, ''Job Control Language'', pp. 12–16.</ref>
प्रत्येक जेसीएल कथन को पाँच क्षेत्रों में विभाजित किया गया है:<ref>Ashley and Fernandez, ''Job Control Language'', pp. 12–16.</ref>
पहचानकर्ता-फ़ील्ड नाम-फ़ील्ड ऑपरेशन-फ़ील्ड पैरामीटर-फ़ील्ड टिप्पणियाँ-फ़ील्ड
पहचानकर्ता-फ़ील्ड नाम-फ़ील्ड ऑपरेशन-फ़ील्ड मापदण्ड-फ़ील्ड टिप्पणियाँ-फ़ील्ड
                   ^ ^ ^ ^
                   ^ ^ ^ ^
               कोई जगह नहीं, कोई जगह नहीं, कोई जगह नहीं
               कोई जगह नहीं, कोई जगह नहीं, कोई जगह नहीं
Line 167: Line 167:
<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 195:
//          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> e> स्टेटमेंट का उपयोग डेटा को संदर्भित करने के लिए किया जाता है। यह कथन किसी प्रोग्राम के डेटासेट के आंतरिक विवरण को बाहरी उपकरणों पर डेटा से जोड़ता है: डिस्क, टेप, कार्ड, प्रिंटर इत्यादि। डीडी डिवाइस प्रकार (उदाहरण के लिए '181', '2400-5',') जैसी जानकारी प्रदान कर सकता है। टेप'), टेप या डिस्क के लिए एक [[वॉल्यूम (कंप्यूटिंग)]] संख्या, और डेटा फ़ाइल का विवरण, जिसे कहा जाता है <code>DCB</code> प्रोग्राम में [[डेटा नियंत्रण ब्लॉक]] (डीसीबी) के बाद उपपैरामीटर का उपयोग फ़ाइल की पहचान करने के लिए किया जाता है।
===डेटा एक्सेस (डीडी स्टेटमेंट)=== <code>DD</code> e>  
 
स्टेटमेंट का उपयोग डेटा को संदर्भित करने के लिए किया जाता है। यह कथन किसी प्रोग्राम के डेटासेट के आंतरिक विवरण को बाहरी उपकरणों पर डेटा से जोड़ता है: डिस्क, टेप, कार्ड, प्रिंटर इत्यादि। डीडी उपकरण प्रकार (उदाहरण के लिए '181', '2400-5',') जैसी जानकारी प्रदान कर सकता है। टेप'), टेप या डिस्क के लिए एक [[वॉल्यूम (कंप्यूटिंग)]] संख्या, और डेटा फ़ाइल का विवरण, जिसे कहा जाता है <code>DCB</code> प्रोग्राम में [[डेटा नियंत्रण ब्लॉक]] (डीसीबी) के बाद उपमापदण्ड का उपयोग फ़ाइल की पहचान करने के लिए किया जाता है।


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




Line 215: Line 218:


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


उदाहरण के लिए:
उदाहरण के लिए:
Line 228: Line 231:
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>


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


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


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


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


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


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


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


Line 364: Line 367:


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




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


Line 378: Line 381:
   |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>
जेईसीएल [[ कार्य नियंत्रण भाषा ]] (जेसीएल) से अलग है, जो ऑपरेटिंग सिस्टम को निर्देश देता है कि जॉब कैसे चलाया जाए।
जेईसीएल [[ कार्य नियंत्रण भाषा ]] (जेसीएल) से अलग है, जो संचालन प्रणाली को निर्देश देता है कि कार्य कैसे चलाया जाए।


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


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




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


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


====जेईएस2 जेईसीएल====
====जेईएस2 जेईसीएल====
निम्नलिखित JES2 जेईसीएल कथनों का उपयोग z/OS 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>
निम्नलिखित 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>


{| class="wikitable"
{| class="wikitable"
Line 434: Line 437:


====जेईएस3 जेईसीएल====
====जेईएस3 जेईसीएल====
निम्नलिखित JES3 जेईसीएल कथनों का उपयोग z/OS 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>
निम्नलिखित 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>


{| class="wikitable"
{| class="wikitable"
Line 471: Line 474:


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


{| class="wikitable"
{| class="wikitable"
Line 489: Line 492:
| <code>* $$ PUN</code> || Specifies characteristics of spooled punch files || <code>* $$&nbsp;PUN&nbsp;DISP=T,TADDR=280</code>
| <code>* $$ PUN</code> || Specifies characteristics of spooled punch files || <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.JCL1</code>
| <code>* $$ SLI</code> || Inserts data ("book") from source statement library into the input stream|| <code>* $$ SLI A.जेसीएल1</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> || Inserts data from the card reader into a book retrieved from the source statement library|| <code>* $$ DATA INPUT1</code>
Line 503: Line 506:




==अन्य सिस्टम==
==अन्य प्रणाली==
{{For|Other (non-IBM) Job Control Languages|Job control (computing)}}
{{For|Other (non-IBM) Job Control Languages|Job control (computing)}}


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


== यह भी देखें ==
== यह भी देखें ==
Line 535: Line 538:
श्रेणी:स्क्रिप्टिंग भाषाएँ
श्रेणी:स्क्रिप्टिंग भाषाएँ
श्रेणी:कार्य शेड्यूलिंग
श्रेणी:कार्य शेड्यूलिंग
श्रेणी:आईबीएम मेनफ्रेम ऑपरेटिंग सिस्टम
श्रेणी:आईबीएम मेनफ्रेम संचालन प्रणाली




[[Category: Machine Translated Page]]
[[Category: Machine Translated Page]]
[[Category:Created On 22/06/2023]]
[[Category:Created On 22/06/2023]]

Revision as of 23:03, 4 July 2023

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

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

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

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

शब्दावली

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

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

प्रेरणा

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

जटिलता

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

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

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

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

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

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

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

डॉस जेसीएल

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

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

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

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

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

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

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

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

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

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

ओएस जेसीएल

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

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

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

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

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

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

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

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

  • पहचानकर्ता-फ़ील्ड (//): पहचानकर्ता फ़ील्ड प्रणाली को इंगित करता है कि एक स्टेटमेंट डेटा के बजाय एक जेसीएल स्टेटमेंट है। पहचानकर्ता फ़ील्ड में निम्नलिखित सम्मिलित हैं:
    • डिलीमीटर स्टेटमेंट को छोड़कर, सभी जेसीएल स्टेटमेंट्स के कॉलम 1 और 2 में सम्मिलित हैं //
    • सीमांकक विवरण के कॉलम 1 और 2 में सम्मिलित हैं /*
    • जेसीएल टिप्पणी विवरण के कॉलम 1, 2, और 3 में सम्मिलित हैं //*
  • नाम-फ़ील्ड: नाम फ़ील्ड एक विशेष कथन की पहचान करता है ताकि अन्य कथन और प्रणाली इसे संदर्भित कर सकें। जेसीएल कथनों के लिए, इसे इस प्रकार कोडित किया जाना चाहिए:
    • नाम कॉलम 3 से प्रारंभ होना चाहिए।
    • नाम 1 से 8 अक्षरांकीय या राष्ट्रीय है ($, #, @) पात्र।
    • पहला अक्षर वर्णानुक्रमिक होना चाहिए।
    • नाम के बाद कम से कम एक रिक्त स्थान अवश्य होना चाहिए।
  • ऑपरेशन-फ़ील्ड: ऑपरेशन फ़ील्ड स्टेटमेंट के प्रकार को निर्दिष्ट करता है, या, संकेत स्टेटमेंट के लिए, संकेत को निर्दिष्ट करता है। ऑपरेशन-फ़ील्ड को इस प्रकार कोडित किया जाना चाहिए:
    • ऑपरेशन फ़ील्ड में कथन के लिए सिंटैक्स बॉक्स में वर्ण सम्मिलित होते हैं।
    • ऑपरेशन नाम फ़ील्ड का अनुसरण करता है।
    • ऑपरेशन से पहले और बाद में कम से कम एक रिक्त होना चाहिए।
    • ऑपरेशन में से एक होगा JOB, EXEC और DD.
  • मापदण्ड-फ़ील्ड: मापदण्ड फ़ील्ड, जिसे कभी-कभी ऑपरेंड फ़ील्ड भी कहा जाता है, में अल्पविराम द्वारा अलग किए गए मापदण्ड होते हैं। मापदण्ड फ़ील्ड को इस प्रकार कोडित किया जाना चाहिए:
    • मापदण्ड फ़ील्ड ऑपरेशन फ़ील्ड का अनुसरण करता है।
    • मापदण्ड फ़ील्ड के पहले कम से कम एक रिक्त स्थान होना चाहिए।
    • मापदण्ड फ़ील्ड में मापदण्ड होते हैं जो कीवर्ड होते हैं जिनका उपयोग प्रोग्राम या डेटासेट नाम जैसी जानकारी प्रदान करने के लिए स्टेटमेंट में किया जाता है।
  • टिप्पणियाँ-फ़ील्ड: इसमें टिप्पणी (परिकलक प्रोग्रामिंग) सम्मिलित है। टिप्पणियाँ-फ़ील्ड को निम्नानुसार कोडित किया जाना चाहिए:
    • टिप्पणी फ़ील्ड मापदण्ड फ़ील्ड का अनुसरण करती है।
    • टिप्पणी फ़ील्ड के पहले कम से कम एक रिक्त स्थान अवश्य होना चाहिए।

कीवर्ड मापदण्ड

//NEWFILE DD DSN=MYFILE01,UNIT=DISK,SPACE=(TRK,80,10),
//           DCB=(LRECL=100,BLKSIZE=1000),
//           DISP=(NEW,CATLG,DELETE)

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

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


===डेटा एक्सेस (डीडी स्टेटमेंट)=== DD e>

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

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

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

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


प्रक्रियाएँ

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

PROC और PEND

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

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

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

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

//MYPROC PROC FNAME=MYFILE01,SPTYPE=TRK,SPINIT=50,SPEXT=10,LR=100,BLK=1000
.....
//NEWFILE DD DSN=&FNAME,UNIT=DISK,SPACE=(&SPTYPE,&SPINIT,&SPEXT),
//           DCB=(LRECL=&LR,BLKSIZE=&BLK),DISP=(NEW,CATLG,DELETE)
....

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

//JOB01  JOB ..........
//STEP01 EXEC MYPROC FNAME=JOESFILE,SPTYPE=CYL,SPINIT=10,SPEXT=2,LR=100,BLK=2000
or
//JOB02  JOB ..........
//STEP01 EXEC MYPROC FNAME=SUESFILE,SPTYPE=TRK,SPINIT=500,SPEXT=100,LR=100,BLK=5000


संदर्भ

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

//MYPROC ................
//MYPR01 EXEC PGM=..........
//NEWFILE DD DSN=&MYFILE,UNIT=DISK,SPACE=(TRK,50,10),
//           DCB=(LRECL=100,BLKSIZE=1000),DISP=(NEW,CATLG,DELETE)
....
//MYPR02 EXEC PGM=..........
//INPUT01 DD DSN=*.MYPR01.NEWFILE

यहाँ, MYPR02 के रूप में पहचानी गई फ़ाइल का उपयोग करता है NEWFILE चरण में MYPR01 (DSN मतलब डेटासेट नाम और फ़ाइल का नाम निर्दिष्ट करता है; एक डीएसएन 44 अक्षरों से अधिक नहीं हो सकता[27]).

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

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

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

टिप्पणियाँ

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

//MYJOB JOB ...........
//STEP01 EXEC PGM=PROG01
....
//STEP02 EXEC PGM=PROG02,COND=(4,GT,STEP01)
....
//STEP03 EXEC PGM=PROG03,COND=(8,LE)
....
//STEP04 EXEC PGM=PROG04,COND=(ONLY,STEP01)
....
//STEP05 EXEC PGM=PROG05,COND=(EVEN,STEP03)
....

साधन:

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

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

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

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


उपयोगिताएँ

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

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

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

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


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

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

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

ओएस/360

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


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

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

जेड/ओएस

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

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

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

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


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

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

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


z/VSE

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

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

उदाहरण:

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

[some JCL statements here]

* $$ EOJ


अन्य प्रणाली

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

यह भी देखें

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

संदर्भ

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


स्रोत

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