COBOL में डेटा के साथ काम करना – Working with Data in COBOL

COBOL में डेटा के साथ काम करना – Working with Data in COBOL

COBOL प्रोग्रामिंग में डेटा के साथ काम करना सबसे महत्वपूर्ण कौशलों में से एक है। इस खंड में, हम आपको बताएंगे कि कैसे आप COBOL में डेटा डिक्लेरेशन, मूवमेंट, और प्रोसेसिंग कर सकते हैं। यहाँ आप सीखेंगे कि कैसे वेरिएबल्स और कॉन्स्टेंट्स को डिक्लेयर किया जाता है, डेटा को विभिन्न फॉर्मेट्स में मूव और मैनिपुलेट किया जाता है, और फाइल हैंडलिंग के माध्यम से डेटा को कैसे एक्सेस और प्रोसेस किया जाता है। इस गाइड के साथ, आप COBOL में डेटा के साथ काम करने की पूरी प्रक्रिया को समझ सकेंगे और इसे अपने प्रोग्राम्स में प्रभावी ढंग से लागू कर सकेंगे।

डेटा वेरिएबल्स और कॉन्स्टेंट्स (Variables and Constants)

COBOL में, डेटा वेरिएबल्स और कॉन्स्टेंट्स प्रोग्रामिंग की बुनियादी इकाइयाँ हैं, जो डेटा को स्टोर करने और प्रोसेस करने के लिए उपयोग की जाती हैं। वेरिएबल्स वे कंटेनर होते हैं जो डेटा को डायनामिक रूप से स्टोर करते हैं, जबकि कॉन्स्टेंट्स वे मान होते हैं जो प्रोग्राम के दौरान स्थिर रहते हैं। आइए हम इन दोनों को विस्तार से समझते हैं:

1. डेटा वेरिएबल्स (Data Variables)

  • परिभाषा: वेरिएबल्स वे स्टोरेज लोकेशन होते हैं जिन्हें डेटा को अस्थायी रूप से स्टोर करने के लिए उपयोग किया जाता है। वेरिएबल्स का मान प्रोग्राम के दौरान बदल सकता है।
  • घोषणा (Declaration): COBOL में वेरिएबल्स को DATA DIVISION के WORKING-STORAGE SECTION में घोषित किया जाता है। वेरिएबल्स की घोषणा के लिए लेवल नंबर और PIC क्लॉज़ का उपयोग किया जाता है, जो डेटा के प्रकार और आकार को परिभाषित करता है।
  • उदाहरण:
    01 TOTAL-AMOUNT    PIC 9(5)V99.
    01 CUSTOMER-NAME   PIC X(30).
    
    • TOTAL-AMOUNT: यह वेरिएबल एक पांच अंकों की संख्यात्मक वैल्यू को स्टोर करता है, जिसमें दो दशमलव स्थान होते हैं।
    • CUSTOMER-NAME: यह वेरिएबल 30 अक्षरों या संख्याओं की स्ट्रिंग को स्टोर करता है।
  • वेरिएबल का उपयोग: वेरिएबल्स का उपयोग डेटा को मूव करने, गणना करने, और आउटपुट जनरेट करने के लिए किया जाता है।
  • उदाहरण:
    MOVE 100 TO TOTAL-AMOUNT.
    DISPLAY 'Total Amount: ' TOTAL-AMOUNT.
    

     

2. डेटा कॉन्स्टेंट्स (Data Constants)

  • परिभाषा: कॉन्स्टेंट्स वे मान होते हैं जो प्रोग्राम के दौरान कभी नहीं बदलते। इन्हें वेरिएबल्स की तरह घोषित किया जाता है, लेकिन इनमें एक निश्चित मान होता है जो प्रोग्राम के निष्पादन के दौरान अपरिवर्तनीय रहता है।
  • घोषणा (Declaration): COBOL में कॉन्स्टेंट्स को भी DATA DIVISION के WORKING-STORAGE SECTION में घोषित किया जाता है। इन्हें भी लेवल नंबर और PIC क्लॉज़ के साथ घोषित किया जाता है, लेकिन साथ ही इन्हें एक स्थिर मान (VALUE क्लॉज़ के माध्यम से) असाइन किया जाता है।
  • उदाहरण:
    01 PI-VALUE        PIC 9V999 VALUE 3.141.
    01 MAX-LIMIT       PIC 9(3) VALUE 100.
    01 COMPANY-NAME    PIC X(20) VALUE 'ABC Corporation'.
    
    • PI-VALUE: यह कॉन्स्टेंट π (Pi) का मान 3.141 को स्टोर करता है।
    • MAX-LIMIT: यह कॉन्स्टेंट अधिकतम सीमा 100 को स्टोर करता है।
    • COMPANY-NAME: यह कॉन्स्टेंट ‘ABC Corporation’ नाम को स्टोर करता है।
  • कॉन्स्टेंट्स का उपयोग: कॉन्स्टेंट्स का उपयोग प्रोग्राम में निश्चित मानों को संदर्भित करने के लिए किया जाता है, जैसे गणनाओं में Pi का मान, अधिकतम सीमा, या किसी विशेष कंपनी का नाम।
  • उदाहरण:
    IF TOTAL-AMOUNT > MAX-LIMIT
        DISPLAY 'Amount exceeds the limit'.
    

     

