COBOL के उन्नत विषय – Advanced COBOL Topics

COBOL के उन्नत विषय – Advanced COBOL Topics

COBOL प्रोग्रामिंग की बुनियादी जानकारी हासिल करने के बाद, अगला कदम है उन्नत विषयों को समझना जो आपको अधिक जटिल और प्रभावी प्रोग्राम लिखने में मदद करेंगे। इस खंड में, हम COBOL के उन्नत विषयों जैसे सबरूटीन और मॉड्यूल, टेबल्स और इंडेक्सेड डेटा, डेटाबेस कनेक्टिविटी, और इंटरैक्टिव प्रोग्रामिंग पर चर्चा करेंगे। ये विषय आपको प्रोग्रामिंग की उच्चतर तकनीकों को समझने और उन्हें अपने प्रोजेक्ट्स में लागू करने के लिए तैयार करेंगे। उन्नत COBOL टॉपिक्स पर यह गाइड आपकी प्रोग्रामिंग दक्षता को एक नई ऊँचाई पर ले जाएगी।

COBOL में सबरूटीन और मॉड्यूल (Subroutines and Modules)

COBOL में सबरूटीन और मॉड्यूल्स का उपयोग कोड को व्यवस्थित, पुन: प्रयोज्य, और अधिक समझने योग्य बनाने के लिए किया जाता है। सबरूटीन और मॉड्यूल्स बड़े प्रोग्राम्स को छोटे-छोटे लॉजिकल हिस्सों में विभाजित करने में मदद करते हैं, जिससे कोड का रखरखाव और परीक्षण आसान हो जाता है। आइए हम इन्हें विस्तार से समझते हैं।

1. सबरूटीन (Subroutines)

  • परिभाषा: सबरूटीन एक प्रोग्राम के भीतर एक स्वतंत्र कोड ब्लॉक होता है जिसे मुख्य प्रोग्राम से अलग किया जा सकता है। इसका उपयोग तब किया जाता है जब किसी विशेष कार्य को बार-बार निष्पादित करने की आवश्यकता होती है। सबरूटीन को कई बार कॉल किया जा सकता है, जिससे कोड को पुन: प्रयोज्य और संरचित बनाया जा सकता है।
  • प्रकार:
    • Internal Subroutines: ये सबरूटीन मुख्य प्रोग्राम के भीतर ही परिभाषित होते हैं और आमतौर पर एक पैराग्राफ या सेक्शन के रूप में लिखे जाते हैं। इन्हें PERFORM स्टेटमेंट का उपयोग करके कॉल किया जाता है।
    • External Subroutines: ये सबरूटीन अलग फाइल में परिभाषित होते हैं और CALL स्टेटमेंट का उपयोग करके मुख्य प्रोग्राम से कॉल किए जाते हैं।

उदाहरण:

  • Internal Subroutine:
    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    PROCEDURE DIVISION.
    PERFORM CALCULATE-TOTAL.
    PERFORM DISPLAY-RESULT.
    STOP RUN.
    CALCULATE-TOTAL.
    ADD PRICE TO TOTAL-AMOUNT.
    DISPLAY-RESULT.
    DISPLAY 'Total Amount: ' TOTAL-AMOUNT.
    PROCEDURE DIVISION. PERFORM CALCULATE-TOTAL. PERFORM DISPLAY-RESULT. STOP RUN. CALCULATE-TOTAL. ADD PRICE TO TOTAL-AMOUNT. DISPLAY-RESULT. DISPLAY 'Total Amount: ' TOTAL-AMOUNT.
    PROCEDURE DIVISION.
        PERFORM CALCULATE-TOTAL.
        PERFORM DISPLAY-RESULT.
        STOP RUN.
    
    CALCULATE-TOTAL.
        ADD PRICE TO TOTAL-AMOUNT.
    
    DISPLAY-RESULT.
        DISPLAY 'Total Amount: ' TOTAL-AMOUNT.
    

     

  • External Subroutine:
    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    CALL 'CALC-MODULE' USING PRICE TOTAL-AMOUNT.
    CALL 'CALC-MODULE' USING PRICE TOTAL-AMOUNT.
    CALL 'CALC-MODULE' USING PRICE TOTAL-AMOUNT.
    

     

उदाहरण का विवरण:

  • PERFORM CALCULATE-TOTAL और PERFORM DISPLAY-RESULT इंटरनल सबरूटीन को कॉल करते हैं, जो PRICE को TOTAL-AMOUNT में जोड़ते हैं और परिणाम प्रदर्शित करते हैं।
  • CALL 'CALC-MODULE' एक एक्सटर्नल सबरूटीन को कॉल करता है, जिसे एक अलग फाइल में परिभाषित किया गया हो सकता है।

2. मॉड्यूल्स (Modules)

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

उदाहरण:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CALL 'PROCESS-TRANSACTION' USING TRANSACTION-ID, TRANSACTION-AMOUNT.
CALL 'PROCESS-TRANSACTION' USING TRANSACTION-ID, TRANSACTION-AMOUNT.
CALL 'PROCESS-TRANSACTION' USING TRANSACTION-ID, TRANSACTION-AMOUNT.

उदाहरण का विवरण:

  • CALL 'PROCESS-TRANSACTION' स्टेटमेंट PROCESS-TRANSACTION नामक एक मॉड्यूल को कॉल करता है, जो TRANSACTION-ID और TRANSACTION-AMOUNT को प्रोसेस करता है।

