जॉब कंट्रोल लैंग्वेज: Difference between revisions
No edit summary |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
{{short description|Scripting languages used on IBM mainframe}} | {{short description|Scripting languages used on IBM mainframe}}'''जॉब कंट्रोल लैंग्वेज (JCL)''' [[आईबीएम मेनफ्रेम]] संचालन प्रणाली पर उपयोग की जाने वाली लिपिबद्धन लैंग्वेजओं का एक नाम है, जो प्रणाली को [[ प्रचय संसाधन |प्रचय संसाधन]] चलाने या उप-प्रणाली प्रारंभ करने के तरीके के विषय में निर्देश देती है।<ref>"Every job submitted for execution ... must include JCL statements" -- ibm.com</ref> जेसीएल का उद्देश्य यह बताना है कि कौन से प्रोग्राम चलाने हैं, इनपुट या आउटपुट के लिए कौन सी फाइल या उपकरण<ref>and many more [[#Complexity|complex details]], such as whether the file is to be retained or deleted, the maximum of disk space to which it can grow, the name of a tape to be pre-mounted</ref> का उपयोग करना है और कभी-कभी यह भी इंगित करना है कि किन परिस्थितियों में एक चरण छोड़ना है। जेसीएल में मापदण्ड किसी जॉब द्वारा उपयोग किए जाने वाले संसाधनों के साथ-साथ जॉब को किस यंत्र पर चलाना चाहिए, इस पर अनुसरण के लिए लेखांकन सूचना भी प्रदान कर सकते हैं। | ||
आईबीएम जॉब कंट्रोल की दो अलग-अलग लैंग्वेजएँ हैं: | |||
* एक संचालन प्रणाली वर्ग के लिए एक जो डॉस/360 से प्रारंभ होता है और जिसका नवीनतम सदस्य ज़ेड/वीएसई है; और | * एक संचालन प्रणाली वर्ग के लिए एक जो डॉस/360 से प्रारंभ होता है और जिसका नवीनतम सदस्य ज़ेड/वीएसई है; और | ||
* दूसरा ओएस/360 से ज़ेड/ओएस तक की वंशावली के लिए,बाद वाले में अब जेईएस विस्तारण, | * दूसरा ओएस/360 से ज़ेड/ओएस तक की वंशावली के लिए,बाद वाले में अब जेईएस विस्तारण, जॉब प्रवेश कंट्रोल लैंग्वेज (जेईसीएल) सम्मिलित है। | ||
वे कुछ बुनियादी वाक्यविन्यास नियम और कुछ बुनियादी अवधारणाएँ साझा करते हैं, परन्तु अन्यथा बहुत भिन्न होते हैं।<ref>Ashley and Fernandez, ''Job Control Language'', p. 1.</ref> | वे कुछ बुनियादी वाक्यविन्यास नियम और कुछ बुनियादी अवधारणाएँ साझा करते हैं, परन्तु अन्यथा बहुत भिन्न होते हैं।<ref>Ashley and Fernandez, ''Job Control Language'', p. 1.</ref> | ||
[[वीएम (ऑपरेटिंग सिस्टम)|वीएम संचालन प्रणाली]] में जेसीएल नहीं है; सीपी और सीएमएस घटकों में से प्रत्येक में संकेत | [[वीएम (ऑपरेटिंग सिस्टम)|वीएम संचालन प्रणाली]] में जेसीएल नहीं है; सीपी और सीएमएस घटकों में से प्रत्येक में संकेत लैंग्वेजएँ हैं। | ||
==शब्दावली== | ==शब्दावली== | ||
Line 16: | Line 13: | ||
* डेटासेट: एक "डेटासेट" एक फ़ाइल है; यह अस्थायी या स्थायी हो सकता है और डिस्क ड्राइव, टेप भंडारण या अन्य उपकरण पर स्थित हो सकता है।<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> | ||
* सदस्य: एक विभाजित डेटासेट (PDS) का "सदस्य" एक पीडीएस के भीतर एक व्यक्तिगत डेटासेट है। कोष्ठक में सदस्य नाम के साथ पीडीएस का नाम निर्दिष्ट करके किसी सदस्य तक पहुंचा जा सकता है। उदाहरण के लिए, एसवाईएस1.एमएसीएलआईबी में प्रणाली बृहत् जीईटीएमएआईएन को एसवाईएस1.एमएसीएलआईबी (GETMAIN) के रूप में संदर्भित किया जा सकता है।<ref name="mcq-pds">McQuillen, ''System/360–370 Assembler Language'', pp. 288–289, 400.</ref> | * सदस्य: एक विभाजित डेटासेट (PDS) का "सदस्य" एक पीडीएस के भीतर एक व्यक्तिगत डेटासेट है। कोष्ठक में सदस्य नाम के साथ पीडीएस का नाम निर्दिष्ट करके किसी सदस्य तक पहुंचा जा सकता है। उदाहरण के लिए, एसवाईएस1.एमएसीएलआईबी में प्रणाली बृहत् जीईटीएमएआईएन को एसवाईएस1.एमएसीएलआईबी (GETMAIN) के रूप में संदर्भित किया जा सकता है।<ref name="mcq-pds">McQuillen, ''System/360–370 Assembler Language'', pp. 288–289, 400.</ref> | ||
*विभाजित डेटासेट: एक "विभाजित डेटासेट" या पीडीएस सदस्यों का संग्रह, या संग्रह है। विभाजित डेटासेट का उपयोग सामान्यतः स्रोत कूट, समायोजक मैक्रो (एसवाईएस1.एमएसीएलआईबी), प्रणाली विन्यास (एसवाईएस1.पीएआरएमएलआईबी), पुन: प्रयोज्य जेसीएल प्रक्रियाओं (एसवाईएस1.पीआरओसीएलआईबी) आदि जैसे पाठीय डेटा को संग्रहीत करने के लिए किया जाता है और अन्य संचालन प्रणाली में निर्देशिकाओं के साथ फ़ाइलें (ज़िप, टीएआर, आदि) संग्रहित करें। इनका उपयोग द्वि-आधारी कूट (भार प्रतिरूपक या प्रोग्राम ऑब्जेक्ट) को संग्रहीत करने के लिए भी किया जाता है; उस रूप में, वे स्थूलतः यूनिक्स-आधारित प्रणालियों में [[एआर (यूनिक्स)|एआर-]] आधारित स्थिर पुस्तकालयों के समान हैं। ऐसी अधिकांश संरचनाओं की तरह, एक बार संग्रहीत सदस्य को अद्यतन नहीं किया जा सकता है; सदस्य को हटाया जाना चाहिए, जैसे कि [[IEBUPDTE|आईईबीयूपीडीटीई]] उपयोगिता के साथ प्रतिस्थापित किया जाना चाहिए।<ref name="mcq-pds" />1989 में एमवीएस डीएफपी 3.2 के जारी होने के बाद से, पीडीएसई (विभाजित डेटा सेट विस्तारित) पीडीएस के एक उन्नत संस्करण के रूप में अस्तित्व में है;<ref>{{Cite web |last=Lewis |first=Cecilia |date=August 8, 2011 |title=हमने हाल ही में पीडीएसई के साथ आपके लिए क्या किया है|url=https://share.confex.com/share/117/webprogram/Handout/Session9939/SHARE%209939%20PDSE%20v1.pdf |access-date=2023-03-03 |website=SHARE in Orlando }}</ref> उपयोगकर्ता या एप्लिकेशन प्रोग्रामर के दृष्टिकोण से, वे काफी हद तक अपरिवर्तित हैं (कुछ अस्पष्ट विरासत सुविधाओं को हटाने के अतिरिक्त), परन्तु उनका आंतरिक | *विभाजित डेटासेट: एक "विभाजित डेटासेट" या पीडीएस सदस्यों का संग्रह, या संग्रह है। विभाजित डेटासेट का उपयोग सामान्यतः स्रोत कूट, समायोजक मैक्रो (एसवाईएस1.एमएसीएलआईबी), प्रणाली विन्यास (एसवाईएस1.पीएआरएमएलआईबी), पुन: प्रयोज्य जेसीएल प्रक्रियाओं (एसवाईएस1.पीआरओसीएलआईबी) आदि जैसे पाठीय डेटा को संग्रहीत करने के लिए किया जाता है और अन्य संचालन प्रणाली में निर्देशिकाओं के साथ फ़ाइलें (ज़िप, टीएआर, आदि) संग्रहित करें। इनका उपयोग द्वि-आधारी कूट (भार प्रतिरूपक या प्रोग्राम ऑब्जेक्ट) को संग्रहीत करने के लिए भी किया जाता है; उस रूप में, वे स्थूलतः यूनिक्स-आधारित प्रणालियों में [[एआर (यूनिक्स)|एआर-]] आधारित स्थिर पुस्तकालयों के समान हैं। ऐसी अधिकांश संरचनाओं की तरह, एक बार संग्रहीत सदस्य को अद्यतन नहीं किया जा सकता है; सदस्य को हटाया जाना चाहिए, जैसे कि [[IEBUPDTE|आईईबीयूपीडीटीई]] उपयोगिता के साथ प्रतिस्थापित किया जाना चाहिए।<ref name="mcq-pds" />1989 में एमवीएस डीएफपी 3.2 के जारी होने के बाद से, पीडीएसई (विभाजित डेटा सेट विस्तारित) पीडीएस के एक उन्नत संस्करण के रूप में अस्तित्व में है;<ref>{{Cite web |last=Lewis |first=Cecilia |date=August 8, 2011 |title=हमने हाल ही में पीडीएसई के साथ आपके लिए क्या किया है|url=https://share.confex.com/share/117/webprogram/Handout/Session9939/SHARE%209939%20PDSE%20v1.pdf |access-date=2023-03-03 |website=SHARE in Orlando }}</ref> उपयोगकर्ता या एप्लिकेशन प्रोग्रामर के दृष्टिकोण से, वे काफी हद तक अपरिवर्तित हैं (कुछ अस्पष्ट विरासत सुविधाओं को हटाने के अतिरिक्त), परन्तु उनका आंतरिक जॉबान्वयन बहुत भिन्न है। | ||
* यूएसएस: यूनिक्स प्रणाली सेवाएं, एमवीएस के भाग के रूप में चलने वाली एक यूनिक्स उप-प्रणाली और यूनिक्स फ़ाइलों, लिपि, | * यूएसएस: यूनिक्स प्रणाली सेवाएं, एमवीएस के भाग के रूप में चलने वाली एक यूनिक्स उप-प्रणाली और यूनिक्स फ़ाइलों, लिपि, जॉबों और प्रोग्रामों को यूनिक्स वातावरण में मेनफ्रेम पर चलाने की अनुमति देता है। | ||
== प्रेरणा == | == प्रेरणा == | ||
मूल रूप से, मेनफ्रेम प्रणाली प्रचय संसाधन की ओर उन्मुख थे। कई प्रचय | मूल रूप से, मेनफ्रेम प्रणाली प्रचय संसाधन की ओर उन्मुख थे। कई प्रचय जॉबों के लिए सेटअप की आवश्यकता होती है, [[मुख्य भंडारण]] के लिए विशिष्ट आवश्यकताओं के साथ और [[चुंबकीय टेप]], निजी डिस्क वॉल्यूम और विशेष रूपों के साथ मुद्रक जैसे समर्पित उपकरणों की आवश्यकता होती है।<ref>McQuillen, ''System/360–370 Assembler Language'', pp. 22–24.</ref> जेसीएल को यह सुनिश्चित करने के साधन के रूप में विकसित किया गया था कि जॉब प्रारंभ होने से पूर्व सभी आवश्यक संसाधन उपलब्ध हैं। उदाहरण के लिए, कई प्रणालियाँ, जैसे कि [[लिनक्स]], आवश्यक डेटासेट की पहचान को संकेत लाइन पर निर्दिष्ट करने की अनुमति देते हैं और इसलिए [[ शैल (कंप्यूटिंग) |शैल]] द्वारा प्रतिस्थापन के अधीन होते हैं, या जॉबावधि पर प्रोग्राम द्वारा उत्पन्न होते हैं। इन प्रणालियों पर [[ऑपरेटिंग सिस्टम|संचालन प्रणाली]] [[ कार्य अनुसूचक |जॉब अनुसूचक]] को जॉब की आवश्यकताओं के विषय में बहुत कम या कोई सूचना नहीं होती है। इसके विपरीत, जेसीएल सभी आवश्यक डेटासेट और उपकरणों को स्पष्ट रूप से निर्दिष्ट करता है। अनुसूचक जॉब को चलाने के लिए जारी करने से पहले संसाधनों को पूर्व-आवंटित कर सकता है। यह [[गतिरोध]] से बचने में सहायता करता है, जहां जॉब A संसाधन R1 रखता है और संसाधन R2 का अनुरोध करता है, जबकि समवर्ती रूप से चलने वाला जॉब B संसाधन R2 रखता है और R1 का अनुरोध करता है। ऐसी स्थितियों में [[कंप्यूटर ऑपरेटर|परिकलक संचालक]] के लिए एकमात्र समाधान यह है कि वह किसी एक जॉब को समाप्त कर दे, जिसे पुनः प्रारंभ करने की आवश्यकता होती है। जॉब कंट्रोल के साथ, यदि जॉब A को चलाने के लिए निर्धारित किया गया है, तो जॉब B तब तक प्रारंभ नहीं किया जाएगा जब तक जॉब A पूर्ण नहीं कर लेता या आवश्यक संसाधन जारी नहीं कर देता। | ||
==डॉस और ओएस जेसीएल के लिए सामान्य विशेषताएं== | ==डॉस और ओएस जेसीएल के लिए सामान्य विशेषताएं== | ||
=== | === जॉब, चरण और प्रक्रियाएँ === | ||
डॉस और ओएस दोनों के लिए | डॉस और ओएस दोनों के लिए जॉब की इकाई [[ नौकरी धारा |जॉब]] है। किसी जॉब में एक या कई चरण होते हैं, जिनमें से प्रत्येक एक विशिष्ट प्रोग्राम चलाने का अनुरोध होता है। उदाहरण के लिए, [[ संबंध का डेटाबेस |संबंधपरक डेटाबेस]] के दिनों से पूर्व, प्रबंधन के लिए एक मुद्रित विवरणी तैयार करने के जॉब में निम्नलिखित चरण सम्मिलित हो सकते हैं: उचित विवरणी का चयन करने और उन्हें एक अस्थायी फ़ाइल में अनुकरण करने के लिए एक उपयोगकर्ता-लिखित प्रोग्राम; सामान्यतः सामान्य प्रयोजन उपयोगिता का उपयोग करके, अस्थायी फ़ाइल को आवश्यक क्रम में क्रमबद्ध करना; सूचना को इस तरह से प्रस्तुत करने के लिए एक उपयोगकर्ता-लिखित प्रोग्रामजो अंतिम उपयोगकर्ताओं के लिए पढ़ना सरल हो और इसमें उप-योग जैसी अन्य उपयोगी सूचना भी सम्मिलित हो; और मॉनिटर या टर्मिनल पर प्रदर्शन के लिए अंतिम-उपयोगकर्ता सूचना के चयनित पृष्ठों को प्रारूपित करने के लिए एक उपयोगकर्ता-लिखित प्रोग्राम है। | ||
डॉस और ओएस जेसीएल दोनों में पहला कार्ड | डॉस और ओएस जेसीएल दोनों में पहला कार्ड जॉब कार्ड होना चाहिए, जो:<ref>McQuillen, ''System/360–370 Assembler Language'', pp. 380–382.</ref> | ||
* | * जॉब की पहचान करता है। | ||
*सामान्यतः परिकलक सेवा विभाग को उपयुक्त उपयोगकर्ता विभाग को बिल देने में सक्षम बनाने के लिए सूचना प्रदान करता है। | *सामान्यतः परिकलक सेवा विभाग को उपयुक्त उपयोगकर्ता विभाग को बिल देने में सक्षम बनाने के लिए सूचना प्रदान करता है। | ||
* परिभाषित करता है कि संपूर्ण | * परिभाषित करता है कि संपूर्ण जॉब को कैसे चलाया जाना है, उदा. पंक्ति में अन्य जॉबों के सापेक्ष इसकी प्राथमिकता है। | ||
प्रक्रियाएं (सामान्यतः प्रोक्स कहलाती हैं) किसी | प्रक्रियाएं (सामान्यतः प्रोक्स कहलाती हैं) किसी जॉब में डाले गए चरणों या चरणों के समूहों के लिए पूर्व-लिखित जेसीएल हैं। दोनों जेसीएल ऐसी प्रक्रियाओं की अनुमति देते हैं। प्रोक्स का उपयोग उन चरणों को दोहराने के लिए किया जाता है जिनका उपयोग एक ही जॉब में या कई अलग-अलग जॉबों में कई बार किया जाता है। वे प्रोग्रामर का समय बचाते हैं और त्रुटियों के जोखिम को कम करते हैं। एक प्रक्रिया को चलाने के लिए केवल जेसीएल फ़ाइल में एक कार्ड सम्मिलित होता है जो एक निर्दिष्ट फ़ाइल से प्रक्रिया की प्रतिलिपि बनाता है और इसे जॉब धारा में सम्मिलित करता है। साथ ही, प्रोक्स में प्रत्येक उपयोग के लिए प्रक्रिया को अनुकूलित करने के लिए मापदण्ड सम्मिलित हो सकते हैं। | ||
===मूल वाक्यविन्यास=== | ===मूल वाक्यविन्यास=== | ||
डॉस और ओएस जेसीएल दोनों में अधिकतम प्रयोग करने योग्य पंक्ति की लंबाई 80 अक्षर है, क्योंकि जब डॉस/360 और ओएस/360 का पहली बार उपयोग किया गया था तो परिकलक प्रणाली में नया इनपुट प्रदान करने की मुख्य विधि 80-स्तम्भ वाले [[छिद्रित कार्ड|पंच कार्ड]] थे।<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 528–529.</ref> बाद में लंबी अभिलेख लंबाई वाली डिस्क या टेप फ़ाइलों के माध्यम से | डॉस और ओएस जेसीएल दोनों में अधिकतम प्रयोग करने योग्य पंक्ति की लंबाई 80 अक्षर है, क्योंकि जब डॉस/360 और ओएस/360 का पहली बार उपयोग किया गया था तो परिकलक प्रणाली में नया इनपुट प्रदान करने की मुख्य विधि 80-स्तम्भ वाले [[छिद्रित कार्ड|पंच कार्ड]] थे।<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 528–529.</ref> बाद में लंबी अभिलेख लंबाई वाली डिस्क या टेप फ़ाइलों के माध्यम से जॉब प्रस्तुत करना संभव हो गया, परन्तु संचालन प्रणाली के जॉब प्रस्तुति घटकों ने अक्षर 80 के बाद सब कुछ उपेक्षित कर दिया। | ||
कठोरता से कहें तो दोनों संचालन प्रणाली वर्ग प्रति पंक्ति केवल 71 वर्णों का उपयोग करते हैं। अक्षर 73-80 सामान्यतः कार्ड अनुक्रम संख्याएं होती हैं जिन्हें प्रणाली | कठोरता से कहें तो दोनों संचालन प्रणाली वर्ग प्रति पंक्ति केवल 71 वर्णों का उपयोग करते हैं। अक्षर 73-80 सामान्यतः कार्ड अनुक्रम संख्याएं होती हैं जिन्हें प्रणाली जॉब समाप्ति अभिलेख पर मुद्रित करता है और संचालन प्रणाली द्वारा अभिलेख की गई किसी भी त्रुटि के स्थान की पहचान करने के लिए उपयोगी होता है। अक्षर 72 को सामान्यतः रिक्त छोड़ दिया जाता है, परन्तु इसमें एक गैर-रिक्त अक्षर हो सकता है जो यह दर्शाता है कि जेसीएल विवरण अगले कार्ड पर जारी है। | ||
यूएसएस फ़ाइल नामों को छोड़कर, सभी संकेत, मापदण्ड नाम और मान बड़े अक्षरों में होने चाहिए। | यूएसएस फ़ाइल नामों को छोड़कर, सभी संकेत, मापदण्ड नाम और मान बड़े अक्षरों में होने चाहिए। | ||
Line 79: | Line 76: | ||
डॉस और ओएस जेसीएल के पास शृंखलाबद्ध इनपुट के प्रारम्भ का संकेत देने के अलग-अलग तरीके हैं, परन्तु दोनों अंतिम शृंखलाबद्ध डेटा कार्ड के बाद कार्ड के स्तम्भ 1 पर <code>/*</code> के साथ शृंखलाबद्ध इनपुट को समाप्त करते हैं। इससे संचालन प्रणाली <code>/*</code> कार्ड के बाद कार्ड में जेसीएल की प्रोसेसिंग पुनः प्रारंभ कर देता है।<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 529, 537.</ref> | डॉस और ओएस जेसीएल के पास शृंखलाबद्ध इनपुट के प्रारम्भ का संकेत देने के अलग-अलग तरीके हैं, परन्तु दोनों अंतिम शृंखलाबद्ध डेटा कार्ड के बाद कार्ड के स्तम्भ 1 पर <code>/*</code> के साथ शृंखलाबद्ध इनपुट को समाप्त करते हैं। इससे संचालन प्रणाली <code>/*</code> कार्ड के बाद कार्ड में जेसीएल की प्रोसेसिंग पुनः प्रारंभ कर देता है।<ref>Stern and Stern, ''Structured COBOL Programming'', pp. 529, 537.</ref> | ||
*ओएस जेसीएल: डीडी विवरण का उपयोग शृंखलाबद्ध डेटा, साथ ही डेटा सेट का वर्णन करने के लिए किया जा सकता है। शृंखलाबद्ध डेटा से संबंधित डीडी विवरण में डीडी पहचानकर्ता के बाद एक तारांकन चिह्न (*) होता है, उदाहरण के लिए, <code>//एसवाईएसIN DD *</code> है। जेसीएल विवरण को डीडी डेटा विवरण का उपयोग करके शृंखलाबद्ध डेटा के भाग के रूप में सम्मिलित किया जा सकता है। | *ओएस जेसीएल: डीडी विवरण का उपयोग शृंखलाबद्ध डेटा, साथ ही डेटा सेट का वर्णन करने के लिए किया जा सकता है। शृंखलाबद्ध डेटा से संबंधित डीडी विवरण में डीडी पहचानकर्ता के बाद एक तारांकन चिह्न (*) होता है, उदाहरण के लिए, <code>//एसवाईएसIN DD *</code> है। जेसीएल विवरण को डीडी डेटा विवरण का उपयोग करके शृंखलाबद्ध डेटा के भाग के रूप में सम्मिलित किया जा सकता है। | ||
:डीएलएम नामक एक | :डीएलएम नामक एक संजॉब एक सीमांकक निर्दिष्ट करने की अनुमति देता है (व्यतिक्रम /* है)। एक वैकल्पिक सीमांकक निर्दिष्ट करने से जेसीएल को डेटा के रूप में पढ़ा जा सकता है, उदाहरण के लिए पुस्तकालय सदस्य को प्रक्रियाओं की प्रतिलिपि बनाना या ''आंतरिक पाठक'' को जॉब प्रस्तुत करना है। | ||
==={{anchor}}जटिलता=== | ==={{anchor}}जटिलता=== | ||
ओएस जेसीएल की अधिकांश जटिलता, विशेष रूप से, [[डेटा सेट (आईबीएम मेनफ्रेम)|डेटासेट]] सूचना निर्दिष्ट करने के लिए बड़ी संख्या में विकल्पों से उत्पन्न होती है। जबकि [[यूनिक्स]] जैसे संचालन प्रणाली पर फ़ाइलों को बाइट्स की क्रमबद्ध धाराओं में सारगर्भित किया जाता है, जिसमें संरचित डेटा को पढ़ने और लिखने का | ओएस जेसीएल की अधिकांश जटिलता, विशेष रूप से, [[डेटा सेट (आईबीएम मेनफ्रेम)|डेटासेट]] सूचना निर्दिष्ट करने के लिए बड़ी संख्या में विकल्पों से उत्पन्न होती है। जबकि [[यूनिक्स]] जैसे संचालन प्रणाली पर फ़ाइलों को बाइट्स की क्रमबद्ध धाराओं में सारगर्भित किया जाता है, जिसमें संरचित डेटा को पढ़ने और लिखने का जॉब विशेष रूप से उपयोगकर्ता-स्तरीय प्रोग्रामों (जो अंततः, ऐसी धाराओं को अंतग्रर्हण और उत्सर्जित करना) और डेटा के व्यावहारिक विवरण से संबंधित होता है। उपयोगकर्ता प्रोग्रामों की सूचना के बिना संचालन प्रणाली द्वारा बड़े पैमाने पर भंडारण और अधिगम को नियंत्रित किया जाता है; ओएस/360 और उसके आनुक्रमिको पर डेटासेट उनके फ़ाइल प्रकार और आकार, अभिलेख प्रकार और लंबाई, खंड आकार, [[चुंबकीय टेप डेटा भंडारण|चुंबकीय टेप]] घनत्व जैसी उपकरण-विशिष्ट सूचना और लेबल सूचना को उजागर करते हैं। हालाँकि कई विकल्पों के लिए प्रणाली व्यतिक्रम हैं, फिर भी प्रोग्रामर द्वारा जेसीएल और प्रोग्राम में कोडित सूचना के संयोजन के माध्यम से बहुत कुछ निर्दिष्ट किया जाना शेष है। प्रोग्राम में जितनी अधिक सूचना कोडित की जाएगी, वह उतना ही कम नम्य होगा, क्योंकि प्रोग्राम की सूचना जेसीएल में किसी भी चीज़ को प्रत्यादेश कर देती है; इस प्रकार, अधिकांश सूचना सामान्यतः जेसीएल के माध्यम से प्रदान की जाती है। | ||
जेसीएल की जटिलता के लिए दूसरी व्याख्या किसी | जेसीएल की जटिलता के लिए दूसरी व्याख्या किसी जॉब को चलाने के लिए पीसी या यूनिक्स जैसे वातावरण में पाई जाने वाली अपेक्षाओं से भिन्न है। | ||
*निम्न-स्तरीय प्रणाली/360 सीपीयू 1980 के दशक के मध्य के पीसी की तुलना में कम शक्तिशाली और अधिक महंगे थे जिनके लिए एमएस-डॉस रूपांकित किया गया था। ओएस/360 न्यूनतम 32 केबी मेमोरी आकार वाले प्रणाली के लिए था और डॉस/360 न्यूनतम 16 केबी वाले प्रणाली के लिए था। 1964 में प्रणाली/360 की घोषणा के समय एक 360/30 सीपीयू निम्न-स्तरीय सीपीयू-प्रति सेकंड 1.8के से 34.5के निर्देशों को संसाधित करता था।<ref>{{Cite web|url=http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2030.html|title=IBM Archives: System/360 Model 30|date=2003-01-23|website=www-03.ibm.com|language=en-US|access-date=2016-04-25}}</ref> 1981 में पहले आईबीएम पीसी में 16 केबी या 64 केबी मेमोरी थी और यह प्रति सेकंड लगभग 330के निर्देशों को संसाधित करता था।<ref name="vintageComputerIBMPC">{{Cite web |url=http://www.vintage-computer.com/ibm_pc.shtml |title=आईबीएम पीसी|access-date=2007-10-21 |archive-date=2006-07-05 |archive-url=https://web.archive.org/web/20060705211337/http://www.vintage-computer.com/ibm_pc.shtml |url-status=dead }}</ref><ref name="iathVirginiaEduPCs">[http://www3.iath.virginia.edu/elab/hfl0108.html IBM-compatible computers] History of PCs {{webarchive |url=https://web.archive.org/web/20070814010809/http://www3.iath.virginia.edu/elab/hfl0108.html |date=August 14, 2007 }}</ref> परिणामस्वरूप, जेसीएल को परिकलक के लिए संसाधित करना सरल होना था और प्रोग्रामर द्वारा उपयोग में सरली बहुत कम प्राथमिकता थी। इस युग में प्रोग्रामर परिकलक की तुलना में बहुत सस्ते थे। | *निम्न-स्तरीय प्रणाली/360 सीपीयू 1980 के दशक के मध्य के पीसी की तुलना में कम शक्तिशाली और अधिक महंगे थे जिनके लिए एमएस-डॉस रूपांकित किया गया था। ओएस/360 न्यूनतम 32 केबी मेमोरी आकार वाले प्रणाली के लिए था और डॉस/360 न्यूनतम 16 केबी वाले प्रणाली के लिए था। 1964 में प्रणाली/360 की घोषणा के समय एक 360/30 सीपीयू निम्न-स्तरीय सीपीयू-प्रति सेकंड 1.8के से 34.5के निर्देशों को संसाधित करता था।<ref>{{Cite web|url=http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2030.html|title=IBM Archives: System/360 Model 30|date=2003-01-23|website=www-03.ibm.com|language=en-US|access-date=2016-04-25}}</ref> 1981 में पहले आईबीएम पीसी में 16 केबी या 64 केबी मेमोरी थी और यह प्रति सेकंड लगभग 330के निर्देशों को संसाधित करता था।<ref name="vintageComputerIBMPC">{{Cite web |url=http://www.vintage-computer.com/ibm_pc.shtml |title=आईबीएम पीसी|access-date=2007-10-21 |archive-date=2006-07-05 |archive-url=https://web.archive.org/web/20060705211337/http://www.vintage-computer.com/ibm_pc.shtml |url-status=dead }}</ref><ref name="iathVirginiaEduPCs">[http://www3.iath.virginia.edu/elab/hfl0108.html IBM-compatible computers] History of PCs {{webarchive |url=https://web.archive.org/web/20070814010809/http://www3.iath.virginia.edu/elab/hfl0108.html |date=August 14, 2007 }}</ref> परिणामस्वरूप, जेसीएल को परिकलक के लिए संसाधित करना सरल होना था और प्रोग्रामर द्वारा उपयोग में सरली बहुत कम प्राथमिकता थी। इस युग में प्रोग्रामर परिकलक की तुलना में बहुत सस्ते थे। | ||
*जेसीएल को प्रचय संसाधन के लिए रूपांकित किया गया था। इस प्रकार, इसे संचालन प्रणाली को सब कुछ बताना होगा, जिसमें एक चरण के परिणाम के आधार पर क्या करना है। उदाहरण के लिए, <code>DISP=(NEW,CATLG,DELETE)</code> इसका अर्थ है कि यदि प्रोग्राम सफलतापूर्वक चलता है, तो एक नई फ़ाइल बनाएं और उसे सूचीबद्ध करें; अन्यथा नई फ़ाइल हटाएँ. पीसी पर चलने वाले प्रोग्राम प्रायः समस्याओं से संसाधित करने के बाद सफाई के लिए उपयोगकर्ता पर निर्भर करते हैं। | *जेसीएल को प्रचय संसाधन के लिए रूपांकित किया गया था। इस प्रकार, इसे संचालन प्रणाली को सब कुछ बताना होगा, जिसमें एक चरण के परिणाम के आधार पर क्या करना है। उदाहरण के लिए, <code>DISP=(NEW,CATLG,DELETE)</code> इसका अर्थ है कि यदि प्रोग्राम सफलतापूर्वक चलता है, तो एक नई फ़ाइल बनाएं और उसे सूचीबद्ध करें; अन्यथा नई फ़ाइल हटाएँ. पीसी पर चलने वाले प्रोग्राम प्रायः समस्याओं से संसाधित करने के बाद सफाई के लिए उपयोगकर्ता पर निर्भर करते हैं। | ||
Line 91: | Line 88: | ||
डॉस/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 संचालन प्रणाली के बाद के संस्करण मूल जेसीएल की अधिकांश विशेषताओं को सुरक्षित रखते हैं - हालाँकि ग्राहकों को अपनी सभी जेसीएल फ़ाइलों को पुनः लिखने के लिए विवश करने से बचने के लिए कुछ सरलीकरण किया गया है।{{Citation needed|date=October 2012}} कई उपयोगकर्ता जेसीएल विवरण के किसी भी सेट को एक प्रक्रिया के रूप में सहेजते हैं जिसका उपयोग एक या दो से अधिक होने की संभावना है।<ref>{{cite book |last1=Brown |first1=Gary DeWard |title=ज़ोस जेसीएल|date=2002 |publisher=John Wiley & Sons |isbn=0471-236357 |page=248 |edition=fifth |url=https://books.google.com/books?id=K8kMJa8arlIC&pg=PA248}}</ref> | ||
ओएस जेसीएल की वाक्य रचना प्रणाली/360 कोडांतरण | ओएस जेसीएल की वाक्य रचना प्रणाली/360 कोडांतरण लैंग्वेज में [[ मैक्रो अनुदेश |मैक्रो]] के वाक्य रचना के समान है और इसलिए प्रोग्रामर उस समय परिचित रहे होंगे जब कई प्रोग्राम कोडांतरण लैंग्वेज में कोडित किए गए थे। | ||
==डॉस जेसीएल== | ==डॉस जेसीएल== | ||
Line 106: | Line 103: | ||
* यदि कुछ वैकल्पिक मापदण्ड छोड़ दिए गए हैं परन्तु बाद में सम्मिलित किए गए हैं, तो छोड़े गए मापदण्ड को बिना किसी रिक्त स्थान के अल्पविराम द्वारा दर्शाया जाना चाहिए, जैसा कि ऊपर टीएलबीएल विवरण में है। | * यदि कुछ वैकल्पिक मापदण्ड छोड़ दिए गए हैं परन्तु बाद में सम्मिलित किए गए हैं, तो छोड़े गए मापदण्ड को बिना किसी रिक्त स्थान के अल्पविराम द्वारा दर्शाया जाना चाहिए, जैसा कि ऊपर टीएलबीएल विवरण में है। | ||
डॉस जेसीएल कुछ हद तक ओएस जेसीएल की तुलना में कम मापदंडों के साथ अधिक विवरणों का उपयोग करके स्थितीय मापदंडों की कठिनाइयों को कम करता है। उदाहरण में एएसएसजीएन, डीएलबीएल और ईएक्सटीईएनटी विवरण ओएस जेसीएल में एकल <code>DD</code> विवरण के समान ही | डॉस जेसीएल कुछ हद तक ओएस जेसीएल की तुलना में कम मापदंडों के साथ अधिक विवरणों का उपयोग करके स्थितीय मापदंडों की कठिनाइयों को कम करता है। उदाहरण में एएसएसजीएन, डीएलबीएल और ईएक्सटीईएनटी विवरण ओएस जेसीएल में एकल <code>DD</code> विवरण के समान ही जॉब करते हैं (यह निर्दिष्ट करते हुए कि एक नई डिस्क फ़ाइल को कहाँ संग्रहीत किया जाना चाहिए)। | ||
===उपकरण निर्भरता=== | ===उपकरण निर्भरता=== | ||
मूल डॉस/360 और डॉस/वीएस के अधिकांश संस्करणों में उपकरण का मॉडल संख्या निर्दिष्ट करना पड़ता था, जिसका उपयोग प्रत्येक डिस्क या टेप फ़ाइल के लिए किया जाना था - यहां तक कि उपस्थित फ़ाइलों के लिए और अस्थायी फ़ाइलों के लिए भी, जिन्हें हटा दिया जाएगा। | मूल डॉस/360 और डॉस/वीएस के अधिकांश संस्करणों में उपकरण का मॉडल संख्या निर्दिष्ट करना पड़ता था, जिसका उपयोग प्रत्येक डिस्क या टेप फ़ाइल के लिए किया जाना था - यहां तक कि उपस्थित फ़ाइलों के लिए और अस्थायी फ़ाइलों के लिए भी, जिन्हें हटा दिया जाएगा। जॉब का अंत, इसका अर्थ यह था कि यदि कोई ग्राहक अधिक आधुनिक उपकरणों में अपग्रेड करता है, तो कई जेसीएल फाइलों को परिवर्तित करना होगा। | ||
बाद में डॉस/360 वर्ग के सदस्यों ने उन स्थितियों की संख्या कम कर दी जिनमें उपकरण मॉडल संख्या की आवश्यकता होती थी। | बाद में डॉस/360 वर्ग के सदस्यों ने उन स्थितियों की संख्या कम कर दी जिनमें उपकरण मॉडल संख्या की आवश्यकता होती थी। | ||
Line 118: | Line 115: | ||
==ओएस जेसीएल== | ==ओएस जेसीएल== | ||
ओएस जेसीएल में तीन मूल विवरण प्रकार होते हैं:<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> विवरण, जो | * <code>EXEC</code> विवरण, जो जॉब के इस चरण में निष्पादित किए जाने वाले प्रोग्राम या प्रक्रिया<ref>A pre-stored set of "EXEC PGM=" and "DD" JCL commands which could be parameterized</ref> की पहचान करता है और चरण के विषय में सूचना, जिसमें किसी चरण को चलाने या छोड़ने के प्रतिबन्ध भी सम्मिलित हैं। | ||
* <code>DD</code> (डेटा | * <code>DD</code> (डेटा परिलैंग्वेज) विवरण, जो एक चरण में उपयोग की जाने वाली डेटा फ़ाइल की पहचान करते हैं और उस फ़ाइल के विषय में विस्तृत सूचना देते हैं। <code>DD</code> विवरण के भीतर किसी भी क्रम में हो सकते हैं। | ||
प्रारम्भ से ही, ओएस वर्ग के लिए जेसीएल (जेड/ओएस तक और इसमें सम्मिलित) अधिक सुनम्य और उपयोग में सरल था। | प्रारम्भ से ही, ओएस वर्ग के लिए जेसीएल (जेड/ओएस तक और इसमें सम्मिलित) अधिक सुनम्य और उपयोग में सरल था। | ||
निम्नलिखित उदाहरण वाक्य रचना की पुरानी शैली का उपयोग करते हैं जो 1964 में प्रणाली/360 के प्रमोचन से ही प्रदान की गई थी। पुरानी वाक्य रचना अभी भी उन | निम्नलिखित उदाहरण वाक्य रचना की पुरानी शैली का उपयोग करते हैं जो 1964 में प्रणाली/360 के प्रमोचन से ही प्रदान की गई थी। पुरानी वाक्य रचना अभी भी उन जॉबों में काफी सामान्य है जो केवल सामान्य परिवर्तनों के साथ दशकों से चल रही हैं। | ||
===जेसीएल विवरणों को कूटलेखन करने के नियम=== | ===जेसीएल विवरणों को कूटलेखन करने के नियम=== | ||
Line 149: | Line 146: | ||
** संचालन से पहले और बाद में कम-से-कम एक रिक्त होना चाहिए। | ** संचालन से पहले और बाद में कम-से-कम एक रिक्त होना चाहिए। | ||
** संचालन में से एक <code>JOB</code>, <code>EXEC</code> और <code>DD</code> होगा। | ** संचालन में से एक <code>JOB</code>, <code>EXEC</code> और <code>DD</code> होगा। | ||
* <var>मापदण्ड-क्षेत्र</var>: मापदण्ड क्षेत्र, जिसे कभी-कभी | * <var>मापदण्ड-क्षेत्र</var>: मापदण्ड क्षेत्र, जिसे कभी-कभी संजॉब क्षेत्र भी कहा जाता है, में अल्पविराम द्वारा अलग किए गए मापदण्ड होते हैं। मापदण्ड क्षेत्र को इस प्रकार कोडित किया जाना चाहिए: | ||
** मापदण्ड क्षेत्र संचालन क्षेत्र का अनुसरण करता है। | ** मापदण्ड क्षेत्र संचालन क्षेत्र का अनुसरण करता है। | ||
** मापदण्ड क्षेत्र के पहले कम-से-कम एक रिक्त स्थान होना चाहिए। | ** मापदण्ड क्षेत्र के पहले कम-से-कम एक रिक्त स्थान होना चाहिए। | ||
Line 168: | Line 165: | ||
=== डेटा अभिगम (डीडी विवरण) === | === डेटा अभिगम (डीडी विवरण) === | ||
<code>DD</code> विवरण का उपयोग डेटा को संदर्भित करने के लिए किया जाता है। यह विवरण किसी प्रोग्राम के डेटासेट के आंतरिक विवरण को बाहरी उपकरणों पर डेटा से जोड़ता है: डिस्क, टेप, कार्ड, मुद्रण इत्यादि। डीडी उपकरण प्रकार (उदाहरण के लिए '181', '2400-5','टेप') जैसी सूचना प्रदान कर सकता है)। टेप या डिस्क के लिए एक [[वॉल्यूम (कंप्यूटिंग)|प्रबलता]] संख्या और डेटा फ़ाइल का विवरण, फ़ाइल की पहचान करने के लिए उपयोग किए जाने वाले प्रोग्राम में डेटा [[डेटा नियंत्रण ब्लॉक| | <code>DD</code> विवरण का उपयोग डेटा को संदर्भित करने के लिए किया जाता है। यह विवरण किसी प्रोग्राम के डेटासेट के आंतरिक विवरण को बाहरी उपकरणों पर डेटा से जोड़ता है: डिस्क, टेप, कार्ड, मुद्रण इत्यादि। डीडी उपकरण प्रकार (उदाहरण के लिए '181', '2400-5','टेप') जैसी सूचना प्रदान कर सकता है)। टेप या डिस्क के लिए एक [[वॉल्यूम (कंप्यूटिंग)|प्रबलता]] संख्या और डेटा फ़ाइल का विवरण, फ़ाइल की पहचान करने के लिए उपयोग किए जाने वाले प्रोग्राम में डेटा [[डेटा नियंत्रण ब्लॉक|कंट्रोल खंड]] (DCB) के बाद <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> | ||
Line 174: | Line 171: | ||
ऊपर सूचीबद्ध मापदंडों और विभिन्न अभिगम विधियों और उपकरणों के लिए विशिष्ट सूचना के कारण डीडी विवरण सबसे जटिल जेसीएल विवरण है। एक आईबीएम संदर्भ में डीडी विवरण का मैनुअल विवरण 130 से अधिक पृष्ठों का है - जो कि जेओबी और ईएक्सईसी विवरण के संयुक्त विवरण से दोगुने से भी अधिक है।<ref>{{cite book |last1=IBM Corporation |title=IBM System/360 Operating System: Job Control Language Reference |date=June 1971 |url=http://www.bitsavers.org/pdf/ibm/360/os/R20.1_Mar71/GC28-6704-1_OS_JCL_Reference_Rel_20.1_Jun71.pdf |access-date=June 25, 2019}}</ref> | ऊपर सूचीबद्ध मापदंडों और विभिन्न अभिगम विधियों और उपकरणों के लिए विशिष्ट सूचना के कारण डीडी विवरण सबसे जटिल जेसीएल विवरण है। एक आईबीएम संदर्भ में डीडी विवरण का मैनुअल विवरण 130 से अधिक पृष्ठों का है - जो कि जेओबी और ईएक्सईसी विवरण के संयुक्त विवरण से दोगुने से भी अधिक है।<ref>{{cite book |last1=IBM Corporation |title=IBM System/360 Operating System: Job Control Language Reference |date=June 1971 |url=http://www.bitsavers.org/pdf/ibm/360/os/R20.1_Mar71/GC28-6704-1_OS_JCL_Reference_Rel_20.1_Jun71.pdf |access-date=June 25, 2019}}</ref> | ||
डीडी विवरण पंक्ति में डेटा को | डीडी विवरण पंक्ति में डेटा को जॉब धारा में अन्तःक्षेप करने की अनुमति देता है। यह आईडीसीएएमएस, एसओआरटी इत्यादि जैसी उपयोगिताओं को कंट्रोल सूचना प्रदान करने के साथ-साथ प्रोग्रामों को इनपुट डेटा प्रदान करने के लिए उपयोगी है। | ||
===उपकरण स्वतंत्रता=== | ===उपकरण स्वतंत्रता=== | ||
प्रारंभ से ही, संचालन प्रणाली के ओएस वर्ग के लिए जेसीएल ने उच्च स्तर की उपकरण स्वतंत्रता की प्रस्तुति की। यहां तक कि नई फाइलों के लिए भी, जिन्हें | प्रारंभ से ही, संचालन प्रणाली के ओएस वर्ग के लिए जेसीएल ने उच्च स्तर की उपकरण स्वतंत्रता की प्रस्तुति की। यहां तक कि नई फाइलों के लिए भी, जिन्हें जॉब समाप्त होने के बाद रखा जाना था, कोई भी उपकरण प्रकार को सामान्य शब्दों में निर्दिष्ट कर सकता है, उदाहरण के लिए, <code>UNIT=DISK</code>, <code>UNIT=TAPE</code>, या <code>UNIT=एसवाईएसSQ</code> (टेप या डिस्क) है। अवश्य ही, यदि यह महत्व रखता है तो कोई मॉडल संख्या या यहां तक कि एक विशिष्ट उपकरण पता भी निर्दिष्ट कर सकता है।<ref>McQuillen, ''System/360–370 Assembler Language'', pp. 297, 406–407.</ref> | ||
Line 187: | Line 184: | ||
====पीआरओसी और पीईएनडी==== | ====पीआरओसी और पीईएनडी==== | ||
प्रक्रियाओं को <code>// PEND</code> विवरण के साथ प्रक्रिया को समाप्त करके | प्रक्रियाओं को <code>// PEND</code> विवरण के साथ प्रक्रिया को समाप्त करके जॉब धारा में भी सम्मिलित किया जा सकता है , मिल किया जा सकता है, फिर इसे नाम से अनुप्रयुक्त किया जा सकता है जैसे कि यह एक प्रक्रिया पुस्तकालय में था। | ||
===मापदण्डीकृत प्रक्रियाएं=== | ===मापदण्डीकृत प्रक्रियाएं=== | ||
Line 198: | Line 195: | ||
.... | .... | ||
</syntaxhighlight> | </syntaxhighlight> | ||
इस उदाहरण में, एम्परसेंड <code>&</code> से प्रारंभ होने वाले सभी मान मापदण्ड हैं जो तब निर्दिष्ट किए जाएंगे जब कोई | इस उदाहरण में, एम्परसेंड <code>&</code> से प्रारंभ होने वाले सभी मान मापदण्ड हैं जो तब निर्दिष्ट किए जाएंगे जब कोई जॉब अनुरोध करती है कि प्रक्रिया का उपयोग किया जाए। पीआरओसी विवरण, प्रक्रिया को एक नाम देने के अतिरिक्त, प्रोग्रामर को प्रत्येक मापदण्ड के लिए व्यतिक्रम मान निर्दिष्ट करने की अनुमति देता है। इसलिए कोई इस उदाहरण में एक प्रक्रिया का उपयोग करके कई अलग-अलग आकार और प्रदर्शन की नई फ़ाइलें बना सकता है। उदाहरण के लिए: | ||
<syntaxhighlight lang="jcl"> | <syntaxhighlight lang="jcl"> | ||
//JOB01 JOB .......... | //JOB01 JOB .......... | ||
Line 209: | Line 206: | ||
===संदर्भ=== | ===संदर्भ=== | ||
बहु-चरणीय | बहु-चरणीय जॉबों में, बाद के चरण में किसी फ़ाइल को पूर्ण रूप से निर्दिष्ट करने के बजाय रेफरबैक का उपयोग किया जा सकता है, जिसे पहले चरण में पहले ही निर्दिष्ट किया जा चुका है। उदाहरण के लिए: | ||
<syntaxhighlight lang="jcl"> | <syntaxhighlight lang="jcl"> | ||
//MYPROC ................ | //MYPROC ................ | ||
Line 226: | Line 223: | ||
|quote=Data set names must not exceed 44 characters, including all name segments and periods.}}</ref> | |quote=Data set names must not exceed 44 characters, including all name segments and periods.}}</ref> | ||
ऐसी | ऐसी जॉबों में जिनमें जॉब-विशिष्ट जेसीएल और प्रक्रिया कॉल का मिश्रण होता है, जॉब-विशिष्ट चरण उस फ़ाइल को वापस संदर्भित कर सकता है जो प्रक्रिया में पूर्णतया से निर्दिष्ट थी, उदाहरण के लिए: | ||
<syntaxhighlight lang="jcl"> | <syntaxhighlight lang="jcl"> | ||
//MYJOB JOB .......... | //MYJOB JOB .......... | ||
Line 233: | Line 230: | ||
//INPUT01 DD DSN=*.STEP01.MYPR01.NEWFILE | //INPUT01 DD DSN=*.STEP01.MYPR01.NEWFILE | ||
</syntaxhighlight> | </syntaxhighlight> | ||
जहाँ <code>DSN=*.STEP01.MYPR01.NEWFILE</code> का अर्थ है "इस | जहाँ <code>DSN=*.STEP01.MYPR01.NEWFILE</code> का अर्थ है "इस जॉब के चरण <code>STEP01</code> द्वारा प्रयुक्त प्रक्रिया के चरण <code>MYPR01</code> में <code>NEWFILE</code> के रूप में पहचानी गई फ़ाइल का उपयोग करें"। प्रक्रिया के नाम के बजाय उस चरण के नाम का उपयोग करना, जिसे प्रक्रिया कहा जाता है, एक प्रोग्रामर को एक ही जॉब में एक ही प्रक्रिया को कई बार उपयोग करने की अनुमति देता है, बिना किसी भ्रम के कि रेफरबैक में प्रक्रिया का कौन सा उदाहरण उपयोग किया जाता है। | ||
===टिप्पणियाँ=== | ===टिप्पणियाँ=== | ||
जेसीएल फ़ाइलें लंबी और जटिल हो सकती हैं और | जेसीएल फ़ाइलें लंबी और जटिल हो सकती हैं और लैंग्वेज को पढ़ना सरल नहीं है। ओएस जेसीएल प्रोग्रामर को दो प्रकार की व्याख्यात्मक टिप्पणी सम्मिलित करने की अनुमति देता है: | ||
*जेसीएल विवरण के समान ही। उन्हें स्तम्भ 72 में एक निरंतरता वर्ण (पारंपरिक रूप से <code>X</code>) , उसके बाद अगली पंक्ति के स्तम्भ 1-3 में <code>// </code> रखकर बढ़ाया जा सकता है। | *जेसीएल विवरण के समान ही। उन्हें स्तम्भ 72 में एक निरंतरता वर्ण (पारंपरिक रूप से <code>X</code>) , उसके बाद अगली पंक्ति के स्तम्भ 1-3 में <code>// </code> रखकर बढ़ाया जा सकता है। | ||
*जिन पंक्तियों में केवल टिप्पणी होती है, उनका उपयोग प्रायः स्थानीय विवरणों के बजाय जेसीएल की समग्र संरचना के विषय में प्रमुख बिंदुओं को समझाने के लिए किया जाता है। केवल-टिप्पणी पंक्तियों का उपयोग लंबी, जटिल जेसीएल फ़ाइलों को अनुभागों में विभाजित करने के लिए भी किया जाता है। | *जिन पंक्तियों में केवल टिप्पणी होती है, उनका उपयोग प्रायः स्थानीय विवरणों के बजाय जेसीएल की समग्र संरचना के विषय में प्रमुख बिंदुओं को समझाने के लिए किया जाता है। केवल-टिप्पणी पंक्तियों का उपयोग लंबी, जटिल जेसीएल फ़ाइलों को अनुभागों में विभाजित करने के लिए भी किया जाता है। | ||
Line 286: | Line 283: | ||
*16 = टर्मिनल त्रुटि - बहुत गंभीर समस्याएँ, परिणामों का उपयोग न करें! | *16 = टर्मिनल त्रुटि - बहुत गंभीर समस्याएँ, परिणामों का उपयोग न करें! | ||
ओएस जेसीएल पुनरावृत्ति कूट को <code>COND</code> (स्थिति कूट) संदर्भित करता है और इसका उपयोग यह तय करने के लिए कर सकता है कि बाद के चरणों को चलाना है या नहीं। हालाँकि, अधिकांश आधुनिक प्रोग्रामिंग | ओएस जेसीएल पुनरावृत्ति कूट को <code>COND</code> (स्थिति कूट) संदर्भित करता है और इसका उपयोग यह तय करने के लिए कर सकता है कि बाद के चरणों को चलाना है या नहीं। हालाँकि, अधिकांश आधुनिक प्रोग्रामिंग लैंग्वेजओं के विपरीत, ओएस जेसीएल में सशर्त चरणों को निष्पादित नहीं किया जाता है यदि निर्दिष्ट स्थिति सत्य है - इस प्रकार स्मरक की उत्पत्ति करता है, यदि यह सत्य है, तो बिना कूट चलाए आगे बढ़ें। स्थिति को और अधिक जटिल बनाने के लिए, प्रतिबंध को केवल उस चरण के बाद ही निर्दिष्ट किया जा सकता है जिसका वह संदर्भ देता है। उदाहरण के लिए: | ||
<syntaxhighlight lang="jcl"> | <syntaxhighlight lang="jcl"> | ||
//MYJOB JOB ........... | //MYJOB JOB ........... | ||
Line 326: | Line 323: | ||
ध्यान दें कि <code>COND</code> विवरणों वाले चरणों को पीछे की ओर पढ़कर कोई भी उन्हें काफी सरलता से समझ सकता है। यह तार्किक स्थानान्तरण का एक उदाहरण है। हालाँकि, बाद में आईबीएम ने जेसीएल में आईएफ स्थिति प्रस्तुत की, जिससे <code>COND</code> मापदण्ड को बनाए रखते हुए प्रोग्रामर के लिए कूटलेखन को कुछ हद तक सरल बना दिया गया (उपस्थित जेसीएल में परिवर्तन करने से बचने के लिए {{code|COND parm}} का उपयोग किया जाता है)। | ध्यान दें कि <code>COND</code> विवरणों वाले चरणों को पीछे की ओर पढ़कर कोई भी उन्हें काफी सरलता से समझ सकता है। यह तार्किक स्थानान्तरण का एक उदाहरण है। हालाँकि, बाद में आईबीएम ने जेसीएल में आईएफ स्थिति प्रस्तुत की, जिससे <code>COND</code> मापदण्ड को बनाए रखते हुए प्रोग्रामर के लिए कूटलेखन को कुछ हद तक सरल बना दिया गया (उपस्थित जेसीएल में परिवर्तन करने से बचने के लिए {{code|COND parm}} का उपयोग किया जाता है)। | ||
<code>COND</code> मापदण्ड को <code>JOB</code> विवरण पर भी निर्दिष्ट किया जा सकता है। यदि ऐसा है तो प्रणाली किसी | <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 341: | Line 338: | ||
|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> जैसा कि जेसीएल पर एक निर्देशात्मक पुस्तक में पूछा गया है, जब | |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> | ||
== | ==जॉब प्रवेश कंट्रोल लैंग्वेज== | ||
आईबीएम मेनफ्रेम प्रणाली पर | आईबीएम मेनफ्रेम प्रणाली पर जॉब प्रवेश कंट्रोल लैंग्वेज या जेईसीएल संकेत लैंग्वेज कंट्रोल विवरण का समूह है जो [[ अटेरन |स्पूलन]] उप-प्रणाली के लिए सूचना प्रदान करता है - जेड/ओएस पर जेईएस2 या जेईएस3 या जेड/वीएसई के लिए वीएसई/पावर) है। जेईसीएल विवरण निर्दिष्ट कर सकते हैं कि किस नेटवर्क परिकलक पर जॉब धारा चलाना है, कब जॉब चलाना है और परिणामी आउटपुट कहां भेजना है।<ref name=Brown>{{cite book|last=Brown|first=Gary DeWard|title=ज़ोस जेसीएल|year=2002|publisher=John Wiley & Sons|isbn=9780471426738|url=https://books.google.com/books?id=K8kMJa8arlIC&dq=jecl+definition&pg=PA3|access-date=2014-05-05}}</ref> | ||
जेईसीएल [[ कार्य नियंत्रण भाषा | | जेईसीएल [[ कार्य नियंत्रण भाषा |जॉब कंट्रोल लैंग्वेज]] (JCL) से भिन्न है, जो संचालन प्रणाली को निर्देश देता है कि जॉब कैसे चलाया जाए। | ||
तीनों परिवेशों के लिए जेईसीएल के अलग-अलग संस्करण हैं। | तीनों परिवेशों के लिए जेईसीएल के अलग-अलग संस्करण हैं। | ||
===ओएस/360=== | ===ओएस/360=== | ||
ओएस/360 दूरस्थ | ओएस/360 दूरस्थ जॉब प्रवेश (प्रोग्राम संख्या 360एस-आरसी-536) के लिए जॉब प्रवेश कंट्रोल लैंग्वेज के प्रारंभिक संस्करण में इनपुट अभिलेख के स्तम्भ 1-2 में पहचानकर्ता <code>..</code> का उपयोग किया गया था और इसमें एकल कंट्रोल विवरण <code>JED</code> (जॉब प्रवेश परिलैंग्वेज) सम्मिलित है। <code>LOGON</code>, <code>LOGOFF</code>, और <code>STATUS</code> जैसे जॉब निष्पादित्र का प्रारम्भ भी <code>..</code> से हुआ।<ref>{{cite book|last=IBM Corporation|title=IBM System/360 Operating System Remote Job Entry|year=1968|url=http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/360/rje/C30-2006-1_Remote_Job_Entry_May68.pdf|access-date=2014-05-05}}</ref> | ||
====प्री-जेईएस जेईसीएल==== | ====प्री-जेईएस जेईसीएल==== | ||
हालाँकि यह शब्द अभी तक विकसित नहीं हुआ था, [[ह्यूस्टन स्वचालित स्पूलिंग प्राथमिकता|एचएएसपी]] में <code>/*</code> वाक्य - विन्यास सहित जेईएस के जेईसीएल बनने के समान | हालाँकि यह शब्द अभी तक विकसित नहीं हुआ था, [[ह्यूस्टन स्वचालित स्पूलिंग प्राथमिकता|एचएएसपी]] में <code>/*</code> वाक्य - विन्यास सहित जेईएस के जेईसीएल बनने के समान जॉबक्षमता थी। | ||
===जेड/ओएस=== | ===जेड/ओएस=== | ||
Line 369: | Line 366: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! जेईसीएल विवरण !! | ! जेईसीएल विवरण !! जॉब !! Example | ||
|- | |- | ||
| <code>/*$''command''</code> || एक प्रचालक (कंसोल) संकेत सम्मिलित करता है। || <code>/*$S PRINTER3</code><ref>other examples can be viewed at [[Houston Automatic Spooling Priority#Operator Commands]]</ref> | | <code>/*$''command''</code> || एक प्रचालक (कंसोल) संकेत सम्मिलित करता है। || <code>/*$S PRINTER3</code><ref>other examples can be viewed at [[Houston Automatic Spooling Priority#Operator Commands]]</ref> | ||
|- | |- | ||
| <code>/*JOBPARM</code> || | | <code>/*JOBPARM</code> || जॉब से संबंधित मापदंडों के लिए मान निर्दिष्ट करता है। || <code>/*JOBPARM TIME=10</code> | ||
|- | |- | ||
| <code>/*MESSAGE</code> || प्रचालक कंसोल को एक संदेश भेजता है। || <code>/*MESSAGE CALL JOE AT HOME IF JOB ABENDS</code> | | <code>/*MESSAGE</code> || प्रचालक कंसोल को एक संदेश भेजता है। || <code>/*MESSAGE CALL JOE AT HOME IF JOB ABENDS</code> | ||
|- | |- | ||
| <code>/*NETACCT</code> || नेटवर्क | | <code>/*NETACCT</code> || नेटवर्क जॉब के लिए खाता संख्या निर्दिष्ट करता है। || <code>/*NETACCT 12345</code> | ||
|- | |- | ||
| <code>/*NOTIFY</code> || अधिसूचना संदेशों के लिए गंतव्य निर्दिष्ट करता है। || <code>/*NOTIFY SAM</code> | | <code>/*NOTIFY</code> || अधिसूचना संदेशों के लिए गंतव्य निर्दिष्ट करता है। || <code>/*NOTIFY SAM</code> | ||
Line 383: | Line 380: | ||
| <code>/*OUTPUT</code> || ''एसवाईएसओयूटी'' डेटासेट विकल्प निर्दिष्ट करता है। || <code>/*OUTPUT FORMS=BILL</code> | | <code>/*OUTPUT</code> || ''एसवाईएसओयूटी'' डेटासेट विकल्प निर्दिष्ट करता है। || <code>/*OUTPUT FORMS=BILL</code> | ||
|- | |- | ||
| <code>/*PRIORITY</code> || | | <code>/*PRIORITY</code> || जॉब चयन प्राथमिकता निर्धारित करता है। || <code>/*PRIORITY 15</code> | ||
|- | |- | ||
| <code>/*ROUTE</code> || आउटपुट गंतव्य या निष्पादन नोड निर्दिष्ट करता है। || <code>/*ROUTE PRT RMT5</code> | | <code>/*ROUTE</code> || आउटपुट गंतव्य या निष्पादन नोड निर्दिष्ट करता है। || <code>/*ROUTE PRT RMT5</code> | ||
Line 395: | Line 392: | ||
| <code>/*XEQ</code> || निष्पादन नोड निर्दिष्ट करता है। || <code>/*XEQ DENVER</code> | | <code>/*XEQ</code> || निष्पादन नोड निर्दिष्ट करता है। || <code>/*XEQ DENVER</code> | ||
|- | |- | ||
| <code>/*XMIT</code> || | | <code>/*XMIT</code> || जॉब या डेटासेट को किसी अन्य नेटवर्क नोड पर प्रेषित करने का संकेत देता है। || <code>/*XMIT NYC</code> | ||
|} | |} | ||
Line 404: | Line 401: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! जेईसीएल विवरण !! | ! जेईसीएल विवरण !! जॉब !! उदाहरण | ||
|- | |- | ||
| <code>//**''command''</code> || एक जेईएस3 प्रचालक (कंसोल) संकेत दर्ज करता है। || | | <code>//**''command''</code> || एक जेईएस3 प्रचालक (कंसोल) संकेत दर्ज करता है। || | ||
Line 416: | Line 413: | ||
| <code>//*FORMAT</code> || <code>एसवाईएसOUT</code> डेटासेट विकल्प निर्दिष्ट करता है। || | | <code>//*FORMAT</code> || <code>एसवाईएसOUT</code> डेटासेट विकल्प निर्दिष्ट करता है। || | ||
|- | |- | ||
| <code>//*MAIN</code> || | | <code>//*MAIN</code> || जॉब से संबंधित मापदंडों के लिए मान निर्दिष्ट करता है। || | ||
|- | |- | ||
| <code>//*NET</code> || जेईएस3 निर्भर | | <code>//*NET</code> || जेईएस3 निर्भर जॉब कंट्रोल का उपयोग करके जॉबों के मध्य संबंधों की पहचान करता है। || | ||
|- | |- | ||
| <code>//*NETACCT</code> || नेटवर्क | | <code>//*NETACCT</code> || नेटवर्क जॉब के लिए खाता संख्या निर्दिष्ट करता है। || | ||
|- | |- | ||
| <code>//*OPERATOR</code> || प्रचालक कंसोल को एक संदेश भेजता है। || | | <code>//*OPERATOR</code> || प्रचालक कंसोल को एक संदेश भेजता है। || | ||
Line 426: | Line 423: | ||
| <code>//*PAUSE</code> || इनपुट पाठक बंद कर देता है। || | | <code>//*PAUSE</code> || इनपुट पाठक बंद कर देता है। || | ||
|- | |- | ||
| <code>//*PROCESS</code> || एक गैर-मानक | | <code>//*PROCESS</code> || एक गैर-मानक जॉब की पहचान करता है। || | ||
|- | |- | ||
| <code>//*ROUTE</code> || | | <code>//*ROUTE</code> || जॉब के लिए निष्पादन नोड निर्दिष्ट करता है। || | ||
|- | |- | ||
| <code>/*SIGNOFF</code> || दूरस्थ सत्र समाप्त होता है। || <code>/*SIGNOFF</code> | | <code>/*SIGNOFF</code> || दूरस्थ सत्र समाप्त होता है। || <code>/*SIGNOFF</code> | ||
Line 437: | Line 434: | ||
===जेड/वीएसई=== | ===जेड/वीएसई=== | ||
वीएसई के लिए जेईसीएल विवरण <code>* $$</code> से प्रारंभ होते हैं (एकल स्थान पर ध्यान दें)। | वीएसई के लिए जेईसीएल विवरण <code>* $$</code> से प्रारंभ होते हैं (एकल स्थान पर ध्यान दें)। जॉब प्रवेश कंट्रोल लैंग्वेज जेसीएल जॉबों का प्रारंभ और अंत पंक्तियों को परिभाषित करता है। यह [[वीएसई (ऑपरेटिंग सिस्टम)|वीएसई (संचालन प्रणाली)]]/[[आईबीएम पावर (सॉफ्टवेयर)|आईबीएम पावर]] को सलाह देता है कि यह जॉब कैसे संभाला जाए। जेईसीएल विवरण जॉब का नाम (वीएसई/पावर द्वारा प्रयुक्त), वह वर्ग जिसमें जॉब संसाधित किया जाता है और जॉब का स्वभाव (अर्थात <code>D</code>, <code>L</code>, <code>K</code>, <code>H</code>) को परिभाषित करते हैं। | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! जेईसीएल विवरण<ref>{{cite book|last=IBM Corporation|title=DOS/VS POWER/VS Installation and Operations|year=1974|url=http://bitsavers.trailing-edge.com/pdf/ibm/370/DOS_VS/GC33-5403-1_DOS_VS_POWER_VS_Installation_and_Operation_Sep74.pdf}}</ref> !! | ! जेईसीएल विवरण<ref>{{cite book|last=IBM Corporation|title=DOS/VS POWER/VS Installation and Operations|year=1974|url=http://bitsavers.trailing-edge.com/pdf/ibm/370/DOS_VS/GC33-5403-1_DOS_VS_POWER_VS_Installation_and_Operation_Sep74.pdf}}</ref> !! जॉब !! उदाहरण | ||
|- | |- | ||
| <code>* $$ CTL</code> || एक व्यतिक्रम इनपुट वर्ग स्थापित करता है। || <code>* $$ CTL CLASS=A</code> | | <code>* $$ CTL</code> || एक व्यतिक्रम इनपुट वर्ग स्थापित करता है। || <code>* $$ CTL CLASS=A</code> | ||
|- | |- | ||
| <code>* $$ JOB</code> || किसी | | <code>* $$ JOB</code> || किसी जॉब की विशेषताएँ निर्दिष्ट करता है। || <code>* $$ JOB JNM=PYRL,PRI=9</code> | ||
|- | |- | ||
| <code>* $$ EOJ</code> || किसी | | <code>* $$ EOJ</code> || किसी जॉब के अंत का प्रतीक है। || <code>* $$ EOJ</code> | ||
|- | |- | ||
| <code>* $$ RDR</code> || 3540 डिस्केट से एक फ़ाइल को इनपुट वर्ग में सम्मिलित करता है। || <code>* $$ RDR एसवाईएस005,'fname',2</code> | | <code>* $$ RDR</code> || 3540 डिस्केट से एक फ़ाइल को इनपुट वर्ग में सम्मिलित करता है। || <code>* $$ RDR एसवाईएस005,'fname',2</code> | ||
Line 474: | Line 471: | ||
{{For|अन्य (गैर-आईबीएम) कार्य नियंत्रण भाषाएँ|कार्य नियंत्रण (अभिकलन)}} | {{For|अन्य (गैर-आईबीएम) कार्य नियंत्रण भाषाएँ|कार्य नियंत्रण (अभिकलन)}} | ||
अन्य मेनफ्रेम प्रचय प्रणालियों में किसी न किसी प्रकार की | अन्य मेनफ्रेम प्रचय प्रणालियों में किसी न किसी प्रकार की जॉब कंट्रोल लैंग्वेज होती थी, चाहे उसे वह कहा जाए या नहीं; उनकी वाक्य रचना आईबीएम संस्करणों से पूर्णतया से भिन्न था, परन्तु वे सामान्यतः समान क्षमताएं प्रदान करते थे। [[इंटरैक्टिव कंप्यूटिंग|पारस्परिक]] प्रणाली में संकेत लैंग्वेजएँ सम्मिलित हैं - संकेत फ़ाइलें (जैसे पीसीडॉस ".बैट" फ़ाइलें) को गैर-पारस्परिक रूप से चलाया जा सकता है, परन्तु ये सामान्यतः जेसीएल की तरह अप्राप्य जॉबों को चलाने के लिए उतना प्रबल वातावरण प्रदान नहीं करते हैं। कुछ परिकलक प्रणाली पर जॉब कंट्रोल लैंग्वेज और पारस्परिक संकेत लैंग्वेज भिन्न हो सकती है। उदाहरण के लिए, जेड/ओएस प्रणाली पर [[समय साझा करने का विकल्प|टीएसओ]] प्रचय जॉब के लिए जेसीएल के साथ-साथ संकेत लैंग्वेजओं के रूप में [[CLIST|सीएलआईएसटी]] या [[Rexx|आरईएक्सएक्स]] का उपयोग करता है। अन्य प्रणालियों पर ये समान हो सकते हैं। | ||
== यह भी देखें == | == यह भी देखें == | ||
Line 500: | Line 497: | ||
{{Authority control}} | {{Authority control}} | ||
[[Category:All articles with unsourced statements]] | [[Category:All articles with unsourced statements]] |
Latest revision as of 16:46, 8 September 2023
जॉब कंट्रोल लैंग्वेज (JCL) आईबीएम मेनफ्रेम संचालन प्रणाली पर उपयोग की जाने वाली लिपिबद्धन लैंग्वेजओं का एक नाम है, जो प्रणाली को प्रचय संसाधन चलाने या उप-प्रणाली प्रारंभ करने के तरीके के विषय में निर्देश देती है।[1] जेसीएल का उद्देश्य यह बताना है कि कौन से प्रोग्राम चलाने हैं, इनपुट या आउटपुट के लिए कौन सी फाइल या उपकरण[2] का उपयोग करना है और कभी-कभी यह भी इंगित करना है कि किन परिस्थितियों में एक चरण छोड़ना है। जेसीएल में मापदण्ड किसी जॉब द्वारा उपयोग किए जाने वाले संसाधनों के साथ-साथ जॉब को किस यंत्र पर चलाना चाहिए, इस पर अनुसरण के लिए लेखांकन सूचना भी प्रदान कर सकते हैं।
आईबीएम जॉब कंट्रोल की दो अलग-अलग लैंग्वेजएँ हैं:
- एक संचालन प्रणाली वर्ग के लिए एक जो डॉस/360 से प्रारंभ होता है और जिसका नवीनतम सदस्य ज़ेड/वीएसई है; और
- दूसरा ओएस/360 से ज़ेड/ओएस तक की वंशावली के लिए,बाद वाले में अब जेईएस विस्तारण, जॉब प्रवेश कंट्रोल लैंग्वेज (जेईसीएल) सम्मिलित है।
वे कुछ बुनियादी वाक्यविन्यास नियम और कुछ बुनियादी अवधारणाएँ साझा करते हैं, परन्तु अन्यथा बहुत भिन्न होते हैं।[3]
वीएम संचालन प्रणाली में जेसीएल नहीं है; सीपी और सीएमएस घटकों में से प्रत्येक में संकेत लैंग्वेजएँ हैं।
शब्दावली
जेसीएल के संयोजन में उपयोग किए जाने वाले कुछ शब्द या वाक्यांश आईबीएम मेनफ्रेम प्रौद्योगिकी के लिए विशिष्ट हैं।
- डेटासेट: एक "डेटासेट" एक फ़ाइल है; यह अस्थायी या स्थायी हो सकता है और डिस्क ड्राइव, टेप भंडारण या अन्य उपकरण पर स्थित हो सकता है।[4][5]
- सदस्य: एक विभाजित डेटासेट (PDS) का "सदस्य" एक पीडीएस के भीतर एक व्यक्तिगत डेटासेट है। कोष्ठक में सदस्य नाम के साथ पीडीएस का नाम निर्दिष्ट करके किसी सदस्य तक पहुंचा जा सकता है। उदाहरण के लिए, एसवाईएस1.एमएसीएलआईबी में प्रणाली बृहत् जीईटीएमएआईएन को एसवाईएस1.एमएसीएलआईबी (GETMAIN) के रूप में संदर्भित किया जा सकता है।[6]
- विभाजित डेटासेट: एक "विभाजित डेटासेट" या पीडीएस सदस्यों का संग्रह, या संग्रह है। विभाजित डेटासेट का उपयोग सामान्यतः स्रोत कूट, समायोजक मैक्रो (एसवाईएस1.एमएसीएलआईबी), प्रणाली विन्यास (एसवाईएस1.पीएआरएमएलआईबी), पुन: प्रयोज्य जेसीएल प्रक्रियाओं (एसवाईएस1.पीआरओसीएलआईबी) आदि जैसे पाठीय डेटा को संग्रहीत करने के लिए किया जाता है और अन्य संचालन प्रणाली में निर्देशिकाओं के साथ फ़ाइलें (ज़िप, टीएआर, आदि) संग्रहित करें। इनका उपयोग द्वि-आधारी कूट (भार प्रतिरूपक या प्रोग्राम ऑब्जेक्ट) को संग्रहीत करने के लिए भी किया जाता है; उस रूप में, वे स्थूलतः यूनिक्स-आधारित प्रणालियों में एआर- आधारित स्थिर पुस्तकालयों के समान हैं। ऐसी अधिकांश संरचनाओं की तरह, एक बार संग्रहीत सदस्य को अद्यतन नहीं किया जा सकता है; सदस्य को हटाया जाना चाहिए, जैसे कि आईईबीयूपीडीटीई उपयोगिता के साथ प्रतिस्थापित किया जाना चाहिए।[6]1989 में एमवीएस डीएफपी 3.2 के जारी होने के बाद से, पीडीएसई (विभाजित डेटा सेट विस्तारित) पीडीएस के एक उन्नत संस्करण के रूप में अस्तित्व में है;[7] उपयोगकर्ता या एप्लिकेशन प्रोग्रामर के दृष्टिकोण से, वे काफी हद तक अपरिवर्तित हैं (कुछ अस्पष्ट विरासत सुविधाओं को हटाने के अतिरिक्त), परन्तु उनका आंतरिक जॉबान्वयन बहुत भिन्न है।
- यूएसएस: यूनिक्स प्रणाली सेवाएं, एमवीएस के भाग के रूप में चलने वाली एक यूनिक्स उप-प्रणाली और यूनिक्स फ़ाइलों, लिपि, जॉबों और प्रोग्रामों को यूनिक्स वातावरण में मेनफ्रेम पर चलाने की अनुमति देता है।
प्रेरणा
मूल रूप से, मेनफ्रेम प्रणाली प्रचय संसाधन की ओर उन्मुख थे। कई प्रचय जॉबों के लिए सेटअप की आवश्यकता होती है, मुख्य भंडारण के लिए विशिष्ट आवश्यकताओं के साथ और चुंबकीय टेप, निजी डिस्क वॉल्यूम और विशेष रूपों के साथ मुद्रक जैसे समर्पित उपकरणों की आवश्यकता होती है।[8] जेसीएल को यह सुनिश्चित करने के साधन के रूप में विकसित किया गया था कि जॉब प्रारंभ होने से पूर्व सभी आवश्यक संसाधन उपलब्ध हैं। उदाहरण के लिए, कई प्रणालियाँ, जैसे कि लिनक्स, आवश्यक डेटासेट की पहचान को संकेत लाइन पर निर्दिष्ट करने की अनुमति देते हैं और इसलिए शैल द्वारा प्रतिस्थापन के अधीन होते हैं, या जॉबावधि पर प्रोग्राम द्वारा उत्पन्न होते हैं। इन प्रणालियों पर संचालन प्रणाली जॉब अनुसूचक को जॉब की आवश्यकताओं के विषय में बहुत कम या कोई सूचना नहीं होती है। इसके विपरीत, जेसीएल सभी आवश्यक डेटासेट और उपकरणों को स्पष्ट रूप से निर्दिष्ट करता है। अनुसूचक जॉब को चलाने के लिए जारी करने से पहले संसाधनों को पूर्व-आवंटित कर सकता है। यह गतिरोध से बचने में सहायता करता है, जहां जॉब A संसाधन R1 रखता है और संसाधन R2 का अनुरोध करता है, जबकि समवर्ती रूप से चलने वाला जॉब B संसाधन R2 रखता है और R1 का अनुरोध करता है। ऐसी स्थितियों में परिकलक संचालक के लिए एकमात्र समाधान यह है कि वह किसी एक जॉब को समाप्त कर दे, जिसे पुनः प्रारंभ करने की आवश्यकता होती है। जॉब कंट्रोल के साथ, यदि जॉब A को चलाने के लिए निर्धारित किया गया है, तो जॉब B तब तक प्रारंभ नहीं किया जाएगा जब तक जॉब A पूर्ण नहीं कर लेता या आवश्यक संसाधन जारी नहीं कर देता।
डॉस और ओएस जेसीएल के लिए सामान्य विशेषताएं
जॉब, चरण और प्रक्रियाएँ
डॉस और ओएस दोनों के लिए जॉब की इकाई जॉब है। किसी जॉब में एक या कई चरण होते हैं, जिनमें से प्रत्येक एक विशिष्ट प्रोग्राम चलाने का अनुरोध होता है। उदाहरण के लिए, संबंधपरक डेटाबेस के दिनों से पूर्व, प्रबंधन के लिए एक मुद्रित विवरणी तैयार करने के जॉब में निम्नलिखित चरण सम्मिलित हो सकते हैं: उचित विवरणी का चयन करने और उन्हें एक अस्थायी फ़ाइल में अनुकरण करने के लिए एक उपयोगकर्ता-लिखित प्रोग्राम; सामान्यतः सामान्य प्रयोजन उपयोगिता का उपयोग करके, अस्थायी फ़ाइल को आवश्यक क्रम में क्रमबद्ध करना; सूचना को इस तरह से प्रस्तुत करने के लिए एक उपयोगकर्ता-लिखित प्रोग्रामजो अंतिम उपयोगकर्ताओं के लिए पढ़ना सरल हो और इसमें उप-योग जैसी अन्य उपयोगी सूचना भी सम्मिलित हो; और मॉनिटर या टर्मिनल पर प्रदर्शन के लिए अंतिम-उपयोगकर्ता सूचना के चयनित पृष्ठों को प्रारूपित करने के लिए एक उपयोगकर्ता-लिखित प्रोग्राम है।
डॉस और ओएस जेसीएल दोनों में पहला कार्ड जॉब कार्ड होना चाहिए, जो:[9]
- जॉब की पहचान करता है।
- सामान्यतः परिकलक सेवा विभाग को उपयुक्त उपयोगकर्ता विभाग को बिल देने में सक्षम बनाने के लिए सूचना प्रदान करता है।
- परिभाषित करता है कि संपूर्ण जॉब को कैसे चलाया जाना है, उदा. पंक्ति में अन्य जॉबों के सापेक्ष इसकी प्राथमिकता है।
प्रक्रियाएं (सामान्यतः प्रोक्स कहलाती हैं) किसी जॉब में डाले गए चरणों या चरणों के समूहों के लिए पूर्व-लिखित जेसीएल हैं। दोनों जेसीएल ऐसी प्रक्रियाओं की अनुमति देते हैं। प्रोक्स का उपयोग उन चरणों को दोहराने के लिए किया जाता है जिनका उपयोग एक ही जॉब में या कई अलग-अलग जॉबों में कई बार किया जाता है। वे प्रोग्रामर का समय बचाते हैं और त्रुटियों के जोखिम को कम करते हैं। एक प्रक्रिया को चलाने के लिए केवल जेसीएल फ़ाइल में एक कार्ड सम्मिलित होता है जो एक निर्दिष्ट फ़ाइल से प्रक्रिया की प्रतिलिपि बनाता है और इसे जॉब धारा में सम्मिलित करता है। साथ ही, प्रोक्स में प्रत्येक उपयोग के लिए प्रक्रिया को अनुकूलित करने के लिए मापदण्ड सम्मिलित हो सकते हैं।
मूल वाक्यविन्यास
डॉस और ओएस जेसीएल दोनों में अधिकतम प्रयोग करने योग्य पंक्ति की लंबाई 80 अक्षर है, क्योंकि जब डॉस/360 और ओएस/360 का पहली बार उपयोग किया गया था तो परिकलक प्रणाली में नया इनपुट प्रदान करने की मुख्य विधि 80-स्तम्भ वाले पंच कार्ड थे।[10] बाद में लंबी अभिलेख लंबाई वाली डिस्क या टेप फ़ाइलों के माध्यम से जॉब प्रस्तुत करना संभव हो गया, परन्तु संचालन प्रणाली के जॉब प्रस्तुति घटकों ने अक्षर 80 के बाद सब कुछ उपेक्षित कर दिया।
कठोरता से कहें तो दोनों संचालन प्रणाली वर्ग प्रति पंक्ति केवल 71 वर्णों का उपयोग करते हैं। अक्षर 73-80 सामान्यतः कार्ड अनुक्रम संख्याएं होती हैं जिन्हें प्रणाली जॉब समाप्ति अभिलेख पर मुद्रित करता है और संचालन प्रणाली द्वारा अभिलेख की गई किसी भी त्रुटि के स्थान की पहचान करने के लिए उपयोगी होता है। अक्षर 72 को सामान्यतः रिक्त छोड़ दिया जाता है, परन्तु इसमें एक गैर-रिक्त अक्षर हो सकता है जो यह दर्शाता है कि जेसीएल विवरण अगले कार्ड पर जारी है।
यूएसएस फ़ाइल नामों को छोड़कर, सभी संकेत, मापदण्ड नाम और मान बड़े अक्षरों में होने चाहिए।
शृंखलाबद्ध इनपुट (नीचे देखें) को छोड़कर सभी पंक्तियाँ एक काट /
से प्रारंभ करना होगा और संचालन प्रणाली प्रक्रियाएं करता है उन्हें दो काट //
से प्रारंभ करना होगा - सदैव पहले स्तम्भ से प्रारंभ करना होगा। हालाँकि, दो अपवाद: सीमांकक विवरण और टिप्पणी विवरण हैं। एक सीमांकक विवरण एक काट और एक तारांकन चिह्न (/*
) से प्रारंभ होता है और ओएस जेसीएल में एक टिप्पणी विवरण का एक युग्म काट और तारांकन चिह्न (//*
) या डॉस जेसीएल में एक तारांकन चिह्न से प्रारंभ होता है।
कई जेसीएल विवरण 71 अक्षरों के भीतर उपयुक्त होने के लिए बहुत लंबे हैं, परन्तु इन्हें अनिश्चित संख्या में निरंतरता कार्डों तक बढ़ाया जा सकता है:
ओएस जेसीएल | डॉस जेसीएल |
---|---|
अंतिम को छोड़कर सभी वास्तविक जेसीएल कार्डों को उस बिंदु पर समाप्त करना जहां वाक्य रचना के लिए अल्पविराम (, ) की आवश्यकता होती है। |
अंतिम को छोड़कर सभी वास्तविक जेसीएल कार्डों को उस बिंदु पर समाप्त करना जहां वाक्य रचना के लिए स्तम्भ 72 में अल्पविराम (, ) और एक गैर-रिक्त वर्ण की आवश्यकता होती है।
|
प्रत्येक निरंतरता कार्ड को स्तम्भ 1 में // और फिर कम से कम 1 स्थान से प्रारंभ करें। |
प्रत्येक निरंतरता कार्ड को रिक्त स्थान से प्रारंभ करें और स्तम्भ 15 में जारी रखें। |
सबसे सामान्य प्रकार के कार्ड की संरचना इस प्रकार है:[11]
ओएस जेसीएल | डॉस जेसीएल |
---|---|
|
|
शृंखलाबद्ध इनपुट
डॉस और ओएस जेसीएल दोनों शृंखलाबद्ध इनपुट की अनुमति देते हैं, अर्थात "कार्ड" जिन्हें संचालन प्रणाली के बजाय एप्लिकेशन प्रोग्राम द्वारा संसाधित किया जाना है। जो डेटा लंबे समय तक रखा जाना है, उसे सामान्यतः डिस्क पर संग्रहीत किया जाएगा, परन्तु पारस्परिक टर्मिनलों का उपयोग सामान्य होने से पहले ऐसी डिस्क फ़ाइलों को बनाने और संपादित करने का एकमात्र तरीका कार्ड पर नए डेटा की आपूर्ति करना था।
डॉस और ओएस जेसीएल के पास शृंखलाबद्ध इनपुट के प्रारम्भ का संकेत देने के अलग-अलग तरीके हैं, परन्तु दोनों अंतिम शृंखलाबद्ध डेटा कार्ड के बाद कार्ड के स्तम्भ 1 पर /*
के साथ शृंखलाबद्ध इनपुट को समाप्त करते हैं। इससे संचालन प्रणाली /*
कार्ड के बाद कार्ड में जेसीएल की प्रोसेसिंग पुनः प्रारंभ कर देता है।[12]
- ओएस जेसीएल: डीडी विवरण का उपयोग शृंखलाबद्ध डेटा, साथ ही डेटा सेट का वर्णन करने के लिए किया जा सकता है। शृंखलाबद्ध डेटा से संबंधित डीडी विवरण में डीडी पहचानकर्ता के बाद एक तारांकन चिह्न (*) होता है, उदाहरण के लिए,
//एसवाईएसIN DD *
है। जेसीएल विवरण को डीडी डेटा विवरण का उपयोग करके शृंखलाबद्ध डेटा के भाग के रूप में सम्मिलित किया जा सकता है।
- डीएलएम नामक एक संजॉब एक सीमांकक निर्दिष्ट करने की अनुमति देता है (व्यतिक्रम /* है)। एक वैकल्पिक सीमांकक निर्दिष्ट करने से जेसीएल को डेटा के रूप में पढ़ा जा सकता है, उदाहरण के लिए पुस्तकालय सदस्य को प्रक्रियाओं की प्रतिलिपि बनाना या आंतरिक पाठक को जॉब प्रस्तुत करना है।
जटिलता
ओएस जेसीएल की अधिकांश जटिलता, विशेष रूप से, डेटासेट सूचना निर्दिष्ट करने के लिए बड़ी संख्या में विकल्पों से उत्पन्न होती है। जबकि यूनिक्स जैसे संचालन प्रणाली पर फ़ाइलों को बाइट्स की क्रमबद्ध धाराओं में सारगर्भित किया जाता है, जिसमें संरचित डेटा को पढ़ने और लिखने का जॉब विशेष रूप से उपयोगकर्ता-स्तरीय प्रोग्रामों (जो अंततः, ऐसी धाराओं को अंतग्रर्हण और उत्सर्जित करना) और डेटा के व्यावहारिक विवरण से संबंधित होता है। उपयोगकर्ता प्रोग्रामों की सूचना के बिना संचालन प्रणाली द्वारा बड़े पैमाने पर भंडारण और अधिगम को नियंत्रित किया जाता है; ओएस/360 और उसके आनुक्रमिको पर डेटासेट उनके फ़ाइल प्रकार और आकार, अभिलेख प्रकार और लंबाई, खंड आकार, चुंबकीय टेप घनत्व जैसी उपकरण-विशिष्ट सूचना और लेबल सूचना को उजागर करते हैं। हालाँकि कई विकल्पों के लिए प्रणाली व्यतिक्रम हैं, फिर भी प्रोग्रामर द्वारा जेसीएल और प्रोग्राम में कोडित सूचना के संयोजन के माध्यम से बहुत कुछ निर्दिष्ट किया जाना शेष है। प्रोग्राम में जितनी अधिक सूचना कोडित की जाएगी, वह उतना ही कम नम्य होगा, क्योंकि प्रोग्राम की सूचना जेसीएल में किसी भी चीज़ को प्रत्यादेश कर देती है; इस प्रकार, अधिकांश सूचना सामान्यतः जेसीएल के माध्यम से प्रदान की जाती है।
जेसीएल की जटिलता के लिए दूसरी व्याख्या किसी जॉब को चलाने के लिए पीसी या यूनिक्स जैसे वातावरण में पाई जाने वाली अपेक्षाओं से भिन्न है।
- निम्न-स्तरीय प्रणाली/360 सीपीयू 1980 के दशक के मध्य के पीसी की तुलना में कम शक्तिशाली और अधिक महंगे थे जिनके लिए एमएस-डॉस रूपांकित किया गया था। ओएस/360 न्यूनतम 32 केबी मेमोरी आकार वाले प्रणाली के लिए था और डॉस/360 न्यूनतम 16 केबी वाले प्रणाली के लिए था। 1964 में प्रणाली/360 की घोषणा के समय एक 360/30 सीपीयू निम्न-स्तरीय सीपीयू-प्रति सेकंड 1.8के से 34.5के निर्देशों को संसाधित करता था।[13] 1981 में पहले आईबीएम पीसी में 16 केबी या 64 केबी मेमोरी थी और यह प्रति सेकंड लगभग 330के निर्देशों को संसाधित करता था।[14][15] परिणामस्वरूप, जेसीएल को परिकलक के लिए संसाधित करना सरल होना था और प्रोग्रामर द्वारा उपयोग में सरली बहुत कम प्राथमिकता थी। इस युग में प्रोग्रामर परिकलक की तुलना में बहुत सस्ते थे।
- जेसीएल को प्रचय संसाधन के लिए रूपांकित किया गया था। इस प्रकार, इसे संचालन प्रणाली को सब कुछ बताना होगा, जिसमें एक चरण के परिणाम के आधार पर क्या करना है। उदाहरण के लिए,
DISP=(NEW,CATLG,DELETE)
इसका अर्थ है कि यदि प्रोग्राम सफलतापूर्वक चलता है, तो एक नई फ़ाइल बनाएं और उसे सूचीबद्ध करें; अन्यथा नई फ़ाइल हटाएँ. पीसी पर चलने वाले प्रोग्राम प्रायः समस्याओं से संसाधित करने के बाद सफाई के लिए उपयोगकर्ता पर निर्भर करते हैं। - प्रणाली/360 यंत्रों को एक संगठन में सभी उपयोगकर्ताओं द्वारा साझा करने के लिए रूपांकित किया गया था। तो
JOB
कार्ड संचालन प्रणाली को बताता है कि उपयोगकर्ता के खाते (IS198T30500
) को कैसे बिल करना है, भंडारण की पूर्वनिर्धारित मात्रा और अन्य संसाधन (CLASS=L
) और कई अन्य चीजों को कैसे आवंटित किया जा सकता हैं।//SYSPRINT DD SYSOUT=*
परिकलक को प्रोग्राम के अभिलेख को समर्पित मुद्रक पर मुद्रण करने के लिए कहता है जो साधारण कागज के साथ लोड होता है, न कि किसी अन्य मुद्रक पर जो अलेख चेक के साथ लोड किया जा सकता है।DISP=SHR
संचालन प्रणाली को बताता है कि अन्य प्रोग्राम एक ही समय मेंOLDFILE
पढ़ सकते हैं।
डॉस/360 और ओएस/360 संचालन प्रणाली के बाद के संस्करण मूल जेसीएल की अधिकांश विशेषताओं को सुरक्षित रखते हैं - हालाँकि ग्राहकों को अपनी सभी जेसीएल फ़ाइलों को पुनः लिखने के लिए विवश करने से बचने के लिए कुछ सरलीकरण किया गया है।[citation needed] कई उपयोगकर्ता जेसीएल विवरण के किसी भी सेट को एक प्रक्रिया के रूप में सहेजते हैं जिसका उपयोग एक या दो से अधिक होने की संभावना है।[16]
ओएस जेसीएल की वाक्य रचना प्रणाली/360 कोडांतरण लैंग्वेज में मैक्रो के वाक्य रचना के समान है और इसलिए प्रोग्रामर उस समय परिचित रहे होंगे जब कई प्रोग्राम कोडांतरण लैंग्वेज में कोडित किए गए थे।
डॉस जेसीएल
स्थितीय मापदण्ड
//TLBL TAPEFIL,'COPYTAPE.JOB',,,,2
//ASSGN SYS005,200
//DLBL DISKFIL,'COPYTAPE.JOB',0,SD
//EXTENT SYS005,VOL01,1,0,800,1600
डॉस जेसीएल मापदण्ड स्थितीय हैं, जिससे उन्हें पढ़ना और लिखना कठिन हो जाता है, परन्तु प्रणाली के लिए पदव्याख्या करना सरल हो जाता है।
- प्रोग्रामर को यह स्मरण रखना चाहिए कि प्रत्येक प्रकार के विवरण में कौन सा पद किस स्थिति में जाता है।
- यदि कुछ वैकल्पिक मापदण्ड छोड़ दिए गए हैं परन्तु बाद में सम्मिलित किए गए हैं, तो छोड़े गए मापदण्ड को बिना किसी रिक्त स्थान के अल्पविराम द्वारा दर्शाया जाना चाहिए, जैसा कि ऊपर टीएलबीएल विवरण में है।
डॉस जेसीएल कुछ हद तक ओएस जेसीएल की तुलना में कम मापदंडों के साथ अधिक विवरणों का उपयोग करके स्थितीय मापदंडों की कठिनाइयों को कम करता है। उदाहरण में एएसएसजीएन, डीएलबीएल और ईएक्सटीईएनटी विवरण ओएस जेसीएल में एकल DD
विवरण के समान ही जॉब करते हैं (यह निर्दिष्ट करते हुए कि एक नई डिस्क फ़ाइल को कहाँ संग्रहीत किया जाना चाहिए)।
उपकरण निर्भरता
मूल डॉस/360 और डॉस/वीएस के अधिकांश संस्करणों में उपकरण का मॉडल संख्या निर्दिष्ट करना पड़ता था, जिसका उपयोग प्रत्येक डिस्क या टेप फ़ाइल के लिए किया जाना था - यहां तक कि उपस्थित फ़ाइलों के लिए और अस्थायी फ़ाइलों के लिए भी, जिन्हें हटा दिया जाएगा। जॉब का अंत, इसका अर्थ यह था कि यदि कोई ग्राहक अधिक आधुनिक उपकरणों में अपग्रेड करता है, तो कई जेसीएल फाइलों को परिवर्तित करना होगा।
बाद में डॉस/360 वर्ग के सदस्यों ने उन स्थितियों की संख्या कम कर दी जिनमें उपकरण मॉडल संख्या की आवश्यकता होती थी।
मैन्युअल फ़ाइल आवंटन
डॉस/360 को मूल रूप से प्रोग्रामर को डीएएसडी पर सभी फ़ाइलों का स्थान और आकार निर्दिष्ट करने की आवश्यकता थी। EXTENT
कार्ड उस प्रबलता को निर्दिष्ट करता है जिस पर सीमा स्थित है, आरंभिक पूर्णपंक्ति और पंक्ति की संख्या हैं। जेड/वीएसई के लिए एक फ़ाइल में विभिन्न प्रबलता पर 256 विस्तार तक हो सकते हैं।
ओएस जेसीएल
ओएस जेसीएल में तीन मूल विवरण प्रकार होते हैं:[17]
JOB
विवरण, जो जॉब के प्रारम्भ की पहचान करते है और संपूर्ण जॉब के विषय में सूचना, जैसे बिलिंग, रन प्राथमिकता, समय और स्थान सीमा है।EXEC
विवरण, जो जॉब के इस चरण में निष्पादित किए जाने वाले प्रोग्राम या प्रक्रिया[18] की पहचान करता है और चरण के विषय में सूचना, जिसमें किसी चरण को चलाने या छोड़ने के प्रतिबन्ध भी सम्मिलित हैं।DD
(डेटा परिलैंग्वेज) विवरण, जो एक चरण में उपयोग की जाने वाली डेटा फ़ाइल की पहचान करते हैं और उस फ़ाइल के विषय में विस्तृत सूचना देते हैं।DD
विवरण के भीतर किसी भी क्रम में हो सकते हैं।
प्रारम्भ से ही, ओएस वर्ग के लिए जेसीएल (जेड/ओएस तक और इसमें सम्मिलित) अधिक सुनम्य और उपयोग में सरल था।
निम्नलिखित उदाहरण वाक्य रचना की पुरानी शैली का उपयोग करते हैं जो 1964 में प्रणाली/360 के प्रमोचन से ही प्रदान की गई थी। पुरानी वाक्य रचना अभी भी उन जॉबों में काफी सामान्य है जो केवल सामान्य परिवर्तनों के साथ दशकों से चल रही हैं।
जेसीएल विवरणों को कूटलेखन करने के नियम
प्रत्येक जेसीएल विवरण को पाँच क्षेत्रों में विभाजित किया गया है:[19]
पहचानकर्ता-क्षेत्र नाम-क्षेत्र संचालन-क्षेत्र मापदण्ड-क्षेत्र टिप्पणियाँ-क्षेत्र
पहचानकर्ता-क्षेत्र को नाम-क्षेत्र के साथ जोड़ा जाना चाहिए, अर्थात उनके मध्य कोई रिक्त स्थान नहीं होना चाहिए।
- पहचानकर्ता-क्षेत्र (
//
): पहचानकर्ता क्षेत्र प्रणाली को इंगित करता है कि एक विवरण डेटा के बजाय एक जेसीएल विवरण है। पहचानकर्ता क्षेत्र में निम्नलिखित सम्मिलित हैं:- सीमांकक विवरण को छोड़कर, सभी जेसीएल विवरणों के स्तम्भ 1 और 2 में
//
सम्मिलित हैं। - सीमांकक विवरण के स्तम्भ 1 और 2 में
/*
सम्मिलित हैं। - जेसीएल टिप्पणी विवरण के स्तम्भ 1, 2 और 3 में
//*
सम्मिलित हैं।
- सीमांकक विवरण को छोड़कर, सभी जेसीएल विवरणों के स्तम्भ 1 और 2 में
- नाम-क्षेत्र: नाम क्षेत्र एक विशेष विवरण की पहचान करता है ताकि अन्य विवरण और प्रणाली इसे संदर्भित कर सकें। जेसीएल विवरणों के लिए, इसे इस प्रकार कोडित किया जाना चाहिए:
- नाम स्तम्भ 3 से प्रारंभ होना चाहिए।
- नाम 1 से 8 अक्षरांकीय या राष्ट्रीय (
$
,#
,@
) लिपिचिन्ह है। - पहला अक्षर वर्णानुक्रमिक होना चाहिए।
- नाम के बाद कम-से-कम एक रिक्त स्थान अवश्य होना चाहिए।
- संचालन-क्षेत्र: संचालन क्षेत्र विवरण के प्रकार को निर्दिष्ट करता है, या, संकेत विवरण के लिए, संकेत को निर्दिष्ट करता है। संचालन-क्षेत्र को इस प्रकार कोडित किया जाना चाहिए:
- संचालन क्षेत्र में विवरण के लिए वाक्य रचना बॉक्स में लिपिचिन्ह सम्मिलित होते हैं।
- संचालन नाम क्षेत्र का अनुसरण करता है।
- संचालन से पहले और बाद में कम-से-कम एक रिक्त होना चाहिए।
- संचालन में से एक
JOB
,EXEC
औरDD
होगा।
- मापदण्ड-क्षेत्र: मापदण्ड क्षेत्र, जिसे कभी-कभी संजॉब क्षेत्र भी कहा जाता है, में अल्पविराम द्वारा अलग किए गए मापदण्ड होते हैं। मापदण्ड क्षेत्र को इस प्रकार कोडित किया जाना चाहिए:
- मापदण्ड क्षेत्र संचालन क्षेत्र का अनुसरण करता है।
- मापदण्ड क्षेत्र के पहले कम-से-कम एक रिक्त स्थान होना चाहिए।
- मापदण्ड क्षेत्र में मापदण्ड होते हैं जो संकेत शब्द होते हैं जिनका उपयोग प्रोग्राम या डेटासेट नाम जैसी सूचना प्रदान करने के लिए विवरण में किया जाता है।
- टिप्पणियाँ-क्षेत्र: इसमें टिप्पणियाँ सम्मिलित है। टिप्पणियाँ-क्षेत्र को निम्नानुसार कोडित किया जाना चाहिए:
- टिप्पणी क्षेत्र मापदण्ड क्षेत्र का अनुसरण करती है।
- टिप्पणी क्षेत्र के पहले कम-से-कम एक रिक्त स्थान अवश्य होना चाहिए।
संकेत शब्द मापदण्ड
//NEWFILE DD DSN=MYFILE01,UNIT=DISK,SPACE=(TRK,80,10),
// DCB=(LRECL=100,BLKSIZE=1000),
// DISP=(NEW,CATLG,DELETE)
ओएस जेसीएल विवरण के सभी प्रमुख मापदण्ड संकेत शब्द द्वारा पहचाने जाते हैं और इन्हें किसी भी क्रम में प्रस्तुत किया जा सकता है। इनमें से कुछ में दो या दो से अधिक उप-मापदण्ड होते हैं, जैसे उपरोक्त उदाहरण में SPACE
(एक नई फ़ाइल को कितना डिस्क स्थान आवंटित करना है) और DCB
(फ़ाइल के प्रदर्शन का विस्तृत विवरण) है। उप-मापदण्ड कभी-कभी स्थितीय होते हैं, जैसे कि SPACE
में, परन्तु सबसे जटिल मापदण्ड, जैसे DCB
में, संकेत शब्द उप-मापदण्ड होते हैं।
स्थितीय मापदण्ड को संकेत शब्द मापदण्ड से पहले होना चाहिए। संकेत शब्द मापदण्ड सदैव बराबर चिह्न =
का उपयोग करके किसी संकेत शब्द को मान निर्दिष्ट करते हैं।[20]
डेटा अभिगम (डीडी विवरण)
DD
विवरण का उपयोग डेटा को संदर्भित करने के लिए किया जाता है। यह विवरण किसी प्रोग्राम के डेटासेट के आंतरिक विवरण को बाहरी उपकरणों पर डेटा से जोड़ता है: डिस्क, टेप, कार्ड, मुद्रण इत्यादि। डीडी उपकरण प्रकार (उदाहरण के लिए '181', '2400-5','टेप') जैसी सूचना प्रदान कर सकता है)। टेप या डिस्क के लिए एक प्रबलता संख्या और डेटा फ़ाइल का विवरण, फ़ाइल की पहचान करने के लिए उपयोग किए जाने वाले प्रोग्राम में डेटा कंट्रोल खंड (DCB) के बाद DCB
उप-मापदण्ड कहा जाता है।
फ़ाइल का वर्णन करने वाली सूचना तीन स्रोतों से आ सकती है: डीडी कार्ड की सूचना, टेप या डिस्क पर संग्रहीत उपस्थित फ़ाइल के लिए डेटासेट लेबल सूचना और प्रोग्राम में कोडित डीसीबी मैक्रो है। जब फ़ाइल खोली जाती है तो यह डेटा मर्ज हो जाता है, जिसमें डीडी सूचना को लेबल सूचना पर प्राथमिकता दी जाती है और डीसीबी सूचना को दोनों पर प्राथमिकता दी जाती है। अद्यतन विवरण फिर डेटासेट लेबल पर वापस लिखा जाता है। यदि गलत डीसीबी सूचना प्रदान की जाती है तो इससे अनपेक्षित परिणाम हो सकते हैं।[21]
ऊपर सूचीबद्ध मापदंडों और विभिन्न अभिगम विधियों और उपकरणों के लिए विशिष्ट सूचना के कारण डीडी विवरण सबसे जटिल जेसीएल विवरण है। एक आईबीएम संदर्भ में डीडी विवरण का मैनुअल विवरण 130 से अधिक पृष्ठों का है - जो कि जेओबी और ईएक्सईसी विवरण के संयुक्त विवरण से दोगुने से भी अधिक है।[22]
डीडी विवरण पंक्ति में डेटा को जॉब धारा में अन्तःक्षेप करने की अनुमति देता है। यह आईडीसीएएमएस, एसओआरटी इत्यादि जैसी उपयोगिताओं को कंट्रोल सूचना प्रदान करने के साथ-साथ प्रोग्रामों को इनपुट डेटा प्रदान करने के लिए उपयोगी है।
उपकरण स्वतंत्रता
प्रारंभ से ही, संचालन प्रणाली के ओएस वर्ग के लिए जेसीएल ने उच्च स्तर की उपकरण स्वतंत्रता की प्रस्तुति की। यहां तक कि नई फाइलों के लिए भी, जिन्हें जॉब समाप्त होने के बाद रखा जाना था, कोई भी उपकरण प्रकार को सामान्य शब्दों में निर्दिष्ट कर सकता है, उदाहरण के लिए, UNIT=DISK
, UNIT=TAPE
, या UNIT=एसवाईएसSQ
(टेप या डिस्क) है। अवश्य ही, यदि यह महत्व रखता है तो कोई मॉडल संख्या या यहां तक कि एक विशिष्ट उपकरण पता भी निर्दिष्ट कर सकता है।[23]
प्रक्रियाएँ
प्रक्रियाएं एक या अधिक ईएक्सईसी पीजीएम= और डीडी विवरणों को समूहीकृत करने और फिर उन्हें ईएक्सईसी पीआरओसी=प्रोक नाम या केवल पीआरओसी प्रोक नाम के साथ अनुप्रयुक्त करने की अनुमति देता हैं। [24]
प्रक्रियाएं पुस्तकालय नामक सुविधा पूर्व-भंडारण प्रक्रियाओं की अनुमति देता है।
पीआरओसी और पीईएनडी
प्रक्रियाओं को // PEND
विवरण के साथ प्रक्रिया को समाप्त करके जॉब धारा में भी सम्मिलित किया जा सकता है , मिल किया जा सकता है, फिर इसे नाम से अनुप्रयुक्त किया जा सकता है जैसे कि यह एक प्रक्रिया पुस्तकालय में था।
मापदण्डीकृत प्रक्रियाएं
ओएस जेसीएल प्रक्रियाओं को प्रारंभ से ही मानकीकृत किया गया था, जिससे वे मैक्रो या यहां तक कि सरल उपनेमिका की तरह बन गए और इस प्रकार स्थितियों की एक विस्तृत श्रृंखला में उनकी पुन: प्रयोज्यता बढ़ गई।[25]
//MYPROC PROC FNAME=MYFILE01,SPTYPE=TRK,SPINIT=50,SPEXT=10,LR=100,BLK=1000
.....
//NEWFILE DD DSN=&FNAME,UNIT=DISK,SPACE=(&SPTYPE,&SPINIT,&SPEXT),
// DCB=(LRECL=&LR,BLKSIZE=&BLK),DISP=(NEW,CATLG,DELETE)
....
इस उदाहरण में, एम्परसेंड &
से प्रारंभ होने वाले सभी मान मापदण्ड हैं जो तब निर्दिष्ट किए जाएंगे जब कोई जॉब अनुरोध करती है कि प्रक्रिया का उपयोग किया जाए। पीआरओसी विवरण, प्रक्रिया को एक नाम देने के अतिरिक्त, प्रोग्रामर को प्रत्येक मापदण्ड के लिए व्यतिक्रम मान निर्दिष्ट करने की अनुमति देता है। इसलिए कोई इस उदाहरण में एक प्रक्रिया का उपयोग करके कई अलग-अलग आकार और प्रदर्शन की नई फ़ाइलें बना सकता है। उदाहरण के लिए:
//JOB01 JOB ..........
//STEP01 EXEC MYPROC FNAME=JOESFILE,SPTYPE=CYL,SPINIT=10,SPEXT=2,LR=100,BLK=2000
or
//JOB02 JOB ..........
//STEP01 EXEC MYPROC FNAME=SUESFILE,SPTYPE=TRK,SPINIT=500,SPEXT=100,LR=100,BLK=5000
संदर्भ
बहु-चरणीय जॉबों में, बाद के चरण में किसी फ़ाइल को पूर्ण रूप से निर्दिष्ट करने के बजाय रेफरबैक का उपयोग किया जा सकता है, जिसे पहले चरण में पहले ही निर्दिष्ट किया जा चुका है। उदाहरण के लिए:
//MYPROC ................
//MYPR01 EXEC PGM=..........
//NEWFILE DD DSN=&MYFILE,UNIT=DISK,SPACE=(TRK,50,10),
// DCB=(LRECL=100,BLKSIZE=1000),DISP=(NEW,CATLG,DELETE)
....
//MYPR02 EXEC PGM=..........
//INPUT01 DD DSN=*.MYPR01.NEWFILE
यहाँ, MYPR02
चरण MYPR01
में NEWFILE
के रूप में पहचानी गई फ़ाइल का उपयोग करता है (DSN
का अर्थ है "डेटासेट नाम" और फ़ाइल का नाम निर्दिष्ट करता है; एक डीएसएन 44 वर्णों से अधिक नहीं हो सकता है)।[26]
ऐसी जॉबों में जिनमें जॉब-विशिष्ट जेसीएल और प्रक्रिया कॉल का मिश्रण होता है, जॉब-विशिष्ट चरण उस फ़ाइल को वापस संदर्भित कर सकता है जो प्रक्रिया में पूर्णतया से निर्दिष्ट थी, उदाहरण के लिए:
//MYJOB JOB ..........
//STEP01 EXEC MYPROC Using a procedure
//STEP02 EXEC PGM=......... Step which is specific to this job
//INPUT01 DD DSN=*.STEP01.MYPR01.NEWFILE
जहाँ DSN=*.STEP01.MYPR01.NEWFILE
का अर्थ है "इस जॉब के चरण STEP01
द्वारा प्रयुक्त प्रक्रिया के चरण MYPR01
में NEWFILE
के रूप में पहचानी गई फ़ाइल का उपयोग करें"। प्रक्रिया के नाम के बजाय उस चरण के नाम का उपयोग करना, जिसे प्रक्रिया कहा जाता है, एक प्रोग्रामर को एक ही जॉब में एक ही प्रक्रिया को कई बार उपयोग करने की अनुमति देता है, बिना किसी भ्रम के कि रेफरबैक में प्रक्रिया का कौन सा उदाहरण उपयोग किया जाता है।
टिप्पणियाँ
जेसीएल फ़ाइलें लंबी और जटिल हो सकती हैं और लैंग्वेज को पढ़ना सरल नहीं है। ओएस जेसीएल प्रोग्रामर को दो प्रकार की व्याख्यात्मक टिप्पणी सम्मिलित करने की अनुमति देता है:
- जेसीएल विवरण के समान ही। उन्हें स्तम्भ 72 में एक निरंतरता वर्ण (पारंपरिक रूप से
X
) , उसके बाद अगली पंक्ति के स्तम्भ 1-3 में//
रखकर बढ़ाया जा सकता है। - जिन पंक्तियों में केवल टिप्पणी होती है, उनका उपयोग प्रायः स्थानीय विवरणों के बजाय जेसीएल की समग्र संरचना के विषय में प्रमुख बिंदुओं को समझाने के लिए किया जाता है। केवल-टिप्पणी पंक्तियों का उपयोग लंबी, जटिल जेसीएल फ़ाइलों को अनुभागों में विभाजित करने के लिए भी किया जाता है।
//MYJOB JOB ..........
//* Lines containing only comments.
//******** Often used to divide JCL listing into sections ********
//STEP01 EXEC MYPROC Comment 2 on same line as statement
//STEP02 EXEC PGM=......... Comment 3 has been extended and X
// overflows into another line.
//INPUT01 DD DSN=STEP01.MYPR01.NEWFILE
इनपुट फ़ाइलों को जोड़ना
ओएस जेसीएल प्रोग्रामर को इनपुट फ़ाइलों को संयोजित (श्रृंखला) करने की अनुमति देता है ताकि वे प्रोग्राम में एक फ़ाइल के रूप में दिखाई दें, उदाहरण के लिए
//INPUT01 DD DSN=MYFILE01,DISP=SHR
// DD DSN=JOESFILE,DISP=SHR
// DD DSN=SUESFILE,DISP=SHR
दूसरे और तीसरे विवरण का नाम क्षेत्र में कोई मान नहीं है, इसलिए ओएस उन्हें संयोजन के रूप में मानता है। फ़ाइलें समान मूल प्रकार (लगभग सदैव अनुक्रमिक) की होनी चाहिए और उनकी अभिलेख लंबाई समान होनी चाहिए, हालांकि खंड की लंबाई समान नहीं होनी चाहिए।
ओएस के प्रारंभिक संस्करणों में (निश्चित रूप से ओएस/360 आर21.8 से पहले) खंड की लंबाई घटते क्रम में होनी चाहिए, या उपयोगकर्ता को प्रत्येक दृष्टांत का निरीक्षण करना होगा और नामांकित डीडी विवरणों में पाई गई अधिकतम खंड लंबाई को जोड़ना होगा, उदाहरण के लिए ,
//INPUT01 DD DSN=MYFILE01,DISP=SHR,BLKSIZE=800
// DD DSN=JOESFILE,DISP=SHR (BLKSIZE assumed to be equal to or less than 800)
// DD DSN=SUESFILE,DISP=SHR (BLKSIZE assumed to be equal to or less than 800)
ओएस के बाद के संस्करणों में (निश्चित रूप से उपयुक्त चयन योग्य इकाइयों के साथ ओएस/एमवीएस आर3.7 के बाद) ओएस स्वयं, आवंटन के पर्यन्त, प्रत्येक उदाहरण का एक संयोजन में निरीक्षण करेगा और जो अधिकतम खंड लंबाई पाई गई थी उसे प्रतिस्थापित करेगा।
एक सामान्य फ़ॉलबैक केवल उपकरण पर अधिकतम संभव खंड लंबाई निर्धारित करना था और उसे नामित डीडी विवरण पर निर्दिष्ट करना था, उदाहरण के लिए,
//INPUT01 DD DSN=MYFILE01,DISP=SHR,BLKSIZE=8000
// DD DSN=JOESFILE,DISP=SHR (BLKSIZE assumed to be equal to or less than 8000)
// DD DSN=SUESFILE,DISP=SHR (BLKSIZE assumed to be equal to or less than 8000)
इस फ़ॉलबैक का उद्देश्य यह सुनिश्चित करना था कि अभिगम विधि एक इनपुट बफ़र समूह आवंटित करेगी जो किसी भी और सभी निर्दिष्ट डेटासेट को समायोजित करने के लिए पर्याप्त बड़ा था।
सप्रतिबंध प्रसंस्करण
ओएस आशा करता है कि प्रोग्राम एक पुनरावृत्ति कूट व्यवस्थित करें जो निर्दिष्ट करता है कि प्रोग्राम ने विचार किया था कि यह कितना सफल था। सबसे सामान्य पारंपरिक मान हैं:[27]: p.87
- 0 = सामान्य - सब ठीक है।
- 4 = चेतावनी - छोटी त्रुटियाँ या समस्याएँ है।
- 8 = त्रुटि - महत्वपूर्ण त्रुटियाँ या समस्याएँ है।
- 12 = बड़ी त्रुटियाँ या समस्याएँ, परिणाम (जैसे फ़ाइलें या उत्पादित अभिलेख) पर विश्वास नहीं किया जाना चाहिए।
- 16 = टर्मिनल त्रुटि - बहुत गंभीर समस्याएँ, परिणामों का उपयोग न करें!
ओएस जेसीएल पुनरावृत्ति कूट को COND
(स्थिति कूट) संदर्भित करता है और इसका उपयोग यह तय करने के लिए कर सकता है कि बाद के चरणों को चलाना है या नहीं। हालाँकि, अधिकांश आधुनिक प्रोग्रामिंग लैंग्वेजओं के विपरीत, ओएस जेसीएल में सशर्त चरणों को निष्पादित नहीं किया जाता है यदि निर्दिष्ट स्थिति सत्य है - इस प्रकार स्मरक की उत्पत्ति करता है, यदि यह सत्य है, तो बिना कूट चलाए आगे बढ़ें। स्थिति को और अधिक जटिल बनाने के लिए, प्रतिबंध को केवल उस चरण के बाद ही निर्दिष्ट किया जा सकता है जिसका वह संदर्भ देता है। उदाहरण के लिए:
//MYJOB JOB ...........
//STEP01 EXEC PGM=PROG01
....
//STEP02 EXEC PGM=PROG02,COND=(4,GT,STEP01)
....
//STEP03 EXEC PGM=PROG03,COND=(8,LE)
....
//STEP04 EXEC PGM=PROG04,COND=(ONLY,STEP01)
....
//STEP05 EXEC PGM=PROG05,COND=(EVEN,STEP03)
....
युक्ति:
STEP01
रन करें और इसका पुनरावृत्ति कूट एकत्र करें।STEP02
रन नहीं करें, यदि संख्या 4 से बड़ी है,STEP01
का पुनरावृत्ति कूट है।STEP03
रन नहीं करें, यदि संख्या 8 किसी पिछले पुनरावृत्ति कूट से कम या उसके बराबर है।STEP04
रन करें, केवलSTEP01
असामान्य रूप से समाप्त हो गया।STEP05
रन करें, भले हीSTEP03
असामान्य रूप से समाप्त हो गया।
इसका अनुवाद निम्नलिखित छद्मकूट में होता है:
रन STEP01 यदि STEP01 का पुनरावृत्ति कूट 4 से अधिक या उसके बराबर है रन STEP02 यदि अंत यदि कोई पिछला पुनरावृत्ति कूट 8 से कम है रन STEP03 यदि अंत यदि STEP01 असामान्य रूप से समाप्त हो गया तो रन STEP04 यदि अंत यदि STEP03 असामान्य रूप से समाप्त हो गया तो रन STEP05 अन्य रन STEP05 यदि अंत
ध्यान दें कि COND
विवरणों वाले चरणों को पीछे की ओर पढ़कर कोई भी उन्हें काफी सरलता से समझ सकता है। यह तार्किक स्थानान्तरण का एक उदाहरण है। हालाँकि, बाद में आईबीएम ने जेसीएल में आईएफ स्थिति प्रस्तुत की, जिससे COND
मापदण्ड को बनाए रखते हुए प्रोग्रामर के लिए कूटलेखन को कुछ हद तक सरल बना दिया गया (उपस्थित जेसीएल में परिवर्तन करने से बचने के लिए COND parm
का उपयोग किया जाता है)।
COND
मापदण्ड को JOB
विवरण पर भी निर्दिष्ट किया जा सकता है। यदि ऐसा है तो प्रणाली किसी जॉब के प्रत्येक चरण के लिए समान पुनरावृत्ति कूट परीक्षण करता है। यदि जॉब विवरण पुनरावृत्ति कूट परीक्षण संतुष्ट हो जाता है, तो जॉब समाप्त हो जाता है।[28]
उपयोगिताएँ
जॉब डेटा के प्रसंस्करण में सहायता के लिए कई आईबीएम मेनफ्रेम उपयोगिता प्रोग्रामों का उपयोग करती हैं। प्रचय संसाधन में उपयोगिताएँ सबसे उपयोगी होती हैं। उपयोगिताओं को तीन समूहों में बांटा जा सकता है:
- डेटा सेट उपयोगिताएँ - डेटा सेट बनाएं, मुद्रण करें, अनुकरण करें, स्थानांतरित करें और हटाएं।
- प्रणाली उपयोगिताएँ - सूची और अन्य प्रणाली सूचना को बनाए रखें और प्रबंधित करें।
- अभिगम विधि सेवाएँ - वास्तविक भंडारण अभिगम विधि (VSAM) और गैर-वीएसएएम डेटा सेट को प्रसंस्करण करें।
उपयोग में कठिनाई
ओएस जेसीएल निर्विवाद रूप से जटिल है[29]और इसे "उपयोक्ता शत्रुतापूर्ण" के रूप में वर्णित किया गया है।[30][31] जैसा कि जेसीएल पर एक निर्देशात्मक पुस्तक में पूछा गया है, जब जॉब कंट्रोल लैंग्वेज की बात आती है तो परिष्कृत प्रोग्रामर भी संकोच क्यों करते हैं?[32] कि जेसीएल भयानक था, और केवल 'डाई-हार्ड' परिकलक-प्रकारों ने ही इसे समझा" और जेसीएल के विवरणों का पता लगाने का जॉब किसी और को सौंप दिया।[32] ऐसा रवैया प्रोग्रामिंग लैंग्वेजओं के पाठ्यपुस्तकों में पाया जा सकता है, जो लैंग्वेज पर ध्यान केंद्रित करना पसंद करते हैं न कि इसमें प्रोग्राम कैसे चलाए जाते हैं। जैसा कि एक फोरट्रान चतुर्थ पाठ्यपुस्तक ने डब्ल्यूएटीएफओआर संकलनकर्ता से संभावित त्रुटि संदेशों को सूचीबद्ध करते समय कहा था: क्या आप इतने बुध्दिहीन हैं कि अपने स्वयं के 'डीडी' प्रणाली कंट्रोल कार्ड लिखने का प्रयास कर रहे हैं? तुरंत बंद करो और रुको; सहायता के लिए दौड़ें, चलें नहीं।[33]
फिर भी, जेसीएल में गई कुछ पुस्तकों में इस बात पर विस्तार से जोर दिया गया है कि एक बार जब इसे कम-से-कम कुछ हद तक कुशल स्तर तक सीख लिया जाता है, तो व्यक्ति को अधिष्ठापन-व्यापक व्यतिक्रम से मुक्ति मिल जाती है और आईबीएम प्रणाली आपके जॉबभार को कैसे संसाधित करता है, इस पर उन्नत कंट्रोल मिलता है।[32][29] एक अन्य पुस्तक ने जटिलता पर टिप्पणी की परन्तु कहा, हिम्मत रखो। पिछले अध्याय से आपको जो जेसीएल क्षमता प्राप्त होगी वह सब है जिसकी अधिकांश प्रोग्रामर को कभी आवश्यकता होगी।[29]
जॉब प्रवेश कंट्रोल लैंग्वेज
आईबीएम मेनफ्रेम प्रणाली पर जॉब प्रवेश कंट्रोल लैंग्वेज या जेईसीएल संकेत लैंग्वेज कंट्रोल विवरण का समूह है जो स्पूलन उप-प्रणाली के लिए सूचना प्रदान करता है - जेड/ओएस पर जेईएस2 या जेईएस3 या जेड/वीएसई के लिए वीएसई/पावर) है। जेईसीएल विवरण निर्दिष्ट कर सकते हैं कि किस नेटवर्क परिकलक पर जॉब धारा चलाना है, कब जॉब चलाना है और परिणामी आउटपुट कहां भेजना है।[27]
जेईसीएल जॉब कंट्रोल लैंग्वेज (JCL) से भिन्न है, जो संचालन प्रणाली को निर्देश देता है कि जॉब कैसे चलाया जाए।
तीनों परिवेशों के लिए जेईसीएल के अलग-अलग संस्करण हैं।
ओएस/360
ओएस/360 दूरस्थ जॉब प्रवेश (प्रोग्राम संख्या 360एस-आरसी-536) के लिए जॉब प्रवेश कंट्रोल लैंग्वेज के प्रारंभिक संस्करण में इनपुट अभिलेख के स्तम्भ 1-2 में पहचानकर्ता ..
का उपयोग किया गया था और इसमें एकल कंट्रोल विवरण JED
(जॉब प्रवेश परिलैंग्वेज) सम्मिलित है। LOGON
, LOGOFF
, और STATUS
जैसे जॉब निष्पादित्र का प्रारम्भ भी ..
से हुआ।[34]
प्री-जेईएस जेईसीएल
हालाँकि यह शब्द अभी तक विकसित नहीं हुआ था, एचएएसपी में /*
वाक्य - विन्यास सहित जेईएस के जेईसीएल बनने के समान जॉबक्षमता थी।
जेड/ओएस
जेईएस2 के लिए जेईसीएल विवरण /*
से प्रारंभ होते हैं, जेईएस3 के लिए, दूरस्थ /*SIGNON
और/*SIGNOFF
संकेत को छोड़कर वे //*
से प्रारंभ होते हैं, दोनों प्रणालियों के लिए संकेत पूर्णतया से भिन्न हैं।
जेईएस2 जेईसीएल
निम्नलिखित जेईएस2 जेईसीएल विवरणों का उपयोग जेड/ओएस 1.2.0 में किया जाता है।[35]
जेईसीएल विवरण | जॉब | Example |
---|---|---|
/*$command |
एक प्रचालक (कंसोल) संकेत सम्मिलित करता है। | /*$S PRINTER3 [36]
|
/*JOBPARM |
जॉब से संबंधित मापदंडों के लिए मान निर्दिष्ट करता है। | /*JOBPARM TIME=10
|
/*MESSAGE |
प्रचालक कंसोल को एक संदेश भेजता है। | /*MESSAGE CALL JOE AT HOME IF JOB ABENDS
|
/*NETACCT |
नेटवर्क जॉब के लिए खाता संख्या निर्दिष्ट करता है। | /*NETACCT 12345
|
/*NOTIFY |
अधिसूचना संदेशों के लिए गंतव्य निर्दिष्ट करता है। | /*NOTIFY SAM
|
/*OUTPUT |
एसवाईएसओयूटी डेटासेट विकल्प निर्दिष्ट करता है। | /*OUTPUT FORMS=BILL
|
/*PRIORITY |
जॉब चयन प्राथमिकता निर्धारित करता है। | /*PRIORITY 15
|
/*ROUTE |
आउटपुट गंतव्य या निष्पादन नोड निर्दिष्ट करता है। | /*ROUTE PRT RMT5
|
/*SETUP |
अंक बढ़ाने या अन्य ऑफ़लाइन संचालन का अनुरोध करता है। | /*SETUP TAPE01,TAPE02
|
/*SIGNOFF |
दूरस्थ सत्र समाप्त होता है। | /*SIGNOFF
|
/*SIGNON |
दूरस्थ सत्र प्रारंभ होता है। | /*SIGNON REMOTE5 password
|
/*XEQ |
निष्पादन नोड निर्दिष्ट करता है। | /*XEQ DENVER
|
/*XMIT |
जॉब या डेटासेट को किसी अन्य नेटवर्क नोड पर प्रेषित करने का संकेत देता है। | /*XMIT NYC
|
जेईएस3 जेईसीएल
निम्नलिखित जेईएस3 जेईसीएल विवरणों का उपयोग जेड/ओएस 1.2.0 में किया जाता है[37]
जेईसीएल विवरण | जॉब | उदाहरण |
---|---|---|
//**command |
एक जेईएस3 प्रचालक (कंसोल) संकेत दर्ज करता है। | |
//*DATASET |
शृंखलाबद्ध डेटासेट के प्रारम्भ को चिह्नित करता है। | |
//*ENDDATASET |
शृंखलाबद्ध डेटासेट के अंत को चिह्नित करता है। | |
//*ENDPROCESS |
//*PROCESS विवरणों की श्रृंखला के अंत को चिह्नित करता है। |
|
//*FORMAT |
एसवाईएसOUT डेटासेट विकल्प निर्दिष्ट करता है। |
|
//*MAIN |
जॉब से संबंधित मापदंडों के लिए मान निर्दिष्ट करता है। | |
//*NET |
जेईएस3 निर्भर जॉब कंट्रोल का उपयोग करके जॉबों के मध्य संबंधों की पहचान करता है। | |
//*NETACCT |
नेटवर्क जॉब के लिए खाता संख्या निर्दिष्ट करता है। | |
//*OPERATOR |
प्रचालक कंसोल को एक संदेश भेजता है। | |
//*PAUSE |
इनपुट पाठक बंद कर देता है। | |
//*PROCESS |
एक गैर-मानक जॉब की पहचान करता है। | |
//*ROUTE |
जॉब के लिए निष्पादन नोड निर्दिष्ट करता है। | |
/*SIGNOFF |
दूरस्थ सत्र समाप्त होता है। | /*SIGNOFF
|
/*SIGNON |
दूरस्थ सत्र प्रारंभ होता है। |
जेड/वीएसई
वीएसई के लिए जेईसीएल विवरण * $$
से प्रारंभ होते हैं (एकल स्थान पर ध्यान दें)। जॉब प्रवेश कंट्रोल लैंग्वेज जेसीएल जॉबों का प्रारंभ और अंत पंक्तियों को परिभाषित करता है। यह वीएसई (संचालन प्रणाली)/आईबीएम पावर को सलाह देता है कि यह जॉब कैसे संभाला जाए। जेईसीएल विवरण जॉब का नाम (वीएसई/पावर द्वारा प्रयुक्त), वह वर्ग जिसमें जॉब संसाधित किया जाता है और जॉब का स्वभाव (अर्थात D
, L
, K
, H
) को परिभाषित करते हैं।
जेईसीएल विवरण[38] | जॉब | उदाहरण |
---|---|---|
* $$ CTL |
एक व्यतिक्रम इनपुट वर्ग स्थापित करता है। | * $$ CTL CLASS=A
|
* $$ JOB |
किसी जॉब की विशेषताएँ निर्दिष्ट करता है। | * $$ JOB JNM=PYRL,PRI=9
|
* $$ EOJ |
किसी जॉब के अंत का प्रतीक है। | * $$ EOJ
|
* $$ RDR |
3540 डिस्केट से एक फ़ाइल को इनपुट वर्ग में सम्मिलित करता है। | * $$ RDR एसवाईएस005,'fname',2
|
* $$ PRT |
स्पूल्ड मुद्रण फ़ाइलों की विशेषताओं को निर्दिष्ट करता है।
"एलएसटी' "पीआरटी" का पर्यायवाची है। |
* $$ PRT FNO=STD,COPY=2
|
* $$ PUN |
स्पूल्ड पंच फ़ाइलों की विशेषताओं को निर्दिष्ट करता है। | * $$ PUN DISP=T,TADDR=280
|
* $$ SLI |
स्रोत विवरण पुस्तकालय से इनपुट वर्ग में डेटा ("पुस्तक") सम्मिलित करता है। | * $$ SLI A.JCL1
|
* $$ DATA |
कार्ड पाठक से डेटा को स्रोत विवरण पुस्तकालय से प्राप्त पुस्तक में सम्मिलित करता है। | * $$ DATA INPUT1
|
उदाहरण:
* $$ JOB JNM=NAME,DISP=K,CLASS=2
[some JCL statements here]
* $$ EOJ
अन्य प्रणाली
अन्य मेनफ्रेम प्रचय प्रणालियों में किसी न किसी प्रकार की जॉब कंट्रोल लैंग्वेज होती थी, चाहे उसे वह कहा जाए या नहीं; उनकी वाक्य रचना आईबीएम संस्करणों से पूर्णतया से भिन्न था, परन्तु वे सामान्यतः समान क्षमताएं प्रदान करते थे। पारस्परिक प्रणाली में संकेत लैंग्वेजएँ सम्मिलित हैं - संकेत फ़ाइलें (जैसे पीसीडॉस ".बैट" फ़ाइलें) को गैर-पारस्परिक रूप से चलाया जा सकता है, परन्तु ये सामान्यतः जेसीएल की तरह अप्राप्य जॉबों को चलाने के लिए उतना प्रबल वातावरण प्रदान नहीं करते हैं। कुछ परिकलक प्रणाली पर जॉब कंट्रोल लैंग्वेज और पारस्परिक संकेत लैंग्वेज भिन्न हो सकती है। उदाहरण के लिए, जेड/ओएस प्रणाली पर टीएसओ प्रचय जॉब के लिए जेसीएल के साथ-साथ संकेत लैंग्वेजओं के रूप में सीएलआईएसटी या आरईएक्सएक्स का उपयोग करता है। अन्य प्रणालियों पर ये समान हो सकते हैं।
यह भी देखें
- डीडी (यूनिक्स),
DD
से प्रेरित यूनिक्स प्रोग्राम - आईबीएम मेनफ्रेम उपयोगिता प्रोग्राम
- प्रचय संसाधन
- डेटा सेट
संदर्भ
- ↑ "Every job submitted for execution ... must include JCL statements" -- ibm.com
- ↑ 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
- ↑ Ashley and Fernandez, Job Control Language, p. 1.
- ↑ Ashley and Fernandez, Job Control Language, p. 5.
- ↑ McQuillen, System/360–370 Assembler Language, pp. 385–386.
- ↑ 6.0 6.1 McQuillen, System/360–370 Assembler Language, pp. 288–289, 400.
- ↑ Lewis, Cecilia (August 8, 2011). "हमने हाल ही में पीडीएसई के साथ आपके लिए क्या किया है" (PDF). SHARE in Orlando. Retrieved 2023-03-03.
- ↑ McQuillen, System/360–370 Assembler Language, pp. 22–24.
- ↑ McQuillen, System/360–370 Assembler Language, pp. 380–382.
- ↑ Stern and Stern, Structured COBOL Programming, pp. 528–529.
- ↑ Stern and Stern, Structured COBOL Programming, pp. 529, 531.
- ↑ Stern and Stern, Structured COBOL Programming, pp. 529, 537.
- ↑ "IBM Archives: System/360 Model 30". www-03.ibm.com (in English). 2003-01-23. Retrieved 2016-04-25.
- ↑ "आईबीएम पीसी". Archived from the original on 2006-07-05. Retrieved 2007-10-21.
- ↑ IBM-compatible computers History of PCs Archived August 14, 2007, at the Wayback Machine
- ↑ Brown, Gary DeWard (2002). ज़ोस जेसीएल (fifth ed.). John Wiley & Sons. p. 248. ISBN 0471-236357.
- ↑ Ashley and Fernandez, Job Control Language, pp. 8, 23. There are also two additional statements, PROC and PEND, used to test JCL procedures.
- ↑ A pre-stored set of "EXEC PGM=" and "DD" JCL commands which could be parameterized
- ↑ Ashley and Fernandez, Job Control Language, pp. 12–16.
- ↑ Ashley and Fernandez, Job Control Language, pp. 13–15.
- ↑ IBM Corporation (August 1978). OS/VS MVS Data Management Services Guide (PDF). Retrieved Oct 17, 2014.
- ↑ IBM Corporation (June 1971). IBM System/360 Operating System: Job Control Language Reference (PDF). Retrieved June 25, 2019.
- ↑ McQuillen, System/360–370 Assembler Language, pp. 297, 406–407.
- ↑ the default for the EXEC statement is PROC=
- ↑ Ashley and Fernandez, Job Control Language, pp. 129–131.
- ↑ "Data set names". IBM. 27 March 2014.
Data set names must not exceed 44 characters, including all name segments and periods.
- ↑ 27.0 27.1 Brown, Gary DeWard (2002). ज़ोस जेसीएल. John Wiley & Sons. ISBN 9780471426738. Retrieved 2014-05-05.
- ↑ IBM Corporation. "JOB और EXEC कथनों पर COND मापदंडों का संबंध". IBM Knowledge Center. Retrieved Feb 21, 2018.
- ↑ 29.0 29.1 29.2 McQuillen, System/360–370 Assembler Language, pp. 406–407.
- ↑ Charley, Alfred (1993). NetView: IBM's Network Management Product. New York: Van Nostrand Reinhold. p. 93. ISBN 0-442-01407-4.
- ↑ 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
(help)|quote=
- ↑ 32.0 32.1 32.2 Ashley and Fernandez, Job Control Language, pp. vii–viii, back cover.
- ↑ 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.
- ↑ IBM Corporation (1968). IBM System/360 Operating System Remote Job Entry (PDF). Retrieved 2014-05-05.
- ↑ 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.
- ↑ other examples can be viewed at Houston Automatic Spooling Priority#Operator Commands
- ↑ 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.
- ↑ IBM Corporation (1974). DOS/VS POWER/VS Installation and Operations (PDF).
स्रोत
- "z/OS V1R6.0 MVS JCL उपयोगकर्ता मार्गदर्शिका" (PDF) (5th ed.). IBM. September 2004. Archived from the original (PDF) on 2013-08-19. Retrieved 2006-10-12.
- "z/OS V1R7.0 MVS JCL संदर्भ" (PDF) (11th ed.). IBM. April 2006. Archived from the original (PDF) on 2013-08-19. Retrieved 2006-10-12.
- Johnston, Jerry (1 April 2005). "वीएसई: पिछले 40 वर्षों पर एक नजर". z/Journal. Thomas Communications. Archived from the original on 4 March 2009.
- "कंप्यूटर क्रॉनिकल्स: 1972 - 1981". ThinkQuest. Oracle Corporation. 1998. Archived from the original on 21 June 2009.
- DeWard Brown, Gary (7 June 2002). ज़ोस जेसीएल (5th ed.). Wiley. ISBN 978-0-471-23635-1.
- "जेसीएल वक्तव्य फ़ील्ड". z/OS V1R11.0 MVS JCL Reference z/OS V1R10.0-V1R11.0. IBM. 2010.
- IBM Corporation (March 2007). नए मेनफ्रेम का परिचय: z/VSE मूल बातें (PDF). ISBN 978-0-73-848624-6. Retrieved 2017-12-06.
- Ashley, Ruth; Fernandez, Judi N. (1978). कार्य नियंत्रण भाषा: एक स्व-शिक्षण मार्गदर्शिका. New York: John Wiley & Sons. ISBN 0-471-03205-0.
- McQuillen, Kevin (1975). सिस्टम/360-370 असेंबलर भाषा (ओएस). Fresno, California: Mike Murach & Associates. LCCN 74-29645.
- Stern, Nancy; Stern, Robert A. (1980). संरचित COBOL प्रोग्रामिंग (3rd ed.). New York: John Wiley & Sons. ISBN 0-471-04913-1.