उदाहरण (Example Program):

DATA DIVISION.
WORKING-STORAGE SECTION.
01 TOTAL-AMOUNT    PIC 9(5)V99 VALUE 0.
01 CUSTOMER-NAME   PIC X(30).
01 MAX-LIMIT       PIC 9(3) VALUE 100.

PROCEDURE DIVISION.
    MOVE 'John Doe' TO CUSTOMER-NAME.
    MOVE 150 TO TOTAL-AMOUNT.

    IF TOTAL-AMOUNT > MAX-LIMIT
        DISPLAY 'Total Amount exceeds the maximum limit for ' CUSTOMER-NAME.
    ELSE
        DISPLAY 'Total Amount is within the limit for ' CUSTOMER-NAME.

    STOP RUN.

डेटा मूवमेंट ऑपरेशन्स (Data Movement: MOVE, COMPUTE)

COBOL में डेटा मूवमेंट ऑपरेशन्स प्रोग्राम के भीतर डेटा को स्थानांतरित करने और गणना करने के लिए उपयोग किए जाते हैं। इनमें से प्रमुख ऑपरेशन्स MOVE और COMPUTE हैं, जो डेटा को एक वेरिएबल से दूसरे वेरिएबल में ट्रांसफर करने और गणनाओं को निष्पादित करने के लिए उपयोग किए जाते हैं। आइए इन्हें विस्तार से समझते हैं:

1. MOVE ऑपरेशन (MOVE Operation)

  • परिभाषा: MOVE स्टेटमेंट का उपयोग एक डेटा आइटम (वेरिएबल या कॉन्स्टेंट) से दूसरे डेटा आइटम में वैल्यू को ट्रांसफर करने के लिए किया जाता है। यह सबसे बुनियादी और सामान्य डेटा मूवमेंट ऑपरेशन है।
  • सिंटैक्स:
    MOVE स्रोत-वेरिएबल TO लक्ष्य-वेरिएबल.
    

     

  • उदाहरण:
    MOVE 100 TO TOTAL-AMOUNT.
    MOVE 'John Doe' TO CUSTOMER-NAME.
    

    इस उदाहरण में, 100 को TOTAL-AMOUNT वेरिएबल में और 'John Doe' को CUSTOMER-NAME वेरिएबल में मूव किया गया है।

  • कई लक्ष्यों को मूव करना: आप एक ही MOVE स्टेटमेंट में कई लक्ष्यों में वैल्यू मूव कर सकते हैं:
    MOVE 500 TO AMOUNT-1, AMOUNT-2, AMOUNT-3.
    

     

2. COMPUTE ऑपरेशन (COMPUTE Operation)

  • परिभाषा: COMPUTE स्टेटमेंट का उपयोग अंकगणितीय गणनाएँ करने के लिए किया जाता है, और परिणाम को एक वेरिएबल में स्टोर किया जाता है। COMPUTE स्टेटमेंट में आप कई गणनाएँ कर सकते हैं, जैसे जोड़ना, घटाना, गुणा करना, और भाग देना।
  • सिंटैक्स:
    COMPUTE लक्ष्य-वेरिएबल = गणना-एक्सप्रेशन.
    

     

  • उदाहरण:
    COMPUTE TOTAL-AMOUNT = PRICE * QUANTITY.
    COMPUTE AVERAGE = (MARKS-1 + MARKS-2 + MARKS-3) / 3.
    
    • पहले उदाहरण में, PRICE और QUANTITY को गुणा करके परिणाम TOTAL-AMOUNT में स्टोर किया गया है।
    • दूसरे उदाहरण में, तीन मार्क्स का औसत निकालकर उसे AVERAGE वेरिएबल में स्टोर किया गया है।
  • जटिल गणनाएँ: COMPUTE स्टेटमेंट का उपयोग करके आप जटिल गणनाएँ भी कर सकते हैं:
    COMPUTE FINAL-AMOUNT = (PRICE * QUANTITY) - DISCOUNT + TAX.
    

     