उदाहरण प्रोग्राम (Example Program using Subroutine and Module):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
IDENTIFICATION DIVISION.
PROGRAM-ID. MainProgram.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 PRICE PIC 9(4)V99 VALUE 100.50.
01 TOTAL-AMOUNT PIC 9(7)V99 VALUE 0.
PROCEDURE DIVISION.
PERFORM CALCULATE-TOTAL.
CALL 'DISPLAY-MODULE' USING TOTAL-AMOUNT.
STOP RUN.
CALCULATE-TOTAL.
ADD PRICE TO TOTAL-AMOUNT.
IDENTIFICATION DIVISION. PROGRAM-ID. MainProgram. DATA DIVISION. WORKING-STORAGE SECTION. 01 PRICE PIC 9(4)V99 VALUE 100.50. 01 TOTAL-AMOUNT PIC 9(7)V99 VALUE 0. PROCEDURE DIVISION. PERFORM CALCULATE-TOTAL. CALL 'DISPLAY-MODULE' USING TOTAL-AMOUNT. STOP RUN. CALCULATE-TOTAL. ADD PRICE TO TOTAL-AMOUNT.
IDENTIFICATION DIVISION.
PROGRAM-ID. MainProgram.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 PRICE            PIC 9(4)V99 VALUE 100.50.
01 TOTAL-AMOUNT     PIC 9(7)V99 VALUE 0.

PROCEDURE DIVISION.
    PERFORM CALCULATE-TOTAL.
    CALL 'DISPLAY-MODULE' USING TOTAL-AMOUNT.
    STOP RUN.

CALCULATE-TOTAL.
    ADD PRICE TO TOTAL-AMOUNT.

External Module (DISPLAY-MODULE)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
IDENTIFICATION DIVISION.
PROGRAM-ID. DisplayModule.
DATA DIVISION.
LINKAGE SECTION.
01 LNK-TOTAL-AMOUNT PIC 9(7)V99.
PROCEDURE DIVISION USING LNK-TOTAL-AMOUNT.
DISPLAY 'The Total Amount is: ' LNK-TOTAL-AMOUNT.
STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. DisplayModule. DATA DIVISION. LINKAGE SECTION. 01 LNK-TOTAL-AMOUNT PIC 9(7)V99. PROCEDURE DIVISION USING LNK-TOTAL-AMOUNT. DISPLAY 'The Total Amount is: ' LNK-TOTAL-AMOUNT. STOP RUN.
IDENTIFICATION DIVISION.
PROGRAM-ID. DisplayModule.

DATA DIVISION.
LINKAGE SECTION.
01 LNK-TOTAL-AMOUNT PIC 9(7)V99.

PROCEDURE DIVISION USING LNK-TOTAL-AMOUNT.
    DISPLAY 'The Total Amount is: ' LNK-TOTAL-AMOUNT.
    STOP RUN.

प्रोग्राम की व्याख्या (Explanation of the Program):

  • Main Program: मुख्य प्रोग्राम PERFORM CALCULATE-TOTAL का उपयोग करता है, जो एक इंटरनल सबरूटीन है, PRICE को TOTAL-AMOUNT में जोड़ने के लिए।
  • External Module: CALL 'DISPLAY-MODULE' USING TOTAL-AMOUNT स्टेटमेंट DISPLAY-MODULE नामक एक्सटर्नल मॉड्यूल को कॉल करता है, जो TOTAL-AMOUNT को प्रदर्शित करता है।

COBOL में टेबल्स और इंडेक्सेड डेटा (Working with Tables and Indexed Data)

COBOL में टेबल्स और इंडेक्सेड डेटा का उपयोग डेटा को संरचित और कुशल तरीके से संग्रहित करने और प्रोसेस करने के लिए किया जाता है। टेबल्स डेटा के एकत्रीकरण का प्रतिनिधित्व करते हैं, जिसमें समान प्रकार के कई डेटा आइटम्स होते हैं। इंडेक्स का उपयोग टेबल के डेटा तक तेज़ी से पहुंचने के लिए किया जाता है। आइए हम COBOL में टेबल्स और इंडेक्सेड डेटा के साथ काम करने की प्रक्रिया को विस्तार से समझें।

1. टेबल्स की परिभाषा (Defining Tables)

  • परिभाषा: COBOL में टेबल्स एक डेटा संरचना है, जिसमें एक ही प्रकार के डेटा आइटम्स की एक सूची होती है। इसे वेरिएबल्स के एक समूह के रूप में समझा जा सकता है, जिसे एक साथ संग्रहित और प्रोसेस किया जा सकता है।
  • घोषणा: टेबल्स को WORKING-STORAGE SECTION में घोषित किया जाता है, जहाँ प्रत्येक आइटम को एक सबस्क्रिप्ट (इंडेक्स) के साथ एक्सेस किया जा सकता है।
  • उदाहरण:
    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    01 EMPLOYEE-TABLE.
    05 EMPLOYEE-RECORD OCCURS 10 TIMES INDEXED BY EMP-INDEX.
    10 EMPLOYEE-ID PIC 9(5).
    10 EMPLOYEE-NAME PIC X(30).
    10 EMPLOYEE-SALARY PIC 9(7)V99.
    01 EMPLOYEE-TABLE. 05 EMPLOYEE-RECORD OCCURS 10 TIMES INDEXED BY EMP-INDEX. 10 EMPLOYEE-ID PIC 9(5). 10 EMPLOYEE-NAME PIC X(30). 10 EMPLOYEE-SALARY PIC 9(7)V99.
    01  EMPLOYEE-TABLE.
        05  EMPLOYEE-RECORD OCCURS 10 TIMES INDEXED BY EMP-INDEX.
            10 EMPLOYEE-ID     PIC 9(5).
            10 EMPLOYEE-NAME   PIC X(30).
            10 EMPLOYEE-SALARY PIC 9(7)V99.
    

    इस उदाहरण में, EMPLOYEE-TABLE एक टेबल है, जिसमें 10 EMPLOYEE-RECORD हो सकते हैं। प्रत्येक रिकॉर्ड में EMPLOYEE-ID, EMPLOYEE-NAME, और EMPLOYEE-SALARY शामिल हैं।

