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: यहाँ पर डेटा को फाइल से पढ़ा जाता है, प्रोसेस किया जाता है, और रिपोर्ट के रूप में फॉर्मेट करके आउटपुट किया जाता है।
- रिपोर्ट फॉर्मेटिंग: रिपोर्ट में प्रत्येक रिकॉर्ड को एक लाइन में प्रदर्शित किया जाता है, जिसमें ट्रांजेक्शन आईडी, कस्टमर का नाम, और ट्रांजेक्शन राशि शामिल है।