कंट्रोल लैंग्वेज: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(9 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Short description|IBM operating system scripting language}}
{{Short description|IBM operating system scripting language}}
{{Infobox programming language
'''कंट्रोल लैंग्वेज (सीएल)''' मूल रूप से [[आईबीएम]] द्वारा 38 प्रणाली की [[नियंत्रण कार्यक्रम सुविधा|कंट्रोल  फंक्शन सुविधा]] के लिए बनाई गई स्क्रिप्टिंग लैंग्वेज है<ref>{{cite web|url=http://bitsavers.org/pdf/ibm/system38/SC21-7731-5_System_38_Control_Language_Reference_Manual_to_pg_4-708_198209.pdf|title=IBM System/38 Control Language Reference Manual|date=1982-09-10|publisher=IBM|access-date=2021-03-24}}</ref> और बाद में ओएस (OS)/400 (जिसे अब IBM i के नाम से जाना जाता है) में उपयोग किया जाता था। यह आईबीएम [[नौकरी नियंत्रण भाषा|कंट्रोल  लैंग्वेज]] से मिलता जुलता है और इसमें कमांड ऑब्जेक्ट्स (*CMD) का सेट होता है, जिसका उपयोग पारंपरिक फंक्शन्स को प्रारंभ करने या उन फंक्शन्स के बारे में सहायता प्राप्त करने के लिए उपयोग किया जाता है। सीएल का उपयोग सीएल प्रोग्राम ( [[खोल स्क्रिप्ट|अनावरण स्क्रिप्ट]] के अनुरूप) बनाने के लिए भी किया जाता है जहां इसके अतिरिक्त कमांड्स को उपयोग में लाया जाता हैं जो प्रोग्राम जैसी कार्यक्षमता (आईएफ/ईएलएसई, [[घोषणा (कंप्यूटर विज्ञान)]], फ़ाइल इनपुट इत्यादि) प्रदान करती हैं।
| name                  = Control Language
| logo                  =
| paradigm              = [[Imperative programming|imperative]]
| year                  = {{Start date and age|1978}}
| designer              = [[IBM]]
| developer              = [[IBM]]
| latest_release_version =
| latest_release_date    =
| latest_test_version    =
| latest_test_date      =
| typing                =
| implementations        =
| dialects              =
| influenced_by          = [[Job Control Language]], [[PL/I]]
| influenced            = [[Windows PowerShell]]
| operating_system      = [[Control Program Facility]], [[IBM i]]
| license                = Proprietary
| website                =
}}
कंट्रोल लैंग्वेज (सीएल) मूल रूप से [[आईबीएम]] द्वारा सिस्टम / 38 [[नियंत्रण कार्यक्रम सुविधा]] के लिए बनाई गई एक स्क्रिप्टिंग भाषा है<ref>{{cite web|url=http://bitsavers.org/pdf/ibm/system38/SC21-7731-5_System_38_Control_Language_Reference_Manual_to_pg_4-708_198209.pdf|title=IBM System/38 Control Language Reference Manual|date=1982-09-10|publisher=IBM|access-date=2021-03-24}}</ref> और बाद में OS/400 (जिसे अब IBM i के नाम से जाना जाता है) में उपयोग किया गया। यह आईबीएम [[नौकरी नियंत्रण भाषा]] से मिलता जुलता है और इसमें कमांड ऑब्जेक्ट्स (*सीएमडी) का एक सेट होता है, जिसका इस्तेमाल पारंपरिक कार्यक्रमों को शुरू करने या उन कार्यक्रमों के बारे में मदद पाने के लिए किया जाता है। सीएल का उपयोग सीएल प्रोग्राम ([[खोल स्क्रिप्ट]] के अनुरूप) बनाने के लिए भी किया जा सकता है जहां अतिरिक्त कमांड हैं जो प्रोग्राम जैसी कार्यक्षमता (आईएफ/ईएलएसई, [[घोषणा (कंप्यूटर विज्ञान)]], फ़ाइल इनपुट इत्यादि) प्रदान करते हैं।


हालाँकि CL सिस्टम प्रशासन के लिए एक स्क्रिप्टिंग भाषा है, इसका उपयोग मुख्य रूप से संकलित प्रोग्राम बनाने के लिए किया जाता है। SBMDBJOB कमांड के माध्यम से व्याख्या की गई CL स्क्रिप्ट का उपयोग <ref>[http://www.itjungle.com/fhg/fhg030712-story02.html itjungle.com]</ref> वास्तव में अत्यंत सीमित है।
चूंकि CL प्रणाली प्रशासन के लिए स्क्रिप्टिंग लैंग्वेज है, इसका उपयोग मुख्य रूप से संकलित प्रोग्राम बनाने के लिए किया जाता है। SBMDBJOB कमांड के माध्यम से व्याख्या की गई CL स्क्रिप्ट का उपयोग <ref>[http://www.itjungle.com/fhg/fhg030712-story02.html itjungle.com]</ref> वास्तव में अत्यंत सीमित है।


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


== कमांड और प्रोग्राम ==
== कमांड और प्रोग्राम ==
पैरामीटर (कंप्यूटर साइंस) ([[कमांड-लाइन तर्क]]) सभी पारंपरिक सिस्टम/38 और एएस/400 कार्यक्रमों [[की]] मुख्य प्रक्रियाओं में परिभाषित हार्ड कोडित सूचियां हैं जो पैरामीटर से बने होते हैं जो संख्यात्मक, अल्फान्यूमेरिक, बूलियन इत्यादि हो सकते हैं और जिस क्रम में पैरामीटर पारित किए जाते हैं वह महत्वपूर्ण है। यह [[यूनिक्स]] और डॉस दुनिया से एक बड़ा अंतर है जहां यूनिक्स शैल स्क्रिप्ट और [[सी (प्रोग्रामिंग भाषा)]] में पैरामीटर सूची वर्ण पॉइंटर्स का एक सेट या सरणी है और अधिकतर पैरामीटर स्थितित्मक रूप से निर्भर नहीं होते हैं।
पैरामीटर (कंप्यूटर विज्ञान) ([[कमांड-लाइन तर्क|कमांड-लाइन लाजिक]]) सभी पारंपरिक प्रणाली/38 और एएस/400 फंक्शन्स [[की]] मुख्य प्रक्रियाओं में परिभाषित हार्ड कोडित सूचियां हैं जो पैरामीटर से बनी होती हैं जो संख्यात्मक, अल्फान्यूमेरिक, बूलियन इत्यादि प्रकार के हो सकते हैं और जिसे क्रम में रखने पर पैरामीटर पारित किया जाता हैं जो विशेषतः महत्वपूर्ण है। यह [[यूनिक्स]] और डॉस क्षेत्र से बड़े अंतर में भिन्न हैं जहां यूनिक्स शैल स्क्रिप्ट और [[सी (प्रोग्रामिंग भाषा)|सी (प्रोग्रामिंग लैंग्वेज)]] में पैरामीटर सूची वर्ण पॉइंटर्स का सेट या सरणी है और अधिकतर पैरामीटर स्थितित्मक रूप से इस पर निर्भर नहीं करते हैं।


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


जब उपयोगकर्ता टाइप करता है या कमांड का संकेत देता है और एंटर कुंजी दबाता है, तो इसकी सबसे बुनियादी कमांड कॉल करने के लिए एकल प्रोग्राम का नाम देती है। कमांड उपयोगकर्ता द्वारा टाइप किए गए सभी पैरामीटर लेता है, और जो उपयोगकर्ता द्वारा टाइप नहीं किया जाता है, और एक पैरामीटर सूची बनाता है जो प्रोग्राम को कॉल करने पर पास करता है।
जब उपयोगकर्ता कोई कमांड टाइप करता है या कोई संकेत देता है और इसके बाद एंटर कुंजी दबाता है, तो इसकी सबसे मौलिक कमांड कॉल करने के लिए एकल प्रोग्राम का नाम दे दिया जाता है। कमांड उपयोगकर्ता द्वारा टाइप किए गए सभी पैरामीटर लेता है, और जो उपयोगकर्ता द्वारा टाइप नहीं किया जाता है, और पैरामीटर सूची बनाता है जो प्रोग्राम को कॉल करने पर पास करता है।


== सिंटेक्स ==
== सिंटेक्स ==
अधिक सरलीकृत सीएल कमांड सिंटैक्स के लिए [[बैकुस-नौर फॉर्म]] को निम्नानुसार परिभाषित किया जाएगा:
अधिक सरलीकृत सीएल कमांड सिंटैक्स के लिए [[बैकुस-नौर फॉर्म]] को निम्नानुसार परिभाषित किया जाएगा:
<वाक्यविन्यास लैंग = बीएनएफ>
<सीएल-कमांड> ::= कमांड-नाम [<स्थिति-पैरामीटर-सूची>] [<नामित-पैरामीटर-सूची>]


  <पोजिशनल-पैरामीटर-लिस्ट> ::= <पैरामीटर-वैल्यू> [<पोजिशनल-पैरामीटर-लिस्ट>]
<syntaxhighlight lang="bnf">
  <CL-command> ::= command-name [<positional-parameter-list>] [<named-parameter-list>]


  <नामित-पैरामीटर-सूची> ::= पैरामीटर-नाम ( <पैरामीटर-तत्व-सूची>) [<नाम-पैरामीटर-सूची>]
  <positional-parameter-list> ::= <parameter-value> [<positional-parameter-list>]


  <पैरामीटर-एलिमेंट-लिस्ट> ::= <पैरामीटर-वैल्यू> [<पैरामीटर-एलिमेंट-लिस्ट>]
  <named-parameter-list> ::= parameter-name "(" <parameter-element-list> ")" [<named-parameter-list>]


  <पैरामीटर-वैल्यू> ::= सीएल-नाम |
  <parameter-element-list> ::= <parameter-value> [<parameter-element-list>]
                      योग्य-सीएल-नाम |
                        *विशेष—मूल्य |
                      जेनेरिक-सीएल-नाम * |
                        'अल्फ़ान्यूमेरिक-वैल्यू' |
                      संख्यात्मक-मान |
                        एक्स' हेक्साडेसिमल-मान '
</वाक्यविन्यास हाइलाइट>
-नाम में समाप्त होने वाले आइटम ऑब्जेक्ट (आईबीएम i) नामकरण परंपराओं का पालन करते हैं, जो आम तौर पर बोलते हैं, इसका मतलब है कि नाम एक अक्षर से शुरू होता है और लंबाई में दस वर्णों तक हो सकता है। (सीएल आदेश भी केस-संवेदी हैं।)


विशिष्ट सीएल कमांड का एक अच्छा उदाहरण नीचे दिया गया 'चेंज प्रोग्राम' (सीएचजीपीजीएम) कमांड है:
<parameter-value> ::= CL-name |
                      qualified-CL-name |
                      "*"special-value |
                      generic-CL-name"*" |
                      "'"alphanumeric-value"'" |
                      numeric-value |
                      "X'"hexadecimal-value"'"
</syntaxhighlight>


CHGPGM MYPGM ऑप्टिमाइज़(*फुल) RMVOBS(*BLKORD *PRCORD) टेक्स्ट('मेरा प्रोग्राम।')
इसके नाम से समाप्त होने वाले आइटम ऑब्जेक्ट (आईबीएम i) के नामकरण इसकी मुख्य अवधारणाओं का पालन करती हैं, जो सामान्यतः अनुसरण किया जाना आवश्यक होता हैं, जिसका अर्थ है कि इस नाम के अक्षर से प्रारंभ होने वाले और लंबाई में दस वर्णों तक इसे उपयोग में लाया जा सकता है। (सीएल कमांड्स भी केस-संवेदी लैंग्वेज हैं।)


उपरोक्त कमांड प्रोग्राम को चार पैरामीटर पास कर रहा है जो प्रोग्राम प्रोसेसिंग को बदलता है और वे हैं:
विशिष्ट सीएल कमांड का अच्छा उदाहरण नीचे दिया गया 'चेंज प्रोग्राम' (सीएचजीपीजीएम) कमांड है:


* MYPGM: एक स्थितीय पैरामीटर (PGM), और केवल आवश्यक पैरामीटर। इस मामले में यह बदला जा रहा कार्यक्रम का नाम है। स्थितीय पैरामीटर हमेशा पहले होते हैं। एक बार नामित पैरामीटर प्रकट होने के बाद सभी पैरामीटर जो अनुसरण करते हैं, उन्हें नामित पैरामीटर होना चाहिए।
CHGPGM MYPGM OPTIMIZE(*FULL) RMVOBS(*BLKORD *PRCORD) TEXT('My program.')
* ऑप्टिमाइज़ (* पूर्ण): एक नामित पैरामीटर जो एक तत्व को निर्दिष्ट करता है जो एक विशेष मान है। इस मामले में यह प्रोग्राम को पूरी तरह से अनुकूलित करने के लिए बदल देगा।
* RMVOBS(*BLKORD *PRCORD): कई विशेष मूल्यों को निर्दिष्ट करने वाला एक नामित पैरामीटर (अवलोकनशीलता हटाएं)। इस मामले में इसे प्रोग्राम से दो प्रकार के प्रोफाइलिंग डेटा को हटाने के लिए कह रहा है।
* पाठ ('मेरा कार्यक्रम।'): एकल अल्फ़ान्यूमेरिक मान निर्दिष्ट करने वाला एक अन्य नामित पैरामीटर। इस मामले में यह कार्यक्रम के वर्णनात्मक पाठ को बदल रहा है।


वास्तव में सिस्टम ऊपर बताए गए चार पैरामीटर से कहीं अधिक पैरामीटर पास करेगा। ऐसा इसलिए है क्योंकि शेष सीएचजीपीजीएम कमांड के पैरामीटर निर्दिष्ट नहीं किए गए थे, इसलिए इसके बजाय डिफ़ॉल्ट मान पारित किए जाएंगे। इस पर प्रत्येक पैरामीटर के लिए, PGM पैरामीटर को छोड़कर, वह डिफ़ॉल्ट *SAME है, जिसका अर्थ है कि इसे परिवर्तित न करें।
उपरोक्त कमांड प्रोग्राम को चार पैरामीटर पास कर रहा है जो प्रोग्राम प्रोसेसिंग को परिवर्तित करता है और वे कुछ इस प्रकार हैं:
 
* MYPGM: स्थितीय पैरामीटर (PGM), और केवल आवश्यक पैरामीटर। इस स्थिति में यह बदला जा रहा कार्यक्रम का नाम है। स्थितीय पैरामीटर सदैव पहले होते हैं। इस प्रकार नामित पैरामीटर के प्रकट होने के बाद सभी पैरामीटर जो अनुसरण करते हैं, उन्हें नामित पैरामीटर होना चाहिए।
* ऑप्टिमाइज़ (* पूर्ण): नामित पैरामीटर जो तत्व को निर्दिष्ट करता है जो विशेष मान निर्धारित करते हैं। इस स्थिति में यह प्रोग्राम को पूर्ण रूप से अनुकूलित करने के लिए परिवर्तित कर दिया जाता हैं।
* RMVOBS(*BLKORD *PRCORD): कई विशेष मूल्यों को निर्दिष्ट करने वाला नामित पैरामीटर (अवलोकनशीलता हटाएं)। इस स्थिति में इसे प्रोग्राम से दो प्रकार के प्रोफाइलिंग डेटा को हटाने के लिए काल करता हैं।
* 'MY FUNCTION'): एकल अल्फ़ान्यूमेरिक मान निर्दिष्ट करने वाले अन्य नामित पैरामीटर होते हैं। इस स्थिति में यह कार्यक्रम के वर्णनात्मक पाठ को परिवर्तित करता है।
 
वास्तव में प्रणाली ऊपर बताए गए चार पैरामीटर से कहीं अधिक पैरामीटर पास करेगा। ऐसा इसलिए है क्योंकि शेष सीएचजीपीजीएम कमांड के पैरामीटर निर्दिष्ट नहीं किए गए थे, इसलिए इसके अतिरिक्त डिफ़ॉल्ट मान पारित किए जाते हैं। इस पर प्रत्येक पैरामीटर के लिए, PGM पैरामीटर को छोड़कर, वह डिफ़ॉल्ट *SAME है, जिसका अर्थ है कि इसे परिवर्तित नहीं किया जाता हैं।


== संकेत ==
== संकेत ==
कमांड टाइप करके और F4 फ़ंक्शन कुंजी दबाकर सभी सीएल कमांड को सीधे कमांड लाइन से या सीएल प्रोग्राम [[सोर्स कोड]] के भीतर संकेत दिया जा सकता है। एक OS/400 कमांड को टाइप करके भी संकेत दिया जा सकता है ? आज्ञा से पहले।
कमांड टाइप करके और F4 फ़ंक्शन कुंजी दबाकर सभी सीएल कमांड को सीधे कमांड लाइन से या सीएल प्रोग्राम [[सोर्स कोड]] के भीतर संकेत दिया जाता है। कमांड से पहले OS/400 में कमांड को टाइप करके भी संकेत दिया जाता है?
(यह एक इंटरैक्टिव प्रोग्राम में उपयोगी है जो कमांड स्ट्रिंग को इंगित करता है, पहले से ही कुछ मूल्यों में भरा हुआ है।)
 
(यह इंटरैक्टिव प्रोग्राम में उपयोगी है जो कमांड स्ट्रिंग को इंगित करता है, पहले से ही कुछ मूल्यों में भरा हुआ है।)


सिस्टम तब पैरामीटर के सेट के साथ एक स्क्रीन पेश करेगा जिसे प्रोग्राम स्वीकार/आवश्यक करता है (आवश्यक पैरामीटर आमतौर पर हाइलाइट किए जाते हैं)।
इस प्रणाली को पैरामीटर के सेट के साथ स्क्रीन प्रस्तुत किया जाता हैं जिसे प्रोग्राम आवश्यकता होने पर स्वीकार करता है (आवश्यक पैरामीटर सामान्यतः हाइलाइट किए जाते हैं)।


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


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


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


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


== नए आदेश बनाना ==
== नए कमांड्स बनाना ==
गैर-सिस्टम प्रोग्राम को कॉल करने के लिए नए कमांड बनाए जा सकते हैं और वे बिल्कुल इनबिल्ट वैरायटी की तरह काम करेंगे। कमांड परिभाषा भाषा [http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/sm14/c4157215.pdf सीएल प्रोग्रामर गाइड] में वर्णित है।
गैर-प्रणाली प्रोग्राम को कॉल करने के लिए नए कमांड बनाए जा सकते हैं और वे बिल्कुल इनबिल्ट भिन्नता की तरह कार्य करते हैं। कमांड परिलैंग्वेज  [http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/sm14/c4157215.pdf सीएल प्रोग्रामर गाइड] लैंग्वेज में वर्णित है।


नए कमांड और उनके पैरामीटर के लिए सहायता स्क्रीन बनाना एक अच्छा विचार है। सभी मदद स्क्रीन पैनल ग्रुप ऑब्जेक्ट्स (*PNLGRP) का उपयोग करती हैं और इन्हें [http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/c4157150.pdf IBM AS/ में वर्णित UIM भाषा का उपयोग करके बनाया जा सकता है। 400 एप्लिकेशन डिस्प्ले प्रोग्रामिंग मैनुअल]
नए कमांड और उनके पैरामीटर के लिए सहायता स्क्रीन बनाना एक अच्छा विचार है। सभी सहायता स्क्रीन पैनल ग्रुप ऑब्जेक्ट्स (*PNLGRP) का उपयोग करती हैं और इन्हें [http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/c4157150.pdf IBM AS/ में वर्णित UIM लैंग्वेज का उपयोग करके बनाया जा सकता है। 400 एप्लिकेशन डिस्प्ले प्रोग्रामिंग मैनुअल] ऑपरेटिंग प्रणाली के V5R3 की प्रारंभ में सहायता बनाने का नया, अधिक सरल तरीका जोड़ देती हैं: उक्त कमांड को रन करें-
  GENCMDDOC CMD (MYLIB/MyCMD) TODIR('/QSYS.LIB/MYLIB.LIB/QPNLSRC.FILE) GENOPT(*UIM)
कमांड द्वारा वर्णित सभी मापदंडों सहित UIM पैनल समूह को स्वचालित रूप से उत्पन्न किया जाता हैं। जिसका परिणाम फ़ाइल को संपादित करने के लिए उपयोग किया जाता हैं (एसईयू, डब्लूडीएससी, आरडीआई), फिर सीआरटीपीएनएलजीआरपी कमांड के साथ संकलित करता हैं, और अंत में सीएचजीसीएमडी एचएलपीपीएनएलजीआरपी () फंक्शन के माध्यम से कमांड से जोड़ा जाता हैं।


ऑपरेटिंग सिस्टम के V5R3 की शुरुआत में मदद बनाने का एक नया, अधिक सरल तरीका जोड़ा गया: कमांड चलाएँ
== सही कमांड्स ढूँढना ==
  GENCMDDOC सीएमडी (MYLIB/MyCMD) TODIR('/QSYS.LIB/MYLIB.LIB/QPNLSRC.FILE) GENOPT(*UIM)
V7R3 में 2,262 बिल्ट-इन IBM कमांड हैं,<ref>[http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/clfinder/finder30.htm IBM.com]</ref> लेकिन प्रणाली के कई डिज़ाइनों के कारण उन्हें ढूंढना इतना कठिन नहीं है जो जीवन को सरल बनाती हैं। श्रम बचाने वालो को उक्त डिज़ाइन दी जाती हैं जिसमें मानकीकृत संकेतों को कमांड के समूहीकरण मेनू, और कमांड चयन पर निर्धारित किया जाता हैं।
कमांड द्वारा वर्णित सभी मापदंडों सहित एक कंकाल UIM पैनल समूह स्वचालित रूप से उत्पन्न हो जाएगा। परिणाम फ़ाइल को संपादित किया जा सकता है (एसईयू, डब्लूडीएससी, आरडीआई), फिर सीआरटीपीएनएलजीआरपी कमांड के साथ संकलित किया गया है, और अंत में सीएचजीसीएमडी एचएलपीपीएनएलजीआरपी () के माध्यम से कमांड से जुड़ा हुआ है।
 
== सही आदेश ढूँढना ==
V7R3 में 2,262 बिल्ट-इन IBM कमांड हैं,<ref>[http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/clfinder/finder30.htm IBM.com]</ref> लेकिन सिस्टम के कई डिज़ाइनों के कारण उन्हें ढूंढना इतना कठिन नहीं है जो जीवन को आसान बनाते हैं। श्रम बचाने वाले ये डिज़ाइन हैं: मानकीकृत संकेताक्षर, कमांड समूहीकरण मेनू, और कमांड चयन।


=== मानकीकृत संक्षिप्त रूप ===
=== मानकीकृत संक्षिप्त रूप ===
आईबीएम डेवलपर्स ने कमांड नाम बनाने के लिए इस्तेमाल किए गए संक्षेपों को मानकीकृत किया। परिवर्तन जैसी क्रियाओं को हमेशा CHG के रूप में प्रदर्शित किया जाता है, DSP के रूप में प्रदर्शित किया जाता है, WRK के रूप में कार्य किया जाता है, CRT के रूप में बनाया जाता है, आदि। प्रोग्राम जैसे विषय हमेशा PGM होते हैं, उपयोगकर्ता USR होता है, मॉड्यूल MOD होता है, सर्वर SVR होता है, आदि। और 'VERB' और 'SUBJECT' मेन्यू में सिस्टम पर इस्तेमाल होने वाले सब्जेक्ट, बस GO VERB या GO SUBJECT कमांड दर्ज करें।
आईबीएम डेवलपर्स ने कमांड नाम बनाने के लिए उपयोग किए गए संक्षेपों को मानकीकृत किया जाता हैं। परिवर्तन जैसी क्रियाओं को सदैव CHG के रूप में प्रदर्शित किया जाता है, DSP के रूप में प्रदर्शित किया जाता है, WRK के रूप में कार्य किया जाता है, CRT के रूप में बनाया जाता है। प्रोग्राम जैसे विषय सदैव PGM पर निर्धारित होते हैं, यहाँ पर उपयोगकर्ता USR होता है, तथा मॉड्यूल्स MOD प्रारूप का होता है, सर्वर SVR होता है और 'VERB' और 'SUBJECT' मेन्यू में प्रणाली पर उपयोग होने वाले सब्जेक्ट, बस GO VERB या GO SUBJECT कमांड पर इंगित किए जाते हैं।
 
इसी तरह, नियंत्रण भाषा प्रोग्रामिंग संक्षिप्त रूप से सीएलपी था, और स्रोत प्रकार तदनुसार सीएलपी था। ILE प्रोग्रामिंग मॉडल की शुरुआत के साथ, स्रोत प्रकार को CLLE में बदल दिया गया।<ref>{{cite book|last1=Meyers|first1=Bryan|title=Control Language Programming for the AS/400|date=1997|publisher=29th Street Press|isbn=9781882419760|edition=2nd }}</ref>
 


इसी प्रकार कंट्रोल  लैंग्वेज प्रोग्रामिंग संक्षिप्त रूप से सीएलपी होती हैं और  तदनुसार सीएलपी स्रोत का एक प्रकार था। ILE प्रोग्रामिंग मॉडल की प्रारंभ के साथ, स्रोत प्रकार को CLLE में परिवर्तित कर दिया जाता हैं।<ref>{{cite book|last1=Meyers|first1=Bryan|title=Control Language Programming for the AS/400|date=1997|publisher=29th Street Press|isbn=9781882419760|edition=2nd }}</ref>
=== कमांड ग्रुपिंग मेन्यू ===
=== कमांड ग्रुपिंग मेन्यू ===
वर्ब और सब्जेक्ट मेन्यू कमांड ग्रुपिंग मेन्यू का हिस्सा हैं। प्रत्येक तीन (या चार) अक्षर संक्षिप्त नाम के लिए एक मेनू समर्पित है जो सीएमडी अक्षरों से शुरू होता है। इसलिए सभी CHG कमांड देखने के लिए उपयोगकर्ता GO CMDCHG कमांड को निष्पादित करेगा। प्रोग्राम कमांड के लिए मेन्यू सीएमडीपीजीएम होगा।
वर्ब और सब्जेक्ट मेन्यू कमांड ग्रुपिंग मेन्यू का भाग हैं। प्रत्येक तीन (या चार) अक्षर संक्षिप्त नाम के लिए मेनू समर्पित है जो सीएमडी अक्षरों से प्रारंभ होता है। इसलिए सभी CHG कमांड देखने के लिए उपयोगकर्ता GO CMDCHG कमांड को निष्पादित करेगा। प्रोग्राम कमांड के लिए मेन्यू सीएमडीपीजीएम होगा।


कमांड ग्रुपिंग मेन्यू के अलावा अन्य मेन्यू भी हैं। एक खाली AS/400 कमांड लाइन पर F4 दबाकर मेन्यूइंग सिस्टम के शुरुआती बिंदु तक पहुँचा जा सकता है।
कमांड ग्रुपिंग मेन्यू के अतिरिक्त अन्य मेन्यू भी हैं। AS/400 कमांड लाइन पर F4 दबाकर मेन्यूइंग प्रणाली के प्रारंभी बिंदु तक पहुँचा जा सकता है।


=== कमांड चयन ===
=== कमांड चयन ===
यदि कोई केवल कमांड का हिस्सा जानता है या यदि तीसरे पक्ष के सॉफ़्टवेयर का उपयोग किया जा रहा है जहां कमांड एएस/400 संक्षिप्त नाम मानक के अनुरूप नहीं हैं तो आप कमांड के उस हिस्से को दर्ज करेंगे जो ज्ञात है, एक तारांकन चिह्न संलग्न करें (इसे बनाने के लिए) सामान्य), और एंटर दबाएं। इसके बाद सिस्टम जॉब के ऑब्जेक्ट (IBM i)#Library List में कमांड की एक सूची प्रदर्शित करेगा जो अभी-अभी टाइप किए गए सामान्य नामों से मेल खाता है। इसके बाद कोई भी आवश्यक आदेश की तलाश में सूची के माध्यम से पेज कर सकता है और फिर विकल्प 1 का उपयोग करके इसे चुन सकता है।
यदि कोई केवल कमांड का भाग जानता है या यदि तीसरे पक्ष के सॉफ़्टवेयर का उपयोग किया जा रहा है जहां कमांड एएस/400 संक्षिप्त नाम मानक के अनुरूप नहीं हैं तो आप कमांड के उस हिस्से को दर्ज करेंगे जो ज्ञात है, तारांकन चिह्न संलग्न करें (इसे बनाने के लिए) सामान्य), और एंटर दबाएं। इसके बाद प्रणाली जॉब के ऑब्जेक्ट (IBM i) लाइब्रेरी सूची में कमांड की सूची प्रदर्शित करेगा जो अभी-अभी टाइप किए गए सामान्य नामों से मेल खाता है। इसके बाद कोई भी आवश्यक कमांड्स की तलाश में सूची के माध्यम से पेज कर सकता है और फिर विकल्प 1 का उपयोग करके इसे चुनता है।


पृष्ठभूमि में सिस्टम इस कार्य को करने के लिए SLTCMD कमांड का उपयोग कर रहा है। यदि कोई ऑब्जेक्ट (IBM i) में सभी कमांड का चयन करना चाहता है तो इस कमांड को प्रांप्ट करें और विशेष मान *ALL दर्ज करें।
पृष्ठभूमि में प्रणाली इस कार्य को करने के लिए SLTCMD कमांड का उपयोग कर रहा है। यदि कोई ऑब्जेक्ट (IBM i) में सभी कमांड का चयन करना चाहता है तो इस कमांड को प्रांप्ट करें और विशेष मान *ALL दर्ज करें।


== नमूना कोड ==
== नमूना कोड ==
निम्नलिखित सीएल प्रोग्रामिंग का एक नमूना है। कार्यक्रम अंतःक्रियात्मक रूप से जूलियन से एमडीवाई और इसके विपरीत तारीखों को परिवर्तित करता है। परिणाम टर्मिनल की लाइन 24 पर प्रदर्शित होते हैं। यह दो मापदंडों को स्वीकार करता है। <code>&IN</code> e> पैरामीटर जो कनवर्ट की जाने वाली दिनांक स्ट्रिंग है। यदि जूलियन स्ट्रिंग यह YYNNN प्रारूप में होनी चाहिए जहां YY वर्ष संख्या है और NNN वर्ष की दिन संख्या है। यदि कोई MDY स्ट्रिंग MMDDYY प्रारूप में होनी चाहिए। दूसरा पैरामीटर है <code>&TYP</code> किस प्रकार की तिथि को परिवर्तित किया जाना है। यह 'जे' (जूलियन) या 'एम' (एमडीवाई) होना चाहिए। उदाहरण के लिए: आज्ञा <code>CALL PGM(ICVTDATC) PARM('04180' 'M')</code> जूलियन दिनांक 04180 को 062804 (28 जून, 2004) में परिवर्तित कर देगा।
निम्नलिखित सीएल प्रोग्रामिंग का नमूना है। कार्यक्रम अंतःक्रियात्मक रूप से जूलियन से एमडीवाई और इसके विपरीत तारीखों को परिवर्तित करता है। परिणाम टर्मिनल की लाइन 24 पर प्रदर्शित होते हैं। यह दो मापदंडों को स्वीकार करता है। <code>&IN</code> e> पैरामीटर जो कनवर्ट की जाने वाली दिनांक स्ट्रिंग है। यदि जूलियन स्ट्रिंग यह YYNNN प्रारूप में होनी चाहिए जहां YY वर्ष संख्या है और NNN वर्ष की दिन संख्या है। यदि कोई MDY स्ट्रिंग MMDDYY प्रारूप में होनी चाहिए। दूसरा पैरामीटर है <code>&TYP</code> किस प्रकार की तिथि को परिवर्तित किया जाना है। यह 'J' (जूलियन) या 'M' (एमडीवाई) होना चाहिए। उदाहरण के लिए: कमांड <code>CALL PGM(ICVTDATC) PARM('04180' 'M')</code> जूलियन दिनांक 04180 को 062804 (28 जून, 2004) में परिवर्तित कर देता हैं।
 
PGM (&IN &TYP)
<पूर्व>
पीजीएम (&IN &TYP)
    DCL &IN  *CHAR 6
    DCL &OUT *CHAR 8
    DCL &TYP *CHAR 1
    IF (&TYP = J) +
      DO
          CVTDAT DATE(&IN) TOVAR(&OUT) FROMFMT(*MDY) +
                TOFMT(*JUL) TOSEP(*NONE)
      ENDDO
    ELSE IF (&TYP = M) +
      DO
          CVTDAT DATE(&IN) TOVAR(&OUT) FROMFMT(*JUL) +
                TOFMT(*MDY) TOSEP(*NONE)
      ENDDO
    SNDPGMMSG MSG('IN=' || &IN || '  OUT=' || &OUT) +
              MSGTYPE(*COMP)


  डीसीएल और इन * चार 6
  डीसीएल एंड आउट * चार 8
  डीसीएल और टाइप * चार 1


  अगर (और टीवाईपी = जे) +
ENDPGM 
      करना
        सीवीटीडीएटी दिनांक (और में) तोवर (और बाहर) से एफएमएमटी (*एमडीवाई) +
                TOFMT(*JUL) TOSEP(*कोई नहीं)
      ENDDO


  और अगर (&TYP = एम) +
 
      करना
        सीवीटीडीएटी तारीख(और में) तोवर(और बाहर) से एफएमएमटी(*जुलाई) +
                टीओएफएमटी(*एमडीवाई) टीओएसईपी(*कोई नहीं)
      ENDDO
 
  एसएनडीपीजीएमएमएसजी एमएसजी ('आईएन =' || और इन || 'आउट =' || और आउट) +
            एमएसजीटाइप(*COMP)
 
ईएनडीपीजीएम
</पूर्व>


== यह भी देखें ==
== यह भी देखें ==
Line 146: Line 126:
{{Reflist}}
{{Reflist}}


{{IBM midrange computers}}
{{Programming languages}}
[[Category: पटकथा भाषाएँ]] [[Category: एएस/400]] [[Category: कमान के गोले]]
[[Category: Machine Translated Page]]
[[Category:Created On 09/02/2023]]
[[Category:Created On 09/02/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Template documentation pages|Short description/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:एएस/400]]
[[Category:कमान के गोले]]
[[Category:पटकथा भाषाएँ]]

Latest revision as of 13:14, 14 September 2023

कंट्रोल लैंग्वेज (सीएल) मूल रूप से आईबीएम द्वारा 38 प्रणाली की कंट्रोल फंक्शन सुविधा के लिए बनाई गई स्क्रिप्टिंग लैंग्वेज है[1] और बाद में ओएस (OS)/400 (जिसे अब IBM i के नाम से जाना जाता है) में उपयोग किया जाता था। यह आईबीएम कंट्रोल लैंग्वेज से मिलता जुलता है और इसमें कमांड ऑब्जेक्ट्स (*CMD) का सेट होता है, जिसका उपयोग पारंपरिक फंक्शन्स को प्रारंभ करने या उन फंक्शन्स के बारे में सहायता प्राप्त करने के लिए उपयोग किया जाता है। सीएल का उपयोग सीएल प्रोग्राम ( अनावरण स्क्रिप्ट के अनुरूप) बनाने के लिए भी किया जाता है जहां इसके अतिरिक्त कमांड्स को उपयोग में लाया जाता हैं जो प्रोग्राम जैसी कार्यक्षमता (आईएफ/ईएलएसई, घोषणा (कंप्यूटर विज्ञान), फ़ाइल इनपुट इत्यादि) प्रदान करती हैं।

चूंकि CL प्रणाली प्रशासन के लिए स्क्रिप्टिंग लैंग्वेज है, इसका उपयोग मुख्य रूप से संकलित प्रोग्राम बनाने के लिए किया जाता है। SBMDBJOB कमांड के माध्यम से व्याख्या की गई CL स्क्रिप्ट का उपयोग [2] वास्तव में अत्यंत सीमित है।

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

कमांड और प्रोग्राम

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

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

जब उपयोगकर्ता कोई कमांड टाइप करता है या कोई संकेत देता है और इसके बाद एंटर कुंजी दबाता है, तो इसकी सबसे मौलिक कमांड कॉल करने के लिए एकल प्रोग्राम का नाम दे दिया जाता है। कमांड उपयोगकर्ता द्वारा टाइप किए गए सभी पैरामीटर लेता है, और जो उपयोगकर्ता द्वारा टाइप नहीं किया जाता है, और पैरामीटर सूची बनाता है जो प्रोग्राम को कॉल करने पर पास करता है।

सिंटेक्स

अधिक सरलीकृत सीएल कमांड सिंटैक्स के लिए बैकुस-नौर फॉर्म को निम्नानुसार परिभाषित किया जाएगा:

 <CL-command> ::= command-name [<positional-parameter-list>] [<named-parameter-list>]

 <positional-parameter-list> ::= <parameter-value> [<positional-parameter-list>]

 <named-parameter-list> ::= parameter-name "(" <parameter-element-list> ")" [<named-parameter-list>]

 <parameter-element-list> ::= <parameter-value> [<parameter-element-list>]

 <parameter-value> ::= CL-name |
                       qualified-CL-name |
                       "*"special-value |
                       generic-CL-name"*" |
                       "'"alphanumeric-value"'" |
                       numeric-value |
                       "X'"hexadecimal-value"'"

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

विशिष्ट सीएल कमांड का अच्छा उदाहरण नीचे दिया गया 'चेंज प्रोग्राम' (सीएचजीपीजीएम) कमांड है:

CHGPGM MYPGM OPTIMIZE(*FULL) RMVOBS(*BLKORD *PRCORD) TEXT('My program.')

उपरोक्त कमांड प्रोग्राम को चार पैरामीटर पास कर रहा है जो प्रोग्राम प्रोसेसिंग को परिवर्तित करता है और वे कुछ इस प्रकार हैं:

  • MYPGM: स्थितीय पैरामीटर (PGM), और केवल आवश्यक पैरामीटर। इस स्थिति में यह बदला जा रहा कार्यक्रम का नाम है। स्थितीय पैरामीटर सदैव पहले होते हैं। इस प्रकार नामित पैरामीटर के प्रकट होने के बाद सभी पैरामीटर जो अनुसरण करते हैं, उन्हें नामित पैरामीटर होना चाहिए।
  • ऑप्टिमाइज़ (* पूर्ण): नामित पैरामीटर जो तत्व को निर्दिष्ट करता है जो विशेष मान निर्धारित करते हैं। इस स्थिति में यह प्रोग्राम को पूर्ण रूप से अनुकूलित करने के लिए परिवर्तित कर दिया जाता हैं।
  • RMVOBS(*BLKORD *PRCORD): कई विशेष मूल्यों को निर्दिष्ट करने वाला नामित पैरामीटर (अवलोकनशीलता हटाएं)। इस स्थिति में इसे प्रोग्राम से दो प्रकार के प्रोफाइलिंग डेटा को हटाने के लिए काल करता हैं।
  • 'MY FUNCTION'): एकल अल्फ़ान्यूमेरिक मान निर्दिष्ट करने वाले अन्य नामित पैरामीटर होते हैं। इस स्थिति में यह कार्यक्रम के वर्णनात्मक पाठ को परिवर्तित करता है।

वास्तव में प्रणाली ऊपर बताए गए चार पैरामीटर से कहीं अधिक पैरामीटर पास करेगा। ऐसा इसलिए है क्योंकि शेष सीएचजीपीजीएम कमांड के पैरामीटर निर्दिष्ट नहीं किए गए थे, इसलिए इसके अतिरिक्त डिफ़ॉल्ट मान पारित किए जाते हैं। इस पर प्रत्येक पैरामीटर के लिए, PGM पैरामीटर को छोड़कर, वह डिफ़ॉल्ट *SAME है, जिसका अर्थ है कि इसे परिवर्तित नहीं किया जाता हैं।

संकेत

कमांड टाइप करके और F4 फ़ंक्शन कुंजी दबाकर सभी सीएल कमांड को सीधे कमांड लाइन से या सीएल प्रोग्राम सोर्स कोड के भीतर संकेत दिया जाता है। कमांड से पहले OS/400 में कमांड को टाइप करके भी संकेत दिया जाता है?

(यह इंटरैक्टिव प्रोग्राम में उपयोगी है जो कमांड स्ट्रिंग को इंगित करता है, पहले से ही कुछ मूल्यों में भरा हुआ है।)

इस प्रणाली को पैरामीटर के सेट के साथ स्क्रीन प्रस्तुत किया जाता हैं जिसे प्रोग्राम आवश्यकता होने पर स्वीकार करता है (आवश्यक पैरामीटर सामान्यतः हाइलाइट किए जाते हैं)।

आवश्यक पैरामीटर पहले सूचीबद्ध हैं, और प्रणाली द्वारा आपूर्ति किए गए डिफ़ॉल्ट मान वाले पैरामीटर सबसे अंत में सूचीबद्ध हैं। सभी पैरामीटर देखने के लिए F10 दबाएं।

यदि किसी विकल्प के लिए और चयन की आवश्यकता होती है, तो वे संकेतित होते हैं जब आप उस पैरामीटर के लिए उस मान का चयन करते हैं, जो ऑनस्क्रीन प्रदर्शित होता है।

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

किसी नाम को इंगित करने के लिए, या आपको अतिरिक्त स्पेस इंगित करने की अनुमति देने के लिए या सूची का विस्तार करने के लिए मान के अतिरिक्त धन चिह्नों को टाइप करना पड़ता हैं। (जैसा कि पुनर्स्थापित किए जाने वाले ऑब्जेक्ट के नामों को सूचीबद्ध करते समय ध्यान रखना होता हैं।)

कमांड हेल्प

कमांड्स पर कर्सर द्वारा सेंसिटिव हेल्प भी दी जा सकती है लेकिन इसकी आवश्यकता नहीं पड़ती हैं। यदि कुछ सहायता प्रदान की जाए तो कर्सर को वांछित पैरामीटर फ़ील्ड में ले जाकर और F1 की को (हेल्प) दबाकर पैरामीटर के लिए हेल्प विकल्प देखा जा सकता हैं। संपूर्ण कमांड (और इसके सभी पैरामीटर) के लिए सहायता प्राप्त करने के लिए उपयोगकर्ता प्रांप्ट डिस्प्ले पर कहीं भी F1 दबाएगा और फिर F2 (विस्तारित सहायता को दबाएंगा।

नए कमांड्स बनाना

गैर-प्रणाली प्रोग्राम को कॉल करने के लिए नए कमांड बनाए जा सकते हैं और वे बिल्कुल इनबिल्ट भिन्नता की तरह कार्य करते हैं। कमांड परिलैंग्वेज सीएल प्रोग्रामर गाइड लैंग्वेज में वर्णित है।

नए कमांड और उनके पैरामीटर के लिए सहायता स्क्रीन बनाना एक अच्छा विचार है। सभी सहायता स्क्रीन पैनल ग्रुप ऑब्जेक्ट्स (*PNLGRP) का उपयोग करती हैं और इन्हें IBM AS/ में वर्णित UIM लैंग्वेज का उपयोग करके बनाया जा सकता है। 400 एप्लिकेशन डिस्प्ले प्रोग्रामिंग मैनुअल ऑपरेटिंग प्रणाली के V5R3 की प्रारंभ में सहायता बनाने का नया, अधिक सरल तरीका जोड़ देती हैं: उक्त कमांड को रन करें-

 GENCMDDOC CMD (MYLIB/MyCMD) TODIR('/QSYS.LIB/MYLIB.LIB/QPNLSRC.FILE) GENOPT(*UIM)

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

सही कमांड्स ढूँढना

V7R3 में 2,262 बिल्ट-इन IBM कमांड हैं,[3] लेकिन प्रणाली के कई डिज़ाइनों के कारण उन्हें ढूंढना इतना कठिन नहीं है जो जीवन को सरल बनाती हैं। श्रम बचाने वालो को उक्त डिज़ाइन दी जाती हैं जिसमें मानकीकृत संकेतों को कमांड के समूहीकरण मेनू, और कमांड चयन पर निर्धारित किया जाता हैं।

मानकीकृत संक्षिप्त रूप

आईबीएम डेवलपर्स ने कमांड नाम बनाने के लिए उपयोग किए गए संक्षेपों को मानकीकृत किया जाता हैं। परिवर्तन जैसी क्रियाओं को सदैव CHG के रूप में प्रदर्शित किया जाता है, DSP के रूप में प्रदर्शित किया जाता है, WRK के रूप में कार्य किया जाता है, CRT के रूप में बनाया जाता है। प्रोग्राम जैसे विषय सदैव PGM पर निर्धारित होते हैं, यहाँ पर उपयोगकर्ता USR होता है, तथा मॉड्यूल्स MOD प्रारूप का होता है, सर्वर SVR होता है और 'VERB' और 'SUBJECT' मेन्यू में प्रणाली पर उपयोग होने वाले सब्जेक्ट, बस GO VERB या GO SUBJECT कमांड पर इंगित किए जाते हैं।

इसी प्रकार कंट्रोल लैंग्वेज प्रोग्रामिंग संक्षिप्त रूप से सीएलपी होती हैं और तदनुसार सीएलपी स्रोत का एक प्रकार था। ILE प्रोग्रामिंग मॉडल की प्रारंभ के साथ, स्रोत प्रकार को CLLE में परिवर्तित कर दिया जाता हैं।[4]

कमांड ग्रुपिंग मेन्यू

वर्ब और सब्जेक्ट मेन्यू कमांड ग्रुपिंग मेन्यू का भाग हैं। प्रत्येक तीन (या चार) अक्षर संक्षिप्त नाम के लिए मेनू समर्पित है जो सीएमडी अक्षरों से प्रारंभ होता है। इसलिए सभी CHG कमांड देखने के लिए उपयोगकर्ता GO CMDCHG कमांड को निष्पादित करेगा। प्रोग्राम कमांड के लिए मेन्यू सीएमडीपीजीएम होगा।

कमांड ग्रुपिंग मेन्यू के अतिरिक्त अन्य मेन्यू भी हैं। AS/400 कमांड लाइन पर F4 दबाकर मेन्यूइंग प्रणाली के प्रारंभी बिंदु तक पहुँचा जा सकता है।

कमांड चयन

यदि कोई केवल कमांड का भाग जानता है या यदि तीसरे पक्ष के सॉफ़्टवेयर का उपयोग किया जा रहा है जहां कमांड एएस/400 संक्षिप्त नाम मानक के अनुरूप नहीं हैं तो आप कमांड के उस हिस्से को दर्ज करेंगे जो ज्ञात है, तारांकन चिह्न संलग्न करें (इसे बनाने के लिए) सामान्य), और एंटर दबाएं। इसके बाद प्रणाली जॉब के ऑब्जेक्ट (IBM i) लाइब्रेरी सूची में कमांड की सूची प्रदर्शित करेगा जो अभी-अभी टाइप किए गए सामान्य नामों से मेल खाता है। इसके बाद कोई भी आवश्यक कमांड्स की तलाश में सूची के माध्यम से पेज कर सकता है और फिर विकल्प 1 का उपयोग करके इसे चुनता है।

पृष्ठभूमि में प्रणाली इस कार्य को करने के लिए SLTCMD कमांड का उपयोग कर रहा है। यदि कोई ऑब्जेक्ट (IBM i) में सभी कमांड का चयन करना चाहता है तो इस कमांड को प्रांप्ट करें और विशेष मान *ALL दर्ज करें।

नमूना कोड

निम्नलिखित सीएल प्रोग्रामिंग का नमूना है। कार्यक्रम अंतःक्रियात्मक रूप से जूलियन से एमडीवाई और इसके विपरीत तारीखों को परिवर्तित करता है। परिणाम टर्मिनल की लाइन 24 पर प्रदर्शित होते हैं। यह दो मापदंडों को स्वीकार करता है। &IN e> पैरामीटर जो कनवर्ट की जाने वाली दिनांक स्ट्रिंग है। यदि जूलियन स्ट्रिंग यह YYNNN प्रारूप में होनी चाहिए जहां YY वर्ष संख्या है और NNN वर्ष की दिन संख्या है। यदि कोई MDY स्ट्रिंग MMDDYY प्रारूप में होनी चाहिए। दूसरा पैरामीटर है &TYP किस प्रकार की तिथि को परिवर्तित किया जाना है। यह 'J' (जूलियन) या 'M' (एमडीवाई) होना चाहिए। उदाहरण के लिए: कमांड CALL PGM(ICVTDATC) PARM('04180' 'M') जूलियन दिनांक 04180 को 062804 (28 जून, 2004) में परिवर्तित कर देता हैं।

PGM (&IN &TYP)

   DCL &IN  *CHAR 6
   DCL &OUT *CHAR 8
   DCL &TYP *CHAR 1

   IF (&TYP = J) +
      DO
         CVTDAT DATE(&IN) TOVAR(&OUT) FROMFMT(*MDY) +
                TOFMT(*JUL) TOSEP(*NONE)
      ENDDO

   ELSE IF (&TYP = M) +
      DO
         CVTDAT DATE(&IN) TOVAR(&OUT) FROMFMT(*JUL) +
                TOFMT(*MDY) TOSEP(*NONE)
      ENDDO

   SNDPGMMSG MSG('IN=' || &IN || '  OUT=' || &OUT) +
             MSGTYPE(*COMP)


ENDPGM  


यह भी देखें

संदर्भ

  1. "IBM System/38 Control Language Reference Manual" (PDF). IBM. 1982-09-10. Retrieved 2021-03-24.
  2. itjungle.com
  3. IBM.com
  4. Meyers, Bryan (1997). Control Language Programming for the AS/400 (2nd ed.). 29th Street Press. ISBN 9781882419760.