2. टेबल्स के साथ काम करना (Working with Tables)

  • डेटा असाइनमेंट: टेबल्स के प्रत्येक आइटम को एक सबस्क्रिप्ट (इंडेक्स) के माध्यम से एक्सेस किया जाता है।
  • उदाहरण:
    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    MOVE 101 TO EMPLOYEE-ID (1).
    MOVE 'John Doe' TO EMPLOYEE-NAME (1).
    MOVE 50000.00 TO EMPLOYEE-SALARY (1).
    MOVE 101 TO EMPLOYEE-ID (1). MOVE 'John Doe' TO EMPLOYEE-NAME (1). MOVE 50000.00 TO EMPLOYEE-SALARY (1).
    MOVE 101 TO EMPLOYEE-ID (1).
    MOVE 'John Doe' TO EMPLOYEE-NAME (1).
    MOVE 50000.00 TO EMPLOYEE-SALARY (1).
    

    इस उदाहरण में, पहले कर्मचारी (EMPLOYEE-ID (1)) का डेटा असाइन किया गया है।

  • टेबल के आइटम्स तक पहुंचना: टेबल के आइटम्स तक पहुंचने के लिए आप सबस्क्रिप्ट का उपयोग कर सकते हैं।
    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    DISPLAY EMPLOYEE-NAME (1).
    DISPLAY EMPLOYEE-SALARY (1).
    DISPLAY EMPLOYEE-NAME (1). DISPLAY EMPLOYEE-SALARY (1).
    DISPLAY EMPLOYEE-NAME (1).
    DISPLAY EMPLOYEE-SALARY (1).
    

     

3. इंडेक्सेड डेटा के साथ काम करना (Working with Indexed Data)

  • परिभाषा: इंडेक्स का उपयोग टेबल में डेटा आइटम्स को तेज़ी से एक्सेस करने के लिए किया जाता है। इंडेक्स को AUTOMATICALLY COBOL द्वारा मैनेज किया जाता है और इसका उपयोग टेबल्स के डेटा को सॉर्ट, सर्च, और एक्सेस करने के लिए किया जा सकता है।
  • इंडेक्स की घोषणा: टेबल्स में डेटा आइटम्स को इंडेक्स करने के लिए INDEXED BY क्लॉज़ का उपयोग किया जाता है।
  • इंडेक्स का उपयोग: SET और SEARCH स्टेटमेंट्स का उपयोग इंडेक्स को मैनेज और उपयोग करने के लिए किया जाता है।

उदाहरण:

  • SET इंडेक्स करना:
    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    SET EMP-INDEX TO 1.
    MOVE 101 TO EMPLOYEE-ID (EMP-INDEX).
    SET EMP-INDEX TO 1. MOVE 101 TO EMPLOYEE-ID (EMP-INDEX).
    SET EMP-INDEX TO 1.
    MOVE 101 TO EMPLOYEE-ID (EMP-INDEX).
    

     

  • SEARCH इंडेक्सेड डेटा:
    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    SEARCH EMPLOYEE-RECORD
    AT END
    DISPLAY 'Employee not found'
    WHEN EMPLOYEE-ID (EMP-INDEX) = 101
    DISPLAY 'Employee Name: ' EMPLOYEE-NAME (EMP-INDEX)
    END-SEARCH.
    SEARCH EMPLOYEE-RECORD AT END DISPLAY 'Employee not found' WHEN EMPLOYEE-ID (EMP-INDEX) = 101 DISPLAY 'Employee Name: ' EMPLOYEE-NAME (EMP-INDEX) END-SEARCH.
    SEARCH EMPLOYEE-RECORD
        AT END
            DISPLAY 'Employee not found'
        WHEN EMPLOYEE-ID (EMP-INDEX) = 101
            DISPLAY 'Employee Name: ' EMPLOYEE-NAME (EMP-INDEX)
    END-SEARCH.
    

     

उदाहरण का विवरण:

  • SET स्टेटमेंट का उपयोग करके EMP-INDEX को सेट किया जाता है, जिससे EMPLOYEE-ID को इंडेक्स के माध्यम से असाइन किया जाता है।
  • SEARCH स्टेटमेंट का उपयोग EMPLOYEE-ID के आधार पर टेबल में डेटा को खोजने के लिए किया जाता है।

4. टेबल्स के साथ लूपिंग (Looping through Tables)

  • लूपिंग: आप PERFORM स्टेटमेंट का उपयोग करके टेबल्स के सभी आइटम्स को प्रोसेस कर सकते हैं।
  • उदाहरण:
    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    PERFORM VARYING EMP-INDEX FROM 1 BY 1 UNTIL EMP-INDEX > 10
    DISPLAY 'Employee ID: ' EMPLOYEE-ID (EMP-INDEX)
    DISPLAY 'Employee Name: ' EMPLOYEE-NAME (EMP-INDEX)
    DISPLAY 'Employee Salary: ' EMPLOYEE-SALARY (EMP-INDEX)
    END-PERFORM.
    PERFORM VARYING EMP-INDEX FROM 1 BY 1 UNTIL EMP-INDEX > 10 DISPLAY 'Employee ID: ' EMPLOYEE-ID (EMP-INDEX) DISPLAY 'Employee Name: ' EMPLOYEE-NAME (EMP-INDEX) DISPLAY 'Employee Salary: ' EMPLOYEE-SALARY (EMP-INDEX) END-PERFORM.
    PERFORM VARYING EMP-INDEX FROM 1 BY 1 UNTIL EMP-INDEX > 10
        DISPLAY 'Employee ID: ' EMPLOYEE-ID (EMP-INDEX)
        DISPLAY 'Employee Name: ' EMPLOYEE-NAME (EMP-INDEX)
        DISPLAY 'Employee Salary: ' EMPLOYEE-SALARY (EMP-INDEX)
    END-PERFORM.
    

    इस उदाहरण में, EMP-INDEX का उपयोग करके EMPLOYEE-TABLE के सभी रिकॉर्ड्स को लूप के माध्यम से प्रोसेस किया गया है।