उदाहरण (Example Program):

DATA DIVISION.
WORKING-STORAGE SECTION.
01 PRICE          PIC 9(3)V99 VALUE 10.50.
01 QUANTITY       PIC 9(3) VALUE 5.
01 TOTAL-AMOUNT   PIC 9(5)V99 VALUE 0.
01 DISCOUNT       PIC 9(3)V99 VALUE 2.00.
01 TAX            PIC 9(3)V99 VALUE 1.50.
01 FINAL-AMOUNT   PIC 9(5)V99 VALUE 0.

PROCEDURE DIVISION.
    COMPUTE TOTAL-AMOUNT = PRICE * QUANTITY.
    COMPUTE FINAL-AMOUNT = (TOTAL-AMOUNT - DISCOUNT) + TAX.

    DISPLAY 'Total Amount: ' TOTAL-AMOUNT.
    DISPLAY 'Final Amount after Discount and Tax: ' FINAL-AMOUNT.

    STOP RUN.

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

  • COMPUTE TOTAL-AMOUNT = PRICE * QUANTITY द्वारा PRICE और QUANTITY को गुणा करके परिणाम TOTAL-AMOUNT में स्टोर किया गया है।
  • COMPUTE FINAL-AMOUNT = (TOTAL-AMOUNT - DISCOUNT) + TAX द्वारा TOTAL-AMOUNT से DISCOUNT घटाकर और TAX जोड़कर अंतिम राशि FINAL-AMOUNT में स्टोर की गई है।
  • DISPLAY स्टेटमेंट्स का उपयोग करके इन वेरिएबल्स की वैल्यू को स्क्रीन पर प्रदर्शित किया गया है।

COBOL में फ़ाइल हैंडलिंग (File Handling: Reading and Writing Files)

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

1. फाइल्स की घोषणा (Declaring Files)

  • फाइल नियंत्रण (File Control): फाइल्स को प्रोग्राम में उपयोग करने के लिए पहले उनकी घोषणा करनी पड़ती है। यह घोषणा ENVIRONMENT DIVISION के INPUT-OUTPUT SECTION में की जाती है।
  • फ़ाइल नियंत्रण का उदाहरण:
    ENVIRONMENT DIVISION.
    INPUT-OUTPUT SECTION.
    FILE-CONTROL.
        SELECT INPUT-FILE ASSIGN TO 'inputfile.txt'.
        SELECT OUTPUT-FILE ASSIGN TO 'outputfile.txt'.
    
    • SELECT स्टेटमेंट का उपयोग यह निर्दिष्ट करने के लिए किया जाता है कि कौन सी फाइल प्रोग्राम द्वारा उपयोग की जाएगी।
    • ASSIGN क्लॉज का उपयोग फाइल का नाम निर्दिष्ट करने के लिए किया जाता है।

2. फाइल सेक्शन (File Section)

  • फाइल रिकॉर्ड की संरचना (File Record Structure): फाइल के रिकॉर्ड की संरचना को DATA DIVISION के FILE SECTION में परिभाषित किया जाता है। यहाँ आप यह निर्दिष्ट करते हैं कि फाइल में किस प्रकार का डेटा और किस फॉर्मेट में स्टोर किया जाएगा।
  • फ़ाइल सेक्शन का उदाहरण:
    DATA DIVISION.
    FILE SECTION.
    FD  INPUT-FILE.
    01  INPUT-RECORD.
        05 CUSTOMER-ID    PIC 9(5).
        05 CUSTOMER-NAME  PIC X(30).
        05 BALANCE        PIC 9(7)V99.
    
    FD  OUTPUT-FILE.
    01  OUTPUT-RECORD.
        05 CUSTOMER-ID    PIC 9(5).
        05 CUSTOMER-NAME  PIC X(30).
        05 BALANCE        PIC 9(7)V99.
    
    • FD (File Description) स्टेटमेंट का उपयोग फाइल का विवरण देने के लिए किया जाता है।
    • 01 और इसके अंतर्गत आने वाले लेवल नंबरों का उपयोग रिकॉर्ड की संरचना को परिभाषित करने के लिए किया जाता है।

3. फाइल को खोलना (Opening Files)

  • फाइल खोलना: फाइल्स का उपयोग करने से पहले उन्हें खोलना आवश्यक होता है। COBOL में फाइल्स को OPEN स्टेटमेंट का उपयोग करके खोला जाता है।
  • फ़ाइल खोलने का उदाहरण:
    OPEN INPUT INPUT-FILE.
    OPEN OUTPUT OUTPUT-FILE.
    
    • INPUT मोड में फाइल खोलने का अर्थ है कि आप फाइल से डेटा पढ़ेंगे।
    • OUTPUT मोड में फाइल खोलने का अर्थ है कि आप फाइल में डेटा लिखेंगे।

