COBOL में कंट्रोल स्ट्रक्चर्स प्रोग्राम के फ्लो को नियंत्रित करने के लिए उपयोग किए जाते हैं। ये स्ट्रक्चर्स आपको यह निर्धारित करने की सुविधा देते हैं कि कोड का कौन सा हिस्सा कब और कैसे निष्पादित होना चाहिए। इस खंड में, हम COBOL के प्रमुख कंट्रोल स्ट्रक्चर्स जैसे IF
, EVALUATE
, और PERFORM
के बारे में चर्चा करेंगे। इन कंट्रोल स्ट्रक्चर्स का सही उपयोग आपके प्रोग्राम को अधिक संगठित, कुशल, और प्रभावी बनाता है। इस गाइड के माध्यम से, आप सीखेंगे कि कैसे कंट्रोल स्ट्रक्चर्स का उपयोग करके लॉजिक और कार्यों को नियंत्रित किया जा सकता है।
कंडीशनल स्टेटमेंट्स (Conditional Statements: IF, EVALUATE)
COBOL में कंडीशनल स्टेटमेंट्स प्रोग्राम के फ्लो को नियंत्रित करने के लिए महत्वपूर्ण होते हैं। ये स्टेटमेंट्स आपको यह तय करने में मदद करते हैं कि कोड का कौन सा हिस्सा किसी विशेष शर्त के आधार पर निष्पादित होगा। COBOL में दो प्रमुख कंडीशनल स्टेटमेंट्स हैं: IF और EVALUATE। आइए हम इन्हें विस्तार से समझते हैं।
1. IF स्टेटमेंट (IF Statement)
- परिभाषा:
IF
स्टेटमेंट का उपयोग किसी शर्त की जाँच करने के लिए किया जाता है। यदि शर्त सत्य होती है, तो निर्दिष्ट कोड ब्लॉक निष्पादित होता है; अन्यथा, वैकल्पिकELSE
ब्लॉक निष्पादित हो सकता है। - सिंटैक्स:
IF शर्त THEN कार्रवाई ELSE वैकल्पिक कार्रवाई END-IF.
- उदाहरण:
IF TOTAL-AMOUNT > 5000 DISPLAY 'High Value Transaction'. ELSE DISPLAY 'Normal Transaction'. END-IF.
इस उदाहरण में, यदि
TOTAL-AMOUNT
5000 से अधिक है, तो “High Value Transaction” संदेश प्रदर्शित होगा; अन्यथा, “Normal Transaction” संदेश प्रदर्शित होगा। - नेस्टेड IF स्टेटमेंट्स (Nested IF Statements): आप एक
IF
स्टेटमेंट के अंदर अन्यIF
स्टेटमेंट्स भी डाल सकते हैं।IF BALANCE > 1000 IF ACCOUNT-TYPE = 'SAVINGS' DISPLAY 'Premium Savings Account'. END-IF ELSE DISPLAY 'Regular Account'. END-IF.
2. EVALUATE स्टेटमेंट (EVALUATE Statement)
- परिभाषा:
EVALUATE
स्टेटमेंट एक मल्टी-वे ब्रांचिंग स्टेटमेंट है, जिसे आप स्विच-केस स्टेटमेंट के रूप में समझ सकते हैं। यह विभिन्न स्थितियों की जाँच करता है और उनमें से किसी एक के सत्य होने पर संबंधित कोड ब्लॉक को निष्पादित करता है। - सिंटैक्स:
EVALUATE शर्त-1 WHEN मान-1 कार्रवाई-1 WHEN मान-2 कार्रवाई-2 WHEN OTHER डिफ़ॉल्ट कार्रवाई END-EVALUATE.
- उदाहरण:
EVALUATE TRUE WHEN AGE < 18 DISPLAY 'Minor' WHEN AGE >= 18 AND AGE < 60 DISPLAY 'Adult' WHEN AGE >= 60 DISPLAY 'Senior Citizen' WHEN OTHER DISPLAY 'Invalid Age' END-EVALUATE.
इस उदाहरण में,
AGE
के आधार पर अलग-अलग संदेश प्रदर्शित किए जाएंगे। यदिAGE
18 से कम है, तो “Minor” प्रदर्शित होगा; यदिAGE
18 और 60 के बीच है, तो “Adult” प्रदर्शित होगा; और यदिAGE
60 या उससे अधिक है, तो “Senior Citizen” प्रदर्शित होगा। - नेस्टेड EVALUATE स्टेटमेंट्स (Nested EVALUATE Statements): आप एक
EVALUATE
स्टेटमेंट के भीतर अन्यEVALUATE
स्टेटमेंट्स भी नेस्ट कर सकते हैं।EVALUATE TRUE WHEN GRADE = 'A' DISPLAY 'Excellent' WHEN GRADE = 'B' DISPLAY 'Good' WHEN GRADE = 'C' DISPLAY 'Fair' WHEN OTHER EVALUATE TRUE WHEN GRADE = 'D' DISPLAY 'Poor' WHEN GRADE = 'F' DISPLAY 'Fail' END-EVALUATE END-EVALUATE.
उदाहरण (Example Program):
IDENTIFICATION DIVISION. PROGRAM-ID. ConditionalExample. DATA DIVISION. WORKING-STORAGE SECTION. 01 TOTAL-AMOUNT PIC 9(5)V99 VALUE 4500. 01 ACCOUNT-TYPE PIC X(10) VALUE 'SAVINGS'. 01 AGE PIC 99 VALUE 25. PROCEDURE DIVISION. IF TOTAL-AMOUNT > 5000 DISPLAY 'High Value Transaction' ELSE DISPLAY 'Normal Transaction' END-IF. EVALUATE TRUE WHEN ACCOUNT-TYPE = 'SAVINGS' DISPLAY 'Savings Account' WHEN ACCOUNT-TYPE = 'CURRENT' DISPLAY 'Current Account' WHEN OTHER DISPLAY 'Unknown Account Type' END-EVALUATE. EVALUATE TRUE WHEN AGE < 18 DISPLAY 'Minor' WHEN AGE >= 18 AND AGE < 60 DISPLAY 'Adult' WHEN AGE >= 60 DISPLAY 'Senior Citizen' WHEN OTHER DISPLAY 'Invalid Age' END-EVALUATE. STOP RUN.
लूपिंग स्टेटमेंट्स (Looping Statements: PERFORM, TIMES)
COBOL में लूपिंग स्टेटमेंट्स का उपयोग कोड के एक हिस्से को कई बार निष्पादित करने के लिए किया जाता है। यह प्रक्रिया तब उपयोगी होती है जब आपको बार-बार एक ही कार्य करना हो, जैसे डेटा प्रोसेसिंग, रिकॉर्ड्स को पढ़ना या गणनाएँ करना। COBOL में लूपिंग के लिए मुख्य स्टेटमेंट्स हैं PERFORM और TIMES। आइए इन्हें विस्तार से समझते हैं।
1. PERFORM स्टेटमेंट (PERFORM Statement)
- परिभाषा:
PERFORM
स्टेटमेंट का उपयोग कोड के एक ब्लॉक को एक निर्दिष्ट संख्या में या जब तक कोई शर्त पूरी न हो जाए, तब तक बार-बार निष्पादित करने के लिए किया जाता है। यह एक बहुमुखी लूपिंग स्टेटमेंट है जिसे विभिन्न तरीकों से उपयोग किया जा सकता है। - प्रकार:
- Simple PERFORM: एक विशिष्ट सेक्शन या पैराग्राफ को एक बार निष्पादित करता है।
- PERFORM UNTIL: तब तक एक कोड ब्लॉक को निष्पादित करता है जब तक कि कोई शर्त पूरी नहीं हो जाती।
- PERFORM VARYING: एक वेरिएबल की वैल्यू को बदलते हुए कोड ब्लॉक को बार-बार निष्पादित करता है।
उदाहरण:
- Simple PERFORM:
PERFORM PROCESS-DATA.
- PERFORM UNTIL:
PERFORM PROCESS-DATA UNTIL EOF-FLAG = 'YES'.
- PERFORM VARYING:
PERFORM PROCESS-DATA VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER > 10.
उदाहरण का विवरण:
PROCESS-DATA
नामक पैराग्राफ या सेक्शन को निष्पादित किया जाएगा।PERFORM UNTIL
का उपयोग तब किया जाता है जब आपको एक लूप को तब तक चलाना हो जब तक कोई शर्त पूरी न हो जाए। इस उदाहरण में, लूप तब तक चलेगा जब तकEOF-FLAG
‘YES’ न हो जाए।PERFORM VARYING
का उपयोग एक काउंटर वेरिएबल की वैल्यू को बदलते हुए लूप को चलाने के लिए किया जाता है। यह तब तक चलेगा जब तक काउंटर की वैल्यू 10 से अधिक नहीं हो जाती।
2. TIMES स्टेटमेंट (TIMES Statement)
- परिभाषा:
TIMES
स्टेटमेंट का उपयोग कोड के एक ब्लॉक को एक निश्चित संख्या में निष्पादित करने के लिए किया जाता है। यह लूपिंग के सबसे सरल रूपों में से एक है और तब उपयोगी होता है जब आपको निश्चित संख्या में बार कोड चलाना हो। - सिंटैक्स:
PERFORM PROCESS-DATA TIMES n.
- उदाहरण:
PERFORM DISPLAY-HELLO 5 TIMES.
इस उदाहरण में,
DISPLAY-HELLO
पैराग्राफ को 5 बार निष्पादित किया जाएगा।
3. उदाहरण प्रोग्राम (Example Program)
IDENTIFICATION DIVISION. PROGRAM-ID. LoopingExample. DATA DIVISION. WORKING-STORAGE SECTION. 01 COUNTER PIC 9(2) VALUE 0. 01 EOF-FLAG PIC X VALUE 'NO'. 01 TOTAL-SUM PIC 9(4) VALUE 0. 01 NUMBER PIC 9(2) VALUE 5. PROCEDURE DIVISION. DISPLAY 'Starting PERFORM UNTIL loop...'. PERFORM ADD-NUMBER UNTIL COUNTER > 10. DISPLAY 'Starting PERFORM TIMES loop...'. PERFORM DISPLAY-HELLO 3 TIMES. STOP RUN. ADD-NUMBER. ADD NUMBER TO TOTAL-SUM. ADD 1 TO COUNTER. DISPLAY 'Current Sum: ' TOTAL-SUM. DISPLAY-HELLO. DISPLAY 'Hello, COBOL!'.
प्रोग्राम की व्याख्या (Explanation of the Program):
- PERFORM UNTIL:
ADD-NUMBER
पैराग्राफ को तब तक निष्पादित करता है जब तक किCOUNTER
की वैल्यू 10 से अधिक नहीं हो जाती। प्रत्येक लूप में,TOTAL-SUM
मेंNUMBER
जोड़ा जाता है, औरCOUNTER
1 से बढ़ाया जाता है। - PERFORM TIMES:
DISPLAY-HELLO
पैराग्राफ को 3 बार निष्पादित करता है, जिसमें “Hello, COBOL!” संदेश 3 बार प्रदर्शित होता है।
COBOL में एरर हैंडलिंग (Error Handling)
एरर हैंडलिंग किसी भी प्रोग्रामिंग भाषा में एक महत्वपूर्ण पहलू होता है, और COBOL में भी यह आवश्यक है कि आप प्रोग्राम के संचालन के दौरान उत्पन्न होने वाली त्रुटियों को सही ढंग से प्रबंधित करें। COBOL में एरर हैंडलिंग मुख्य रूप से FILE STATUS, INVALID KEY, और AT END क्लॉज़ के माध्यम से की जाती है। यह सुनिश्चित करता है कि आपका प्रोग्राम त्रुटियों को पहचान सके और उन पर उचित प्रतिक्रिया दे सके, जिससे डेटा की सुरक्षा और प्रोग्राम की विश्वसनीयता बनी रहती है।
1. FILE STATUS
- परिभाषा:
FILE STATUS
एक वेरिएबल होता है जिसे प्रत्येक फाइल के लिए डिफाइन किया जाता है। यह वेरिएबल फाइल ऑपरेशन्स के बाद एक कोड स्टोर करता है, जो बताता है कि ऑपरेशन सफल रहा या असफल। - घोषणा: FILE STATUS को
FD
(File Description) के साथ घोषित किया जाता है। - सिंटैक्स:
FILE STATUS IS WS-FILE-STATUS.
- उदाहरण:
FD INPUT-FILE LABEL RECORDS ARE STANDARD VALUE OF FILE-ID IS "inputfile.txt" FILE STATUS IS WS-FILE-STATUS. WORKING-STORAGE SECTION. 01 WS-FILE-STATUS PIC XX.
- FILE STATUS कोड्स:
- 00: ऑपरेशन सफल रहा।
- 02: ऑपरेशन सफल रहा, लेकिन एक वैकल्पिक स्थिति उत्पन्न हुई।
- 10: फाइल का अंत आ गया (EOF)।
- 90: लॉजिक एरर।
- 91: फाइल को खोलने में त्रुटि।
- 92: रिकॉर्ड को पढ़ने/लिखने में त्रुटि।
- 93: फाइल लॉकिंग त्रुटि।
उदाहरण का विवरण:
WS-FILE-STATUS
वेरिएबल प्रत्येक फाइल ऑपरेशन के बाद स्थिति कोड स्टोर करेगा, जिसे बाद में जाँच कर आप एरर हैंडलिंग कर सकते हैं।
2. INVALID KEY
- परिभाषा:
INVALID KEY
क्लॉज़ का उपयोग तब किया जाता है जब आप इंडेक्स्ड या रिलेटिव फाइल में की (KEY) के आधार पर रिकॉर्ड एक्सेस कर रहे हों। यदि निर्दिष्ट की के साथ रिकॉर्ड नहीं पाया जाता है, तोINVALID KEY
ब्लॉक निष्पादित किया जाता है। - सिंटैक्स:
READ INPUT-FILE INVALID KEY DISPLAY 'Error: Record not found'.
- उदाहरण:
READ INPUT-FILE KEY IS CUSTOMER-ID INVALID KEY DISPLAY 'Customer ID not found' END-READ.
उदाहरण का विवरण:
- यदि
CUSTOMER-ID
के साथ कोई रिकॉर्ड नहीं मिलता है, तो “Customer ID not found” संदेश प्रदर्शित किया जाएगा।
3. AT END
- परिभाषा:
AT END
क्लॉज़ का उपयोग तब किया जाता है जब आप सीक्वेंशियल फाइल को पढ़ रहे होते हैं। जब फाइल का अंत आ जाता है (EOF), तोAT END
ब्लॉक निष्पादित होता है। - सिंटैक्स:
READ INPUT-FILE AT END DISPLAY 'End of file reached'.
- उदाहरण:
READ INPUT-FILE INTO INPUT-RECORD AT END MOVE 'YES' TO EOF-FLAG DISPLAY 'End of file reached'. END-READ.
उदाहरण का विवरण:
- जब फाइल का अंत आ जाता है, तो
EOF-FLAG
‘YES’ में बदल जाता है, और “End of file reached” संदेश प्रदर्शित होता है।
4. उदाहरण प्रोग्राम (Example Program)
IDENTIFICATION DIVISION. PROGRAM-ID. ErrorHandlingExample. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INPUT-FILE ASSIGN TO 'inputfile.txt' FILE STATUS IS WS-FILE-STATUS. DATA DIVISION. FILE SECTION. FD INPUT-FILE. 01 INPUT-RECORD. 05 CUSTOMER-ID PIC 9(5). 05 CUSTOMER-NAME PIC X(30). 05 TRANSACTION-AMOUNT PIC 9(7)V99. WORKING-STORAGE SECTION. 01 WS-FILE-STATUS PIC XX. 01 EOF-FLAG PIC X VALUE 'NO'. PROCEDURE DIVISION. OPEN INPUT INPUT-FILE. PERFORM UNTIL EOF-FLAG = 'YES' READ INPUT-FILE INTO INPUT-RECORD AT END MOVE 'YES' TO EOF-FLAG DISPLAY 'End of file reached' NOT AT END IF WS-FILE-STATUS NOT = '00' DISPLAY 'File read error: ' WS-FILE-STATUS ELSE DISPLAY 'Customer ID: ' CUSTOMER-ID DISPLAY 'Customer Name: ' CUSTOMER-NAME DISPLAY 'Transaction Amount: ' TRANSACTION-AMOUNT END-IF END-READ END-PERFORM. CLOSE INPUT-FILE. STOP RUN.
प्रोग्राम की व्याख्या (Explanation of the Program):
- FILE STATUS:
WS-FILE-STATUS
वेरिएबल प्रत्येक फाइल ऑपरेशन के बाद स्थिति कोड को स्टोर करता है। यदि फाइल पढ़ने में कोई त्रुटि होती है, तोWS-FILE-STATUS
का मूल्य ’00’ नहीं होगा, और “File read error” संदेश प्रदर्शित किया जाएगा। - AT END: जब फाइल का अंत आ जाता है, तो
EOF-FLAG
‘YES’ में बदल जाता है, और “End of file reached” संदेश प्रदर्शित होता है। - NOT AT END: यदि फाइल का अंत नहीं हुआ है और पढ़ने की प्रक्रिया सफल रही है, तो ग्राहक का विवरण प्रदर्शित किया जाएगा।