उदाहरण प्रोग्राम (Example Program using Tables and Indexed Data):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
IDENTIFICATION DIVISION.
PROGRAM-ID. TableExample.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 EMPLOYEE-TABLE.
05 EMPLOYEE-RECORD OCCURS 5 TIMES INDEXED BY EMP-INDEX.
10 EMPLOYEE-ID PIC 9(5).
10 EMPLOYEE-NAME PIC X(30).
10 EMPLOYEE-SALARY PIC 9(7)V99.
PROCEDURE DIVISION.
SET EMP-INDEX TO 1.
MOVE 101 TO EMPLOYEE-ID (EMP-INDEX).
MOVE 'John Doe' TO EMPLOYEE-NAME (EMP-INDEX).
MOVE 50000.00 TO EMPLOYEE-SALARY (EMP-INDEX).
SET EMP-INDEX TO 2.
MOVE 102 TO EMPLOYEE-ID (EMP-INDEX).
MOVE 'Jane Smith' TO EMPLOYEE-NAME (EMP-INDEX).
MOVE 60000.00 TO EMPLOYEE-SALARY (EMP-INDEX).
PERFORM VARYING EMP-INDEX FROM 1 BY 1 UNTIL EMP-INDEX > 2
DISPLAY 'Employee ID: ' EMPLOYEE-ID (EMP-INDEX)
DISPLAY 'Employee Name: ' EMPLOYEE-NAME (EMP-INDEX)
DISPLAY 'Employee Salary: ' EMPLOYEE-SALARY (EMP-INDEX)
END-PERFORM.
STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. TableExample. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-TABLE. 05 EMPLOYEE-RECORD OCCURS 5 TIMES INDEXED BY EMP-INDEX. 10 EMPLOYEE-ID PIC 9(5). 10 EMPLOYEE-NAME PIC X(30). 10 EMPLOYEE-SALARY PIC 9(7)V99. PROCEDURE DIVISION. SET EMP-INDEX TO 1. MOVE 101 TO EMPLOYEE-ID (EMP-INDEX). MOVE 'John Doe' TO EMPLOYEE-NAME (EMP-INDEX). MOVE 50000.00 TO EMPLOYEE-SALARY (EMP-INDEX). SET EMP-INDEX TO 2. MOVE 102 TO EMPLOYEE-ID (EMP-INDEX). MOVE 'Jane Smith' TO EMPLOYEE-NAME (EMP-INDEX). MOVE 60000.00 TO EMPLOYEE-SALARY (EMP-INDEX). PERFORM VARYING EMP-INDEX FROM 1 BY 1 UNTIL EMP-INDEX > 2 DISPLAY 'Employee ID: ' EMPLOYEE-ID (EMP-INDEX) DISPLAY 'Employee Name: ' EMPLOYEE-NAME (EMP-INDEX) DISPLAY 'Employee Salary: ' EMPLOYEE-SALARY (EMP-INDEX) END-PERFORM. STOP RUN.
IDENTIFICATION DIVISION.
PROGRAM-ID. TableExample.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  EMPLOYEE-TABLE.
    05  EMPLOYEE-RECORD OCCURS 5 TIMES INDEXED BY EMP-INDEX.
        10 EMPLOYEE-ID     PIC 9(5).
        10 EMPLOYEE-NAME   PIC X(30).
        10 EMPLOYEE-SALARY PIC 9(7)V99.

PROCEDURE DIVISION.
    SET EMP-INDEX TO 1.
    MOVE 101 TO EMPLOYEE-ID (EMP-INDEX).
    MOVE 'John Doe' TO EMPLOYEE-NAME (EMP-INDEX).
    MOVE 50000.00 TO EMPLOYEE-SALARY (EMP-INDEX).

    SET EMP-INDEX TO 2.
    MOVE 102 TO EMPLOYEE-ID (EMP-INDEX).
    MOVE 'Jane Smith' TO EMPLOYEE-NAME (EMP-INDEX).
    MOVE 60000.00 TO EMPLOYEE-SALARY (EMP-INDEX).

    PERFORM VARYING EMP-INDEX FROM 1 BY 1 UNTIL EMP-INDEX > 2
        DISPLAY 'Employee ID: ' EMPLOYEE-ID (EMP-INDEX)
        DISPLAY 'Employee Name: ' EMPLOYEE-NAME (EMP-INDEX)
        DISPLAY 'Employee Salary: ' EMPLOYEE-SALARY (EMP-INDEX)
    END-PERFORM.

    STOP RUN.

प्रोग्राम की व्याख्या (Explanation of the Program):

  • Employee Table: EMPLOYEE-TABLE एक टेबल है, जिसमें पांच कर्मचारी रिकॉर्ड्स स्टोर किए जा सकते हैं। प्रत्येक रिकॉर्ड में EMPLOYEE-ID, EMPLOYEE-NAME, और EMPLOYEE-SALARY शामिल हैं।
  • Indexing: SET स्टेटमेंट का उपयोग इंडेक्स को सेट करने के लिए किया गया है, और प्रत्येक इंडेक्स के लिए कर्मचारी डेटा असाइन किया गया है।
  • Looping: PERFORM स्टेटमेंट का उपयोग टेबल में सभी कर्मचारियों के डेटा को प्रदर्शित करने के लिए किया गया है।

COBOL में डेटाबेस कनेक्टिविटी (Database Connectivity with COBOL)