4. फाइल से पढ़ना (Reading from a File)

  • फाइल पढ़ना: COBOL में फाइल से रिकॉर्ड पढ़ने के लिए READ स्टेटमेंट का उपयोग किया जाता है।
  • फ़ाइल पढ़ने का उदाहरण:
    READ INPUT-FILE INTO INPUT-RECORD
        AT END
            DISPLAY 'End of file reached'
            MOVE 'YES' TO EOF-FLAG
    END-READ.
    
    • READ स्टेटमेंट फाइल से रिकॉर्ड को पढ़ता है और उसे INPUT-RECORD वेरिएबल में स्टोर करता है।
    • AT END क्लॉज का उपयोग यह जांचने के लिए किया जाता है कि फाइल के अंत तक पहुंचा गया है या नहीं।

5. फाइल में लिखना (Writing to a File)

  • फाइल में डेटा लिखना: फाइल में डेटा लिखने के लिए WRITE स्टेटमेंट का उपयोग किया जाता है।
  • फ़ाइल में डेटा लिखने का उदाहरण:
    MOVE CUSTOMER-ID TO OUTPUT-CUSTOMER-ID.
    MOVE CUSTOMER-NAME TO OUTPUT-CUSTOMER-NAME.
    MOVE BALANCE TO OUTPUT-BALANCE.
    WRITE OUTPUT-RECORD.
    

    WRITE स्टेटमेंट का उपयोग OUTPUT-RECORD को OUTPUT-FILE में लिखने के लिए किया जाता है।

6. फाइल को बंद करना (Closing Files)

  • फाइल बंद करना: जब सभी ऑपरेशन्स पूरे हो जाते हैं, तो फाइल्स को बंद करना आवश्यक होता है। CLOSE स्टेटमेंट का उपयोग फाइल्स को बंद करने के लिए किया जाता है।
  • फ़ाइल बंद करने का उदाहरण:
    CLOSE INPUT-FILE.
    CLOSE OUTPUT-FILE.
    

     

उदाहरण (Example Program):

IDENTIFICATION DIVISION.
PROGRAM-ID. FileHandlingExample.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT INPUT-FILE ASSIGN TO 'inputfile.txt'.
    SELECT OUTPUT-FILE ASSIGN TO 'outputfile.txt'.

DATA DIVISION.
FILE SECTION.
FD  INPUT-FILE.
01  INPUT-RECORD.
    05 CUSTOMER-ID    PIC 9(5).
    05 CUSTOMER-NAME  PIC X(30).
    05 BALANCE        PIC 9(7)V99.

FD  OUTPUT-FILE.
01  OUTPUT-RECORD.
    05 CUSTOMER-ID    PIC 9(5).
    05 CUSTOMER-NAME  PIC X(30).
    05 BALANCE        PIC 9(7)V99.

WORKING-STORAGE SECTION.
01  EOF-FLAG          PIC X VALUE 'NO'.

PROCEDURE DIVISION.
    OPEN INPUT INPUT-FILE.
    OPEN OUTPUT OUTPUT-FILE.

    PERFORM UNTIL EOF-FLAG = 'YES'
        READ INPUT-FILE INTO INPUT-RECORD
            AT END
                MOVE 'YES' TO EOF-FLAG
        END-READ

        IF EOF-FLAG = 'NO'
            MOVE CUSTOMER-ID TO OUTPUT-CUSTOMER-ID
            MOVE CUSTOMER-NAME TO OUTPUT-CUSTOMER-NAME
            MOVE BALANCE TO OUTPUT-BALANCE
            WRITE OUTPUT-RECORD
        END-IF
    END-PERFORM.

    CLOSE INPUT-FILE.
    CLOSE OUTPUT-FILE.

    STOP RUN.

रिपोर्ट जनरेशन (Generating Reports with COBOL)

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

1. रिपोर्ट के लिए डेटा संग्रहण (Data Collection for Report)

  • डेटा स्रोत: रिपोर्ट जनरेट करने के लिए आवश्यक डेटा को फाइल्स, डेटाबेस, या यूजर इनपुट से एकत्रित किया जा सकता है।
  • डेटा संरचना: डेटा को एक उचित संरचना में व्यवस्थित करना आवश्यक है ताकि उसे आसानी से प्रोसेस और रिपोर्ट में प्रस्तुत किया जा सके।

