कंट्रोल लैंग्वेज

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

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

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

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

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

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

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

<पोजिशनल-पैरामीटर-लिस्ट> ::= <पैरामीटर-वैल्यू> [<पोजिशनल-पैरामीटर-लिस्ट>]

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

<पैरामीटर-एलिमेंट-लिस्ट> ::= <पैरामीटर-वैल्यू> [<पैरामीटर-एलिमेंट-लिस्ट>]

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

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

CHGPGM MYPGM ऑप्टिमाइज़(*फुल) RMVOBS(*BLKORD *PRCORD) टेक्स्ट('मेरा प्रोग्राम।')

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


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

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

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

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

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

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

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

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

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

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

ऑपरेटिंग सिस्टम के V5R3 की शुरुआत में मदद बनाने का एक नया, अधिक सरल तरीका जोड़ा गया: कमांड चलाएँ GENCMDDOC सीएमडी (MYLIB/MyCMD) TODIR('/QSYS.LIB/MYLIB.LIB/QPNLSRC.FILE) GENOPT(*UIM) कमांड द्वारा वर्णित सभी मापदंडों सहित एक कंकाल UIM पैनल समूह स्वचालित रूप से उत्पन्न हो जाएगा। परिणाम फ़ाइल को संपादित किया जा सकता है (एसईयू, डब्लूडीएससी, आरडीआई), फिर सीआरटीपीएनएलजीआरपी कमांड के साथ संकलित किया गया है, और अंत में सीएचजीसीएमडी एचएलपीपीएनएलजीआरपी के माध्यम से कमांड से जुड़ा हुआ है।

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

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

इसी तरह, नियंत्रण भाषा प्रोग्रामिंग संक्षिप्त रूप से सीएलपी था, और स्रोत प्रकार तदनुसार सीएलपी था। ILE प्रोग्रामिंग मॉडल की शुरुआत के साथ, स्रोत प्रकार को CLLE में बदल दिया गया।

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

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

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

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

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

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

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

और अगर (&TYP = एम) + करना सीवीटीडीएटी तारीख(और में) तोवर(और बाहर) से एफएमएमटी(*जुलाई) + टीओएफएमटी(*एमडीवाई) टीओएसईपी(*कोई नहीं) ENDDO

एसएनडीपीजीएमएमएसजी एमएसजी ('आईएन =' || और इन || 'आउट =' || और आउट) + एमएसजीटाइप(*COMP)

ईएनडीपीजीएम 

यह भी देखें

 * क्यूशेल
 * रेक्स