COBOL प्रोग्रामिंग में डेटाबेस कनेक्टिविटी आपको संरचित डेटा को संग्रहीत, पुनः प्राप्त, और प्रबंधित करने की क्षमता प्रदान करती है। COBOL प्रोग्राम्स को डेटाबेस से जोड़ने के लिए कई तरीके हैं, जिनमें प्रमुख हैं Embedded SQL और Call Interface का उपयोग। ये तकनीकें आपको डेटाबेस ऑपरेशन्स जैसे डेटा क्वेरी, अपडेट, और डिलीट को COBOL प्रोग्राम्स के भीतर से ही करने की सुविधा प्रदान करती हैं। आइए हम डेटाबेस कनेक्टिविटी की प्रक्रिया को विस्तार से समझते हैं।

1. Embedded SQL के साथ डेटाबेस कनेक्टिविटी (Database Connectivity with Embedded SQL)

  • परिभाषा: Embedded SQL का उपयोग COBOL प्रोग्राम्स में SQL क्वेरीज़ को सीधे एम्बेड करने के लिए किया जाता है। इससे आपको SQL कमांड्स का उपयोग करके डेटाबेस से डेटा एक्सेस और प्रबंधित करने की सुविधा मिलती है।
  • EXEC SQL और END-EXEC क्लॉज़: COBOL में SQL स्टेटमेंट्स को EXEC SQL और END-EXEC के बीच एम्बेड किया जाता है।

उदाहरण:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
EXEC SQL
SELECT EMPLOYEE_ID, EMPLOYEE_NAME, EMPLOYEE_SALARY
INTO :EMPLOYEE-ID, :EMPLOYEE-NAME, :EMPLOYEE-SALARY
FROM EMPLOYEES
WHERE EMPLOYEE_ID = 101
END-EXEC.
EXEC SQL SELECT EMPLOYEE_ID, EMPLOYEE_NAME, EMPLOYEE_SALARY INTO :EMPLOYEE-ID, :EMPLOYEE-NAME, :EMPLOYEE-SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID = 101 END-EXEC.
EXEC SQL
    SELECT EMPLOYEE_ID, EMPLOYEE_NAME, EMPLOYEE_SALARY
    INTO :EMPLOYEE-ID, :EMPLOYEE-NAME, :EMPLOYEE-SALARY
    FROM EMPLOYEES
    WHERE EMPLOYEE_ID = 101
END-EXEC.

इस उदाहरण में, SQL क्वेरी का उपयोग करके EMPLOYEES टेबल से EMPLOYEE_ID 101 का डेटा प्राप्त किया गया है और COBOL वेरिएबल्स में स्टोर किया गया है।

2. डेटाबेस कनेक्शन स्थापित करना (Establishing a Database Connection)

  • DATABASE CONNECT: डेटाबेस से कनेक्शन स्थापित करने के लिए CONNECT स्टेटमेंट का उपयोग किया जाता है।

उदाहरण:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
EXEC SQL
CONNECT TO 'DatabaseName' USER 'username' USING 'password'
END-EXEC.
EXEC SQL CONNECT TO 'DatabaseName' USER 'username' USING 'password' END-EXEC.
EXEC SQL
    CONNECT TO 'DatabaseName' USER 'username' USING 'password'
END-EXEC.

इस स्टेटमेंट का उपयोग डेटाबेस से कनेक्शन स्थापित करने के लिए किया जाता है, जहाँ DatabaseName, username, और password को आपके डेटाबेस की जानकारी से बदलना होता है।

3. डेटा क्वेरी और रिट्रीवल (Data Query and Retrieval)

  • SELECT स्टेटमेंट: डेटा को डेटाबेस से प्राप्त करने के लिए SQL का SELECT स्टेटमेंट उपयोग किया जाता है।

उदाहरण:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
EXEC SQL
SELECT EMPLOYEE_ID, EMPLOYEE_NAME, EMPLOYEE_SALARY
INTO :EMPLOYEE-ID, :EMPLOYEE-NAME, :EMPLOYEE-SALARY
FROM EMPLOYEES
WHERE EMPLOYEE_ID = 101
END-EXEC.
EXEC SQL SELECT EMPLOYEE_ID, EMPLOYEE_NAME, EMPLOYEE_SALARY INTO :EMPLOYEE-ID, :EMPLOYEE-NAME, :EMPLOYEE-SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID = 101 END-EXEC.
EXEC SQL
    SELECT EMPLOYEE_ID, EMPLOYEE_NAME, EMPLOYEE_SALARY
    INTO :EMPLOYEE-ID, :EMPLOYEE-NAME, :EMPLOYEE-SALARY
    FROM EMPLOYEES
    WHERE EMPLOYEE_ID = 101
END-EXEC.

इस उदाहरण में, EMPLOYEES टेबल से EMPLOYEE_ID 101 का डेटा क्वेरी किया गया है और परिणाम को COBOL वेरिएबल्स में स्टोर किया गया है।

4. डेटाबेस में डेटा अपडेट करना (Updating Data in the Database)

  • UPDATE स्टेटमेंट: डेटाबेस में डेटा अपडेट करने के लिए UPDATE स्टेटमेंट का उपयोग किया जाता है।

उदाहरण:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
EXEC SQL
UPDATE EMPLOYEES
SET EMPLOYEE_SALARY = :NEW-SALARY
WHERE EMPLOYEE_ID = :EMPLOYEE-ID
END-EXEC.
EXEC SQL UPDATE EMPLOYEES SET EMPLOYEE_SALARY = :NEW-SALARY WHERE EMPLOYEE_ID = :EMPLOYEE-ID END-EXEC.
EXEC SQL
    UPDATE EMPLOYEES
    SET EMPLOYEE_SALARY = :NEW-SALARY
    WHERE EMPLOYEE_ID = :EMPLOYEE-ID
END-EXEC.

इस उदाहरण में, EMPLOYEES टेबल में EMPLOYEE_ID के आधार पर EMPLOYEE_SALARY को अपडेट किया गया है।

5. डेटाबेस से डेटा डिलीट करना (Deleting Data from the Database)

  • DELETE स्टेटमेंट: डेटाबेस से डेटा डिलीट करने के लिए DELETE स्टेटमेंट का उपयोग किया जाता है।

उदाहरण:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
EXEC SQL
DELETE FROM EMPLOYEES
WHERE EMPLOYEE_ID = :EMPLOYEE-ID
END-EXEC.
EXEC SQL DELETE FROM EMPLOYEES WHERE EMPLOYEE_ID = :EMPLOYEE-ID END-EXEC.
EXEC SQL
    DELETE FROM EMPLOYEES
    WHERE EMPLOYEE_ID = :EMPLOYEE-ID
END-EXEC.

इस उदाहरण में, EMPLOYEE_ID के आधार पर EMPLOYEES टेबल से रिकॉर्ड डिलीट किया गया है।

6. डेटाबेस कनेक्शन बंद करना (Closing the Database Connection)

  • DISCONNECT: डेटाबेस ऑपरेशन्स के बाद कनेक्शन को बंद करना आवश्यक होता है।

उदाहरण:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
EXEC SQL
DISCONNECT CURRENT
END-EXEC.
EXEC SQL DISCONNECT CURRENT END-EXEC.
EXEC SQL
    DISCONNECT CURRENT
END-EXEC.

इस स्टेटमेंट का उपयोग डेटाबेस कनेक्शन को सुरक्षित रूप से बंद करने के लिए किया जाता है।

उदाहरण प्रोग्राम (Example Program with Database Connectivity):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
IDENTIFICATION DIVISION.
PROGRAM-ID. DatabaseExample.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 EMPLOYEE-ID PIC 9(5).
01 EMPLOYEE-NAME PIC X(30).
01 EMPLOYEE-SALARY PIC 9(7)V99.
01 NEW-SALARY PIC 9(7)V99 VALUE 55000.00.
PROCEDURE DIVISION.
EXEC SQL
CONNECT TO 'MyDatabase' USER 'dbuser' USING 'dbpassword'
END-EXEC.
EXEC SQL
SELECT EMPLOYEE_ID, EMPLOYEE_NAME, EMPLOYEE_SALARY
INTO :EMPLOYEE-ID, :EMPLOYEE-NAME, :EMPLOYEE-SALARY
FROM EMPLOYEES
WHERE EMPLOYEE_ID = 101
END-EXEC.
DISPLAY 'Employee ID: ' EMPLOYEE-ID.
DISPLAY 'Employee Name: ' EMPLOYEE-NAME.
DISPLAY 'Employee Salary: ' EMPLOYEE-SALARY.
EXEC SQL
UPDATE EMPLOYEES
SET EMPLOYEE_SALARY = :NEW-SALARY
WHERE EMPLOYEE_ID = :EMPLOYEE-ID
END-EXEC.
EXEC SQL
DISCONNECT CURRENT
END-EXEC.
STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. DatabaseExample. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-ID PIC 9(5). 01 EMPLOYEE-NAME PIC X(30). 01 EMPLOYEE-SALARY PIC 9(7)V99. 01 NEW-SALARY PIC 9(7)V99 VALUE 55000.00. PROCEDURE DIVISION. EXEC SQL CONNECT TO 'MyDatabase' USER 'dbuser' USING 'dbpassword' END-EXEC. EXEC SQL SELECT EMPLOYEE_ID, EMPLOYEE_NAME, EMPLOYEE_SALARY INTO :EMPLOYEE-ID, :EMPLOYEE-NAME, :EMPLOYEE-SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID = 101 END-EXEC. DISPLAY 'Employee ID: ' EMPLOYEE-ID. DISPLAY 'Employee Name: ' EMPLOYEE-NAME. DISPLAY 'Employee Salary: ' EMPLOYEE-SALARY. EXEC SQL UPDATE EMPLOYEES SET EMPLOYEE_SALARY = :NEW-SALARY WHERE EMPLOYEE_ID = :EMPLOYEE-ID END-EXEC. EXEC SQL DISCONNECT CURRENT END-EXEC. STOP RUN.
IDENTIFICATION DIVISION.
PROGRAM-ID. DatabaseExample.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 EMPLOYEE-ID        PIC 9(5).
01 EMPLOYEE-NAME      PIC X(30).
01 EMPLOYEE-SALARY    PIC 9(7)V99.
01 NEW-SALARY         PIC 9(7)V99 VALUE 55000.00.

PROCEDURE DIVISION.
    EXEC SQL
        CONNECT TO 'MyDatabase' USER 'dbuser' USING 'dbpassword'
    END-EXEC.

    EXEC SQL
        SELECT EMPLOYEE_ID, EMPLOYEE_NAME, EMPLOYEE_SALARY
        INTO :EMPLOYEE-ID, :EMPLOYEE-NAME, :EMPLOYEE-SALARY
        FROM EMPLOYEES
        WHERE EMPLOYEE_ID = 101
    END-EXEC.

    DISPLAY 'Employee ID: ' EMPLOYEE-ID.
    DISPLAY 'Employee Name: ' EMPLOYEE-NAME.
    DISPLAY 'Employee Salary: ' EMPLOYEE-SALARY.

    EXEC SQL
        UPDATE EMPLOYEES
        SET EMPLOYEE_SALARY = :NEW-SALARY
        WHERE EMPLOYEE_ID = :EMPLOYEE-ID
    END-EXEC.

    EXEC SQL
        DISCONNECT CURRENT
    END-EXEC.

    STOP RUN.

