2015-09-20 8 views
5

BY CONTENT और BY VALUE के बीच CALL कथन में कथन में क्या अंतर है?कॉल स्टेटमेंट में सामग्री और BY VALUE के बीच क्या अंतर है?

+0

प्रश्न ओएस और कंपाइलर का उल्लेख करना चाहिए। उत्तरों में वर्तमान में वे विवरण शामिल हैं जो विभिन्न कंपाइलरों के लिए हमेशा सत्य नहीं होते हैं। उदाहरण के लिए, VALUE तक हमेशा {an "पूर्णांक" या एक बाइट अल्फान्यूमेरिक मान तक सीमित नहीं होता है) और शाब्दिक, और किसी भी वैध डेटा प्रकार को कम से कम कुछ COBOL कंपाइलर्स में VALUE द्वारा पारित किया जा सकता है। – user2338816

उत्तर

6

BY CONTENT एक CALL पर एक करने के लिए पहचानकर्ता की सामग्री की नकल करेंगे भंडारण के कंपाइलर-प्रबंधित क्षेत्र, जिसे तब "संदर्भ द्वारा" कॉल किए गए कार्यक्रम में भेजा जाएगा licitly।

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

कंपाइलर के लिए मान्य किसी भी आकार का कोई पहचानकर्ता, सामग्री द्वारा उपयोग किया जा सकता है (यदि मौजूदा कंपाइलर के लिए दस्तावेज किया गया है, तो किसी भी सीमा के अधीन है - जिसे आप कभी नहीं जानते)।

हालांकि आप एक कॉल किए गए प्रोग्राम में मान बदल सकते हैं, तो ऐसा करने के लिए यह थोड़ा अस्पष्ट प्रतीत होता है।

BY VALUE एक पूरी तरह से अलग जानवर है। यह बहुत सीमित है, जिसमें "पास" मान या तो "पूर्णांक" या एक बाइट अल्फान्यूमेरिक मान हो सकता है। यह एक शाब्दिक भी हो सकता है।

PROCEDURE DIVISION USING ... को पता होना चाहिए कि BY VALUE के मामले में, ऐसा है, इसे कॉल के बराबर तरीके से निर्दिष्ट करके। संदर्भ के अनुसार और कॉल पर सामग्री द्वारा प्रोसेस डिवीजन उपयोग पर संदर्भ के अनुसार दोनों हैं।

यह कैसे लागू किया गया है विशिष्ट संकलक के लिए नीचे है। आईबीएम एंटरप्राइज़ कोबोल मूल्य को "पैरामीटर सूची" में रखता है।

+0

@ven, धन्यवाद, हालांकि मुझे लगता है कि मुझे अपने नए शब्द "मैंगेड" का उपयोग करने के अवसरों की तलाश करनी चाहिए। –

+0

निश्चित रूप से, कोबोल के विकासशील क्षेत्र में आपके लिए कुछ अवसर होंगे :-)। – Ven

1

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

तो BY CONTENT और BY VALUE के बीच का अंतर BY VALUE के मामले में केवल मान प्रदान किया जाता है और वजह नहीं चर के सभी प्रकार के हैं, जबकि BY CONTENT एक की नकल की चर का सूचक पारित हो इस तरह से हर इस तरह से पारित कर दिया और किया जा सकता है चर का प्रकार पारित किया जा सकता है।

देखें: http://documentation.microfocus.com/help/index.jsp?topic=%2Fcom.microfocus.eclipse.infocenter.visualcobol.eclipseux%2FGUID-EB09203C-3873-4DBE-9298-0C353BC0701A.html

संदर्भ द्वारा:

एक पैरामीटर संदर्भ द्वारा पारित कर दिया जाता है, JVM कोबोल में आइटम की एक प्रतिलिपि मूल कोड को पारित कर दिया है। जब मूल के लिए कॉल समाप्त हो गया है, तो देशी कोड में दी गई जानकारी में कोई भी परिवर्तन JVM COBOL पर वापस कॉपी किया गया है। हालांकि, इसका मतलब यह है कि स्मृति जेवीएम और देशी वातावरण के बीच साझा की गई है। वास्तव में, वास्तव में मूल कोड को पास किया गया है जो प्रतिलिपि डेटा के लिए एक सूचक है। यदि आप गैर-COBOL प्रोग्राम को कॉल कर रहे हैं तो यह उपयोगी है। इसके प्रभाव बहुत महत्वपूर्ण हैं, खासकर बहु-थ्रेडेड वातावरण में। संदर्भ पैरामीटर में कोई भी परिवर्तन को JVM COBOL कॉलिंग प्रोग्राम तक दिखाई नहीं देता है जब तक कॉल पूरा नहीं हो जाता है। मनमाने ढंग से जटिल समूह आइटम (स्मृति सीमाओं के भीतर) संदर्भ द्वारा पारित किया जा सकता है। समूह परिभाषा देशी और JVM COBOL स्रोत कोड में समान होनी चाहिए और इसमें USAGE POINTER आइटम शामिल नहीं होना चाहिए। स्ट्रिंग्स (java.lang.Strings) और तालिकाओं (java.lang.byte arrays) संदर्भ द्वारा पारित किया जा सकता है। अन्य सभी ऑब्जेक्ट्स ( java.lang.Object से वैल्यूटाइप सहित) प्राप्त करने वाले प्रकार संदर्भ (या मूल्य से - नीचे देखें) द्वारा पारित नहीं किए जा सकते हैं।

सामग्री

सामग्री द्वारा मानकों को पारित करके सिवाय इसके कि डेटा JVM कोबोल स्मृति में वापस कॉपी नहीं किया जाता है जब कॉल पूरा कर लिया है संदर्भ, से गुजर के समान है। संदर्भ द्वारा पारित किया जा सकता है कि कोई भी आइटम सामग्री द्वारा पारित किया जा सकता है। मूल्य पिक एक्स (4) कंप्यूटर अनुप्रयोग-x से पारित करने के लिए प्रकार की सिफारिश की - द्विआधारी लंबी:

तक मूल्य

JVM कोबोल में, केवल आइटम है कि मूल्य द्वारा पारित किया जा सकता के रूप में इस प्रकार हैं पिक (9) 9 कंप्यूटर अनुप्रयोग पिक रों (9) 9 कंप्यूटर अनुप्रयोग पिक (9) 9 कंप्यूटर अनुप्रयोग -5 पिक रों (9) 9 कंप्यूटर अनुप्रयोग-5

+0

मैं आपसे सहमत नहीं हूं, JVM या कोई JVM यह वही काम करता है, और स्वीकृत उत्तर के समान जानकारी है। –

+0

ठीक है, बुलाए गए कार्यक्रम बिंदुओं से, वे समान हैं। कि उन्हें वापस कॉपी नहीं किया गया है यह कहने का एक पिछड़ा तरीका है कि उन्हें डिस्पोजेबल स्टोरेज में कॉपी किया गया है और किसी भी बदलाव को नजरअंदाज कर दिया जाएगा। –

+0

धन्यवाद, प्रश्न को और अधिक प्रतिबिंबित करने के लिए उत्तर अपडेट किया गया। –

संबंधित मुद्दे