खोज…
टिप्पणियों
कॉल का बयान
निम्नलिखित कथन के लिए COBOL स्टेटिक लिंकेज का उपयोग कर सकता है। संकलन के समय ज्ञात सभी बाहरी प्रतीकों के लिए GnuCOBOL डिफ़ॉल्ट रूप से डायनेमिक लिंकेज का उपयोग करता है, तब भी जब प्रतीक शाब्दिक हो:
CALL "subprogram" USING a b c *> run a (possibly static linked) sub program
*> passing three fields
CALL some-prog USING a b c *> some-prog is a PIC X item and can be changed
*> at run-time to do a dynamic lookup
यह स्टेटमेंट टाइम लिंक एडिट रेजोल्यूशन को संकलित करता है। (गैर मानक, वाक्यविन्यास विस्तार) :
CALL STATIC "subprogram" USING a b c
COBOL में फ़ील्ड्स को रिफरेन्स BY REFERENCE
पारित किया जा सकता है (डिफ़ॉल्ट, जब तक ओवरराइड नहीं किया जाता है - ओवरराइड्स बाएं से दाएं क्रम में sticky
होता है), BY CONTENT
(एक कॉपी REFERENCE द्वारा पारित की जाती है), या कुछ मामलों में सीधे BY VALUE
:
CALL "calculation" USING BY REFERENCE a BY VALUE b BY CONTENT c RETURNING d
ON EXCEPTION DISPLAY 'No linkage to "calculation"' UPON SYSERR
END-CALL
COBOL एक BY REFERENCE
भाषा है, इसलिए BY VALUE
का उपयोग करके समस्याएँ प्रस्तुत की जा सकती हैं। उदाहरण के लिए, शाब्दिक संख्याओं का कोई स्पष्ट प्रकार नहीं है और COBOL युक्ति का कोई स्पष्ट प्रकार पदोन्नति नियम नहीं है। इसलिए डेवलपर्स को BY VALUE
के शाब्दिक के साथ कॉल फ्रेम सेटअप के बारे में चिंता करनी होगी।
अधिक जानकारी के लिए http://open-cobol.sourceforge.net/faq/index.html#call देखें।
सोने का समय
कॉल भी COBOL कार्यक्षमता को बढ़ाने का एक तरीका है, और कोड की पुन: प्रयोज्य की अनुमति देने के लिए भी है। यह "सिस्टम" कार्यक्षमता तक पहुंच भी दे सकता है।
यह उदाहरण आईबीएम मेनफ्रेम कोबल्स को "नींद" कार्यक्षमता प्रदान करने के तरीके दिखाता है। ध्यान रखें कि ऐसा करने की आवश्यकता इस हद तक दुर्लभ है कि आमतौर पर जब कोई सोचता है कि उन्हें किसी कारण से "नींद" की आवश्यकता है, तो यह गलत काम है।
ILBOWAT0 मेनफ्रेम पर पुराने COBOL- विशिष्ट रनटाइम युग से है। BXP1SLP और BXP4SLP यूनिक्स सिस्टम सर्विसेज (USS) रूटीन हैं जिनका उपयोग किसी भी भाषा द्वारा किया जा सकता है। प्रभावी रूप से वे यूनिक्स "नींद" अनुरोध हैं।
वर्तमान आईबीएम मेनफ्रेम रनटाइम (भाषा पर्यावरण) (ले) इंटर-भाषा संचार के लिए प्रदान करता है, और CEE3DLY LE सेवाओं को एक अन्य उदाहरण में दिखाया गया है, z / OS भाषा पर्यावरण थ्रेड विलंब सेवा का उपयोग करते हुए ।
ILBOWAT0 बहुत लंबे समय (शायद 40 साल से अधिक) के आसपास रहा है, और आप अभी भी इसके पार आ सकते हैं। इसका उपयोग CEE3DLY या BXP1SLP द्वारा प्रतिस्थापित किया जाना चाहिए, जो भी विशेष आवश्यकता के लिए अधिक उपयुक्त है।
कभी-कभी आपको सोने के लिए एक कार्यक्रम का कारण बनने की आवश्यकता होती है, या एक एफ़टीपी या एनडीएम कदम के बाद थोड़ी देर के लिए एक नौकरी का कारण बनता है, जो आमतौर पर अलग-अलग नौकरियों के रूप में चलाए जाते हैं, और आपको परिणामी डेटासेट की तलाश में नींद / लूप की आवश्यकता होगी।
यहाँ टास्क करने के लिए एक प्यारा सा COBOL प्रोग्राम है, जो OS / VS में उपलब्ध COBOL स्लीप प्रोग्राम और शायद अन्य विरासत और वर्तमान मेनफ्रेम ऑपरेटिंग वातावरण को बुलाता है।
IDENTIFICATION DIVISION.
PROGRAM-ID. SLEEPYTM.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WAIT-PARM.
05 WAIT-TIME PIC S9(8) COMP VALUE 90.
05 WAIT-RESPONSE PIC S9(8) COMP VALUE 0.
05 WAIT-PROGRAM-24BIT PIC X(8) VALUE 'ILBOWAT0'.
05 WAIT-PROGRAM-31BIT PIC X(8) VALUE 'BPX1SLP '.
05 WAIT-PROGRAM-64BIT PIC X(8) VALUE 'BPX4SLP '.
PROCEDURE DIVISION.
GENESIS.
DISPLAY 'START CALLING WAIT PROGRAM'
CALL WAIT-PROGRAM-24BIT USING WAIT-TIME WAIT-RESPONSE
DISPLAY 'END CALLING WAIT PROGRAM'
GOBACK
PERIOD .
माइक्रोफोकस तरीका है
माइक्रोफोकस के लिए, यह "स्लीपएक्स" एपीआई का उपयोग करता है। उदाहरण के तौर पे;
environment division.
special-names.
call-convention 74 is winAPI.
:
:
01 wSleep-time pic 9(8) comp-5.
01 wSleep-ok pic 9(8) comp-5.
:
:
move 10000 to wSleep-time *>10seconds
call winAPI "SleepEx" using by value wSleep-time
by value 0 size 4
returning wSleep-ok
end-call.
Z / OS भाषा पर्यावरण थ्रेड विलंब सेवा का उपयोग करना
किसी कार्य को निकटतम सेकंड में विलंबित करने के लिए आप CEE3DLY सेवा को 24- 31- या 64- बिट मोड में कॉल कर सकते हैं। यह सीआईसी बचा रहा है और केवल धागे में देरी करेगा।
एक उदाहरण:
IDENTIFICATION DIVISION.
PROGRAM-ID. SLEEPYTM.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WAIT-PARM.
05 WAIT-SECS PIC S9(8) COMP VALUE 90.
05 WAIT-FC PIC X(12).
PROCEDURE DIVISION.
CALL CEE3DLY USING WAIT-SECS WAIT-FC
GOBACK.
आप यहाँ और अधिक विवरण देख सकते हैं:
आईबीएम भाषा पर्यावरण कॉल करने योग्य सेवाएं - नींद