प्रोग्राम की व्याख्या (Explanation of the Program):

  • CONNECT: डेटाबेस से कनेक्शन स्थापित करने के लिए CONNECT स्टेटमेंट का उपयोग किया गया है।
  • SELECT: EMPLOYEE_ID 101 के आधार पर EMPLOYEES टेबल से डेटा क्वेरी किया गया है और COBOL वेरिएबल्स में स्टोर किया गया है।
  • UPDATE: EMPLOYEE_SALARY को अपडेट किया गया है और नए सैलरी को NEW-SALARY वेरिएबल से सेट किया गया है।
  • DISCONNECT: सभी डेटाबेस ऑपरेशन्स के बाद कनेक्शन को बंद किया गया है।

COBOL में इंटरैक्टिव प्रोग्राम्स (Interactive Programs and Screen Handling)

COBOL में इंटरैक्टिव प्रोग्राम्स और स्क्रीन हैंडलिंग का उपयोग यूजर इंटरफेस बनाने के लिए किया जाता है, जहाँ प्रोग्राम और यूजर के बीच डेटा का आदान-प्रदान होता है। इन प्रोग्राम्स में यूजर इनपुट प्रदान करता है, और प्रोग्राम उन इनपुट्स के आधार पर प्रतिक्रिया देता है। COBOL में इंटरैक्टिव प्रोग्राम्स का निर्माण करने के लिए विशेष तकनीकों का उपयोग किया जाता है, जिसमें ACCEPT, DISPLAY, और SCREEN SECTION जैसी सुविधाएँ शामिल हैं। आइए हम इन तकनीकों को विस्तार से समझें।

1. ACCEPT और DISPLAY स्टेटमेंट्स (ACCEPT and DISPLAY Statements)

  • ACCEPT स्टेटमेंट: ACCEPT स्टेटमेंट का उपयोग यूजर से डेटा इनपुट प्राप्त करने के लिए किया जाता है। यह प्रोग्राम को इंटरैक्टिव बनाता है, जहाँ यूजर किसी वेरिएबल में डेटा इनपुट करता है।
  • DISPLAY स्टेटमेंट: DISPLAY स्टेटमेंट का उपयोग यूजर को आउटपुट या संदेश दिखाने के लिए किया जाता है। इसे स्क्रीन पर डेटा प्रदर्शित करने के लिए उपयोग किया जाता है।

उदाहरण:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
DISPLAY 'Enter your name: '.
ACCEPT USER-NAME.
DISPLAY 'Hello, ' USER-NAME ' !'.
DISPLAY 'Enter your name: '. ACCEPT USER-NAME. DISPLAY 'Hello, ' USER-NAME ' !'.
DISPLAY 'Enter your name: '.
ACCEPT USER-NAME.
DISPLAY 'Hello, ' USER-NAME ' !'.

इस उदाहरण में, यूजर से उसका नाम इनपुट करने के लिए ACCEPT स्टेटमेंट का उपयोग किया गया है, और फिर नाम के साथ स्वागत संदेश प्रदर्शित करने के लिए DISPLAY स्टेटमेंट का उपयोग किया गया है।

2. SCREEN SECTION का उपयोग (Using SCREEN SECTION)

  • परिभाषा: SCREEN SECTION का उपयोग COBOL में एक इंटरैक्टिव स्क्रीन लेआउट को परिभाषित करने के लिए किया जाता है। यह स्क्रीन पर डेटा इनपुट और आउटपुट को फॉर्मेट करने की सुविधा प्रदान करता है।
  • SCREEN SECTION की संरचना: SCREEN SECTION को DATA DIVISION के अंतर्गत परिभाषित किया जाता है, जहाँ प्रत्येक स्क्रीन आइटम को उचित पोजीशन और फॉर्मेट के साथ निर्दिष्ट किया जाता है।

उदाहरण:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME PIC X(20).
01 USER-AGE PIC 99.
SCREEN SECTION.
01 MAIN-SCREEN.
05 LINE 1 COLUMN 10 VALUE 'Enter your name: '.
05 LINE 1 COLUMN 30 PIC X(20) TO USER-NAME.
05 LINE 3 COLUMN 10 VALUE 'Enter your age: '.
05 LINE 3 COLUMN 30 PIC 99 TO USER-AGE.
PROCEDURE DIVISION.
DISPLAY MAIN-SCREEN.
ACCEPT MAIN-SCREEN.
DISPLAY 'Name: ' USER-NAME.
DISPLAY 'Age: ' USER-AGE.
STOP RUN.
DATA DIVISION. WORKING-STORAGE SECTION. 01 USER-NAME PIC X(20). 01 USER-AGE PIC 99. SCREEN SECTION. 01 MAIN-SCREEN. 05 LINE 1 COLUMN 10 VALUE 'Enter your name: '. 05 LINE 1 COLUMN 30 PIC X(20) TO USER-NAME. 05 LINE 3 COLUMN 10 VALUE 'Enter your age: '. 05 LINE 3 COLUMN 30 PIC 99 TO USER-AGE. PROCEDURE DIVISION. DISPLAY MAIN-SCREEN. ACCEPT MAIN-SCREEN. DISPLAY 'Name: ' USER-NAME. DISPLAY 'Age: ' USER-AGE. STOP RUN.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME   PIC X(20).
01 USER-AGE    PIC 99.

SCREEN SECTION.
01 MAIN-SCREEN.
    05 LINE 1 COLUMN 10 VALUE 'Enter your name: '.
    05 LINE 1 COLUMN 30 PIC X(20) TO USER-NAME.
    05 LINE 3 COLUMN 10 VALUE 'Enter your age: '.
    05 LINE 3 COLUMN 30 PIC 99 TO USER-AGE.

PROCEDURE DIVISION.
    DISPLAY MAIN-SCREEN.
    ACCEPT MAIN-SCREEN.
    DISPLAY 'Name: ' USER-NAME.
    DISPLAY 'Age: ' USER-AGE.
    STOP RUN.