उदाहरण:

DATA DIVISION.
FILE SECTION.
FD  TRANSACTION-FILE.
01  TRANSACTION-RECORD.
    05 TRANSACTION-ID    PIC 9(5).
    05 CUSTOMER-NAME     PIC X(30).
    05 TRANSACTION-AMOUNT PIC 9(7)V99.

2. डेटा प्रोसेसिंग (Data Processing)

  • डेटा प्रोसेसिंग: रिपोर्ट जनरेट करने से पहले डेटा को प्रोसेस करना होता है। इसमें डेटा की गणना, फ़िल्टरिंग, और समेकन शामिल हो सकते हैं। यह डेटा को सार्थक जानकारी में बदलने के लिए किया जाता है।

उदाहरण:

PROCEDURE DIVISION.
    OPEN INPUT TRANSACTION-FILE.
    OPEN OUTPUT REPORT-FILE.

    PERFORM UNTIL EOF-FLAG = 'YES'
        READ TRANSACTION-FILE INTO TRANSACTION-RECORD
            AT END
                MOVE 'YES' TO EOF-FLAG
        END-READ

        IF EOF-FLAG = 'NO'
            ADD TRANSACTION-AMOUNT TO TOTAL-AMOUNT
        END-IF
    END-PERFORM.

3. रिपोर्ट फॉर्मेटिंग (Report Formatting)

  • रिपोर्ट फॉर्मेट: रिपोर्ट को सही ढंग से फॉर्मेट करना आवश्यक है ताकि वह पढ़ने में आसान और समझने योग्य हो। इसमें हेडर, फ़ुटर, और डेटा को सटीक रूप से संरेखित करना शामिल है।
  • लाइन काउंट: लाइन काउंट का ध्यान रखना महत्वपूर्ण है ताकि पेज ब्रेक सही जगह पर हो और रिपोर्ट सुचारू रूप से प्रिंट हो सके।

उदाहरण:

01  REPORT-RECORD.
    05  REPORT-LINE      PIC X(80).

PROCEDURE DIVISION.
    MOVE '--- TRANSACTION REPORT ---' TO REPORT-LINE.
    WRITE REPORT-RECORD AFTER ADVANCING 2 LINES.

    PERFORM UNTIL EOF-FLAG = 'YES'
        MOVE TRANSACTION-ID TO REPORT-LINE (1:5).
        MOVE CUSTOMER-NAME TO REPORT-LINE (7:30).
        MOVE TRANSACTION-AMOUNT TO REPORT-LINE (32:10).
        WRITE REPORT-RECORD AFTER ADVANCING 1 LINE
    END-PERFORM.

4. रिपोर्ट जनरेट करना (Generating the Report)

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

उदाहरण:

PROCEDURE DIVISION.
    OPEN INPUT TRANSACTION-FILE.
    OPEN OUTPUT REPORT-FILE.

    PERFORM UNTIL EOF-FLAG = 'YES'
        READ TRANSACTION-FILE INTO TRANSACTION-RECORD
            AT END
                MOVE 'YES' TO EOF-FLAG
        END-READ

        IF EOF-FLAG = 'NO'
            MOVE TRANSACTION-ID TO REPORT-LINE (1:5).
            MOVE CUSTOMER-NAME TO REPORT-LINE (7:30).
            MOVE TRANSACTION-AMOUNT TO REPORT-LINE (32:10).
            WRITE REPORT-RECORD AFTER ADVANCING 1 LINE
        END-IF
    END-PERFORM.

    CLOSE TRANSACTION-FILE.
    CLOSE REPORT-FILE.
    STOP RUN.

उदाहरण (Example Report Format):

--- TRANSACTION REPORT ---
ID   CUSTOMER NAME             AMOUNT
---------------------------------------
00001 John Doe                1234.50
00002 Jane Smith              5678.75

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

  • DATA DIVISION: यहाँ पर रिपोर्ट जनरेट करने के लिए आवश्यक डेटा फाइल्स की संरचना और वेरिएबल्स को परिभाषित किया गया है।
  • PROCEDURE DIVISION: यहाँ पर डेटा को फाइल से पढ़ा जाता है, प्रोसेस किया जाता है, और रिपोर्ट के रूप में फॉर्मेट करके आउटपुट किया जाता है।
  • रिपोर्ट फॉर्मेटिंग: रिपोर्ट में प्रत्येक रिकॉर्ड को एक लाइन में प्रदर्शित किया जाता है, जिसमें ट्रांजेक्शन आईडी, कस्टमर का नाम, और ट्रांजेक्शन राशि शामिल है।


Table of Contents

Index