उदाहरण का विवरण:

  • SCREEN SECTION में MAIN-SCREEN नामक एक स्क्रीन लेआउट परिभाषित किया गया है, जहाँ यूजर से नाम और उम्र का इनपुट प्राप्त करने के लिए फील्ड्स हैं।
  • DISPLAY स्टेटमेंट का उपयोग स्क्रीन को दिखाने के लिए किया गया है, और ACCEPT स्टेटमेंट का उपयोग यूजर इनपुट को प्राप्त करने के लिए किया गया है।

3. इंटरैक्टिव प्रोग्राम का फ्लो (Flow of an Interactive Program)

  • स्टेप 1: यूजर से इनपुट प्राप्त करना
    • ACCEPT स्टेटमेंट का उपयोग करके यूजर से इनपुट प्राप्त करें।
  • स्टेप 2: यूजर को आउटपुट दिखाना
    • DISPLAY स्टेटमेंट का उपयोग करके यूजर को आउटपुट या फीडबैक दिखाएँ।
  • स्टेप 3: इंटरैक्टिव स्क्रीन का उपयोग करना
    • SCREEN SECTION का उपयोग करके एक इंटरैक्टिव स्क्रीन लेआउट बनाएं, और DISPLAY और ACCEPT स्टेटमेंट्स का उपयोग करके स्क्रीन के माध्यम से डेटा इनपुट और आउटपुट को मैनेज करें।

उदाहरण प्रोग्राम (Example Interactive Program):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
IDENTIFICATION DIVISION.
PROGRAM-ID. InteractiveExample.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME PIC X(20).
01 USER-AGE PIC 99.
01 USER-CHOICE PIC X.
SCREEN SECTION.
01 MAIN-SCREEN.
05 LINE 1 COLUMN 10 VALUE 'Enter your name: '.
05 LINE 1 COLUMN 30 PIC X(20) TO USER-NAME.
05 LINE 3 COLUMN 10 VALUE 'Enter your age: '.
05 LINE 3 COLUMN 30 PIC 99 TO USER-AGE.
05 LINE 5 COLUMN 10 VALUE 'Do you want to continue (Y/N)? '.
05 LINE 5 COLUMN 40 PIC X TO USER-CHOICE.
PROCEDURE DIVISION.
DISPLAY MAIN-SCREEN.
ACCEPT MAIN-SCREEN.
DISPLAY 'Name: ' USER-NAME.
DISPLAY 'Age: ' USER-AGE.
IF USER-CHOICE = 'Y'
DISPLAY 'Thank you! You chose to continue.'
ELSE
DISPLAY 'Goodbye!'
END-IF.
STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. InteractiveExample. DATA DIVISION. WORKING-STORAGE SECTION. 01 USER-NAME PIC X(20). 01 USER-AGE PIC 99. 01 USER-CHOICE PIC X. SCREEN SECTION. 01 MAIN-SCREEN. 05 LINE 1 COLUMN 10 VALUE 'Enter your name: '. 05 LINE 1 COLUMN 30 PIC X(20) TO USER-NAME. 05 LINE 3 COLUMN 10 VALUE 'Enter your age: '. 05 LINE 3 COLUMN 30 PIC 99 TO USER-AGE. 05 LINE 5 COLUMN 10 VALUE 'Do you want to continue (Y/N)? '. 05 LINE 5 COLUMN 40 PIC X TO USER-CHOICE. PROCEDURE DIVISION. DISPLAY MAIN-SCREEN. ACCEPT MAIN-SCREEN. DISPLAY 'Name: ' USER-NAME. DISPLAY 'Age: ' USER-AGE. IF USER-CHOICE = 'Y' DISPLAY 'Thank you! You chose to continue.' ELSE DISPLAY 'Goodbye!' END-IF. STOP RUN.
IDENTIFICATION DIVISION.
PROGRAM-ID. InteractiveExample.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME   PIC X(20).
01 USER-AGE    PIC 99.
01 USER-CHOICE PIC X.

SCREEN SECTION.
01 MAIN-SCREEN.
    05 LINE 1 COLUMN 10 VALUE 'Enter your name: '.
    05 LINE 1 COLUMN 30 PIC X(20) TO USER-NAME.
    05 LINE 3 COLUMN 10 VALUE 'Enter your age: '.
    05 LINE 3 COLUMN 30 PIC 99 TO USER-AGE.
    05 LINE 5 COLUMN 10 VALUE 'Do you want to continue (Y/N)? '.
    05 LINE 5 COLUMN 40 PIC X TO USER-CHOICE.

PROCEDURE DIVISION.
    DISPLAY MAIN-SCREEN.
    ACCEPT MAIN-SCREEN.

    DISPLAY 'Name: ' USER-NAME.
    DISPLAY 'Age: ' USER-AGE.

    IF USER-CHOICE = 'Y'
        DISPLAY 'Thank you! You chose to continue.'
    ELSE
        DISPLAY 'Goodbye!'
    END-IF.

    STOP RUN.

प्रोग्राम की व्याख्या (Explanation of the Program):

  • ACCEPT और DISPLAY: यूजर से नाम, उम्र, और कंटिन्यू करने की पसंद (Y/N) प्राप्त करने के लिए ACCEPT और DISPLAY स्टेटमेंट्स का उपयोग किया गया है।
  • SCREEN SECTION: MAIN-SCREEN स्क्रीन लेआउट को परिभाषित करता है, जहाँ यूजर इनपुट को फॉर्मेट किया गया है।
  • कंडीशनल लॉजिक: यूजर के इनपुट के आधार पर प्रोग्राम की प्रतिक्रिया (IF-ELSE) दी गई है।


Table of Contents

Index