ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ

Η Γλώσσα Προγραμματισμού Cobol

 

Εισαγωγή στην Cobol

Τα αρχικά της Cobol σημαίνουν COmmon Business Oriented Language, δηλ. γλώσσα προγραμματισμού προσανατολισμένη σε εμπορικές εφαρμογές. Η Cobol αναπτύχθηκε στα τέλη της δεκαετίας του 1950 και στις αρχές της δεκαετίας του 1960 και είναι η δεύτερη πιο παλιά γλώσσα προγραμματισμού υψηλού επιπέδου, όπου πρώτη ήταν η Fortran. Η Cobol είναι ιδιαίτερα δημοφιλής για εμπορικές εφαρμογές οι οποίες εκτελούνται κατά προτίμηση σε μεγάλους υπολογιστές.

Τα προγράμματα που γράφονται σε κώδικα Cobol είναι πολύ μεγαλύτερα σε πλήθος εντολών από τα ίδια προγράμματα που γράφονται σ’ άλλες γλώσσες προγραμματισμού για να κάνουν την ίδια δουλειά. Αυτό μπορεί να μας φανεί ενοχλητικό αν αποφασίσουμε να προγραμματίσουμε σε Cobol, αλλά η αναλυτική περιγραφή των ενεργειών της γλώσσας και οι μεγάλες δυνατότητές της κάνουν καλύτερη την κατανόηση των προγραμμάτων που γράφουμε σ’ αυτήν.

Αν και αντιμετωπίζεται αρνητικά από πολλούς προγραμματιστές σαν πεπαλαιωμένη, η Cobol παραμένει ακόμα η πιο ευρέως χρησιμοποιούμενη γλώσσα προγραμματισμού στον κόσμο και αυτό γιατί έχουν δημιουργηθεί μ’ αυτήν τόσες πολλές εμπορικές εφαρμογές που είναι πλέον ασύμφορο για τις εταιρείες να αλλάξουν γλώσσα προγραμματισμού.

Διδάσκεται ακόμη και σε πολλά πανεπιστήμια. Περιέχει πολλά από τα χαρακτηριστικά και τις δομές που απαιτούνται από μια μοντέρνα γλώσσα προγραμματισμού και έχει εισέλθει πρόσφατα και στο αντικειμενοστραφές (object-oriented) περιβάλλον. Το σημαντικότερο πλεονέκτημά της είναι ότι διαθέτει πολύ προχωρημένες δυνατότητες για προγραμματισμό σε εμπορικές εφαρμογές (business applications) καθώς και ότι διαχειρίζεται τα λεγόμενα index αρχεία, πράγματα που δεν υπάρχουν στις άλλες γλώσσες προγραμματισμού.

 

Η Ιστορία της Cobol

Το 1959, το υπουργείο Άμυνας των ΗΠΑ δημιούργησε μια ομάδα με την ονομασία Short-range Committee, η οποία μέσα σε λίγους μήνες δημιούργησε τη γλώσσα προγραμματισμού Cobol. Ο πρώτος μεταγλωττιστής (compiler) της Cobol υλοποιήθηκε το 1960. Η επιτροπή αυτή θέλησε να δημιουργήσει μια γλώσσα που να έχει δυνατή υποστήριξη στα αρχεία, όπως υποστήριξη για σειριακά (sequential), key-indexed και αρχεία άμεσης πρόσβασης (direct access).

Θέλησαν να είναι η γλώσσα ευανάγνωστη (readable) ακόμη και από τους διευθυντές των προγραμματιστών, οι οποίοι θα μπορούσαν να διαβάζουν ένα πρόγραμμα γραμμένο σε Cobol σαν να διάβαζαν ένα κανονικό κείμενο στα αγγλικά. Όπως όλες οι γλώσσες προγραμματισμού υψηλού επιπέδου (high level programming languages), η Cobol είχε μεγάλη απόσταση από τη γλώσσα μηχανής (machine language) και την assembler, οι οποίες ήταν και οι μόνες που χρησιμοποιόντουσαν εκείνη την εποχή (1959).

Η Cobol ήταν και παραμένει πολύ κοντά στην ανθρώπινη φυσική γλώσσα. Ήταν μόλις η δεύτερη γλώσσα προγραμματισμού υψηλού επιπέδου, μετά την Fortran, που έγινε και παρέμεινε δημοφιλής. Σ’ αντίθεση με την Fortran, η Cobol προοριζόταν να γίνει κατανοητή από προγραμματιστές εμπορικών εφαρμογών αλλά ακόμη και από τους managers τους. Είναι πιθανώς η μοναδική γλώσσα προγραμματισμού που μπορούμε να την διαβάσουμε δυνατά και να γίνει κατανοητή. Ένα άλλο μεγάλο πλεονέκτημά της είναι ότι εισήγαγε τον διαχωρισμό της περιγραφής των δεδομένων από τις διαδικαστικές εντολές.

 

Ξεκινώντας με την Cobol

Ο καλύτερος τρόπος για να μάθουμε να προγραμματίζουμε σε μια καινούργια γλώσσα είναι να μπορούμε να γράφουμε τον κώδικα και να τον εκτελούμε αμέσως σ’ έναν υπολογιστή. Συνεπώς, θα χρειασθούμε έναν υπολογιστή, έναν κειμενογράφο (text editor, όπως το Notepad ή το WordPad) για να γράψουμε τον κώδικά μας και, το σημαντικότερο, έναν compiler της Cobol για τον έλεγχο του πηγαίου κώδικά (source code) μας και τη μετατροπή του σε γλώσσα μηχανής (object code – αντικείμενος κώδικας), ώστε να μπορέσει να τον καταλάβει και να τον εκτελέσει ο υπολογιστής.

 

Οι Περιοχές Κωδικοποίησης

Στην Cobol, οι πρώτες έξι θέσεις κάθε γραμμής κώδικα αγνοούνται από τον compiler και χρησιμοποιούνται συνήθως από τον προγραμματιστή για την αρίθμηση των σελίδων και των γραμμών. Αυτοί οι αριθμοί δεν είναι ίδιοι μ’ εκείνους που γνωρίζουμε από την Basic όπου ο αριθμός γραμμής χρησιμοποιείται σαν μέρος της λογικής του προγράμματος, όπως για παράδειγμα η εντολή goto 30, που στέλνει τον έλεγχο του προγράμματος στη γραμμή 30. Η έβδομη θέση είναι γνωστή ως η περιοχή συνέχισης (continuation area) και εκεί μπορούμε να γράψουμε μόνο μερικούς συγκεκριμένους χαρακτήρες, που είναι οι εξής : *, / και – .

Το αστεράκι (*) χρησιμοποιείται για να μπορούμε να εισάγουμε ένα σχόλιο (comment), ώστε ό,τι ακολουθεί να αγνοηθεί από τον μεταγλωττιστή (compiler). Το σύμβολο / (slash) χρησιμοποιείται για να δείξει μια αλλαγή σελίδας (page break) αλλά μπορεί επίσης να χρησιμοποιηθεί και σαν σχόλιο εφόσον το υπόλοιπο κείμενο της γραμμής αγνοείται από τον compiler.

Το σύμβολο – (hyphen) χρησιμοποιείται ως ένα σημάδι συνέχισης του τρέχοντος κειμένου από την προηγούμενη γραμμή και όχι για να συνεχίσουμε μια εντολή στην επόμενη γραμμή. Μπορούμε να συνεχίσουμε μια εντολή της Cobol σ’ όσες γραμμές χρειασθεί αρκεί να βρισκόμαστε στη σωστή περιοχή κωδικοποίησης (στήλες 12-72) και να μην διαχωρίζουμε τα κείμενά μας (strings).

Ακολουθεί ένα παράδειγμα των ανωτέρω, όπου τα έξι πρώτα ψηφία δεν γράφονται κατά τη δημιουργία του προγράμματος και απλά υπάρχουν εδώ για να μας δείξουν τη θέση (στήλη) απ’ όπου πρέπει να ξεκινήσουμε να γράφουμε τον κώδικα του προγράμματος. Πιο συγκεκριμένα, τα τρία πρώτα ψηφία (εδώ 001) δείχνουν τον αριθμό της σελίδας στο έντυπο μηχανογράφησης που χρησιμοποιείτο παλαιότερα, ενώ τα τρία επόμενα ψηφία δείχνουν τον αριθμό της γραμμής. Τα ψηφία αυτά αγνοούνται από τον μεταγλωττιστή (compiler) της Cobol και χρησιμοποιούνται μόνο για τη δική μας οργάνωση.


001001*Αυτό είναι ένα σχόλιο (comment).

001002/Μια νέα σελίδα στην εκτύπωση και ένα σχόλιο (comment).

001003 :

001004           DISPLAY 'Αυτό είναι ένα πολύ μεγάλο κείμενο που’

001005–        'πρέπει να συνεχισθεί στην επόμενη γραμμή'

Οι θέσεις 8 έως 11 και 12 έως 72 αποκαλούνται περιοχές Α και Β αντίστοιχα. Στην περιοχή Α (θέσεις 8-11) γράφουμε τα ονόματα των DIVISIONS, των SECTIONS, των PARAGRAPHS, το FD του FILE SECTION και το επίπεδο 01. Στην περιοχή Β (θέσεις 12-72) μπορούμε να γράψουμε όλες τις εντολές του προγράμματός μας. Οι στήλες 73-80 χρησιμοποιούνται μόνο από τον προγραμματιστή και αγνοούνται από τον compiler.

Συνοψίζοντας, επαναλαμβάνουμε ότι σ’ ένα πρόγραμμα της Cobol ο compiler μεταφράζει μόνο τις στήλες 7-72 και αγνοεί τις υπόλοιπες.

 

Η Σύνταξη της Cobol

Τα ονόματα των μεταβλητών της Cobol πρέπει να ακολουθούν τους εξής κανόνες :

Ακολουθούν μερικά παραδείγματα έγκυρων ονομάτων :

Ο μεταγλωττιστής (compiler) δεν ξεχωρίζει τα κεφαλαία από τα πεζά γράμματα στα ονόματα των μεταβλητών και η Cobol διαθέτει μια μεγάλη γκάμα από δεσμευμένες λέξεις (reserved words) που δεν μπορούν να χρησιμοποιηθούν σαν ονόματα μεταβλητών. Η τελεία (.) είναι το σημαντικότερο σύμβολο στίξης της Cobol και θα την δούμε αναλυτικά αργότερα. Εδώ, σε πρώτη φάση αρκεί να γνωρίζουμε ότι η κάθε γραμμή των IDENTIFICATION DIVISION, ENVIRONMENT DIVISION και DATA DIVISION πρέπει να τελειώνει με μια τελεία.

Τα εισαγωγικά, είτε απλά είτε διπλά, χρησιμοποιούνται για να περιβάλλουμε ένα κείμενο, αρκεί φυσικά να μην τα μπερδεύουμε μεταξύ τους :

" Αυτό είναι λάθος ’
" και αυτό είναι σωστό "

Το κόμμα (,) χρησιμοποιείται για να διαχωρίσουμε ονόματα μεταβλητών, όπως για παράδειγμα :

MOVE 2 TO DATA-ITEM-1, DATA-ITEM-2, DATA-ITEM-3

Για τη διευκόλυνση των προγραμματιστών, υπάρχουν διαθέσιμες πολλές συντομεύσεις και εναλλακτικές ορθογραφίες, όπως για παράδειγμα :

ZERO ZEROS ZEROES

που σημαίνουν όλα το ίδιο πράγμα και επίσης το LINE με το LINES, το PICTURE με το PIC και τέλος το THROUGH με το THRU.

 

Το Πρόγραμμα Hello World

Το πρόγραμμα Hello World έχει καθιερωθεί σαν το πρώτο απαραίτητο (εισαγωγικό) σ’ όλα τα μαθήματα για γλώσσες προγραμματισμού.

 IDENTIFICATION DIVISION.

 PROGRAM-ID.   HELLO-WORLD-PROG.

 AUTHOR.       PETER.

* Το τυπικό πρόγραμμα Hello World

 ENVIRONMENT DIVISION.

 DATA DIVISION.

 WORKING-STORAGE SECTION.

 01       TEXT-OUT    PIC X(12) VALUE 'Hello World!'.

 PROCEDURE DIVISION.

 MAIN-PARAGRAPH.

DISPLAY TEXT-OUT

STOP RUN.

Δηλώνουμε το όνομα του προγράμματος (HELLO-WORLD-PROG), τον συγγραφέα (PETER), βάζουμε ένα σχόλιο και δηλώνουμε μία μόνο μεταβλητή, την TEXT-OUT, στην οποία δίνουμε αρχική τιμή κατά τη δήλωσή της ίση με 'Hello World!'. Η μεταβλητή αυτή είναι αλφαριθμητική, PIC X(12), με 12 θέσεις. Στο κυρίως πρόγραμμα τώρα, έχουμε μία μόνο παράγραφο η οποία εμφανίζει το περιεχόμενο της μεταβλητής με την εντολή DISPLAY και τελειώνει το πρόγραμμα με την εντολή STOP RUN.

 

Η Δομή ενός Προγράμματος της Cobol

Ένα πρόγραμμα γραμμένο σε Cobol αποτελείται από τέσσερις υποδιαιρέσεις (DIVISIONS), όπου η κάθε υποδιαίρεση αποτελείται από τμήματα (SECTIONS), το κάθε τμήμα από παραγράφους (PARAGRAPHS) και η κάθε παράγραφος από προτάσεις (SENTENCES). Η κάθε πρόταση είναι ένας συνδυασμός από λέξεις (words), σταθερές (literals) και σύμβολα (symbols).

Οι τέσσερις υποδιαιρέσεις (DIVISIONS) ενός προγράμματος της Cobol είναι οι εξής :

Οι λέξεις (words) της Cobol αποτελούνται από τις δεσμευμένες λέξεις (reserved words) που χρησιμοποιεί η Cobol, δηλ. τα ονόματα των εντολών της, και τα ονόματα που δίνουμε εμείς στις μεταβλητές που θα ορίσουμε καθώς και στα πεδία των αρχείων και στις παραγράφους του κυρίως προγράμματος.

Πρέπει να έχουμε υπόψη μας τους εξής κανόνες για τα ονόματα των λέξεων που ορίζουμε εμείς, που τους είδαμε και νωρίτερα :

 

Το Identification Division

Το identification division είναι η πρώτη υποδιαίρεση ενός προγράμματος της Cobol που πρέπει να γράψουμε και ο σκοπός της είναι να ενημερώνει τον υπολογιστή για το όνομα του προγράμματος καθώς και για άλλα στοιχεία, όπως ποιος είναι ο συγγραφέας (author) του προγράμματος, πότε γράφτηκε, πότε μεταγλωττίσθηκε κ.ά.

Στην ουσία, το μόνο απαραίτητο στοιχείο (παράγραφος) απ’ όλα τα παραπάνω για να μπορέσει να γίνει η μεταγλώττιση του προγράμματος είναι το όνομα του προγράμματος, το οποίο πρέπει να περιέχει έως 8 αλφαριθμητικούς χαρακτήρες, με τον πρώτο οπωσδήποτε γράμμα. Το DIVISION αυτό δεν περιέχει SECTIONS, αλλά επτά παραγράφους, όπου η κάθε παράγραφος πρέπει να ξεκινάει από τη στήλη 8 και να τελειώνει με τελεία. Ακολουθεί ένα χαρακτηριστικό παράδειγμα.

INDENTIFICATION DIVISION.

PROGRAM-ID. PROG-1.

AUTHOR. PETER.

INSTALLATION. FLORINA GROUP.

DATE-WRITTEN. 22/1/2005.

DATE-COMPILED.

SECURITY. LOCAL GROUP.

REMARKS. LEARN HOW TO PROGRAM IN COBOL.

 

Το Enviroment Division

Αυτό το division ενημερώνει τον υπολογιστή με τι θα αλληλεπιδράσει το πρόγραμμα, δηλ. ποιο θα είναι το περιβάλλον του, όπως οι εκτυπωτές (printers), οι δισκέτες (disk drives), άλλα αρχεία κλπ. Δίνει πληροφορίες για το σύστημα του υπολογιστή όπου θα γραφεί και θα εκτελεσθεί το πρόγραμμα καθώς και για το είδος, τον τρόπο οργάνωσης και τα ονόματα των αρχείων που θα χρησιμοποιηθούν και συσχετίζει (αντιστοιχεί) τα λογικά με τα φυσικά ονόματα των αρχείων.

Εδώ έχουμε δύο πολύ σημαντικά τμήματα (sections), το CONFIGURATION SECTION, το οποίο προσδιορίζει τον source (πηγαίο) και τον object (αντικείμενο) υπολογιστή, και το INPUT-OUTPUT SECTION, το οποίο προσδιορίζει τους εκτυπωτές και τα αρχεία που σκοπεύουμε να χρησιμοποιήσουμε και επίσης εκχωρεί ονόματα (αναγνωριστικά) σ’ αυτά.

ENVIRONMENT DIVISION.

CONFIGURATION SECTION.

SOURCE-COMPUTER. IBM PC.

OBJECT-COMPUTER. IBM PC.

SPECIAL-NAMES.

            DECIMAL POINT IS COMMA.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT INPUT-FILE ASSIGN TO 'input.dat'

ORGANIZATION IS LINE SEQUENTIAL.

SELECT PRINT-FILE ASSIGN TO PRINTER.

Οι παράγραφοι SOURCE-COMPUTER και OBJECT-COMPUTER του CONFIGURATION SECTION, όπου δίνουμε τα ονόματα των υπολογιστών στα οποία θα γίνει η μεταγλώττιση και η εκτέλεση του προγράμματος αντίστοιχα, είναι μεν υποχρεωτικές να γραφούν αλλά δεν γίνεται κανένας ουσιαστικός έλεγχος των ονομάτων αυτών. Η παράγραφος SPECIAL-NAMES έχει πολλές χρήσεις, όπου εδώ ορίζουμε ότι για το δεκαδικό σημείο (υποδιαστολή) θα χρησιμοποιηθεί το σύμβολο κόμμα (,), όπως ισχύει δηλαδή στην Ελλάδα.

Στο FILE-CONTROL του INPUT-OUTPUT SECTION ορίσαμε την ύπαρξη ενός αρχείου με λογικό όνομα INPUT-FILE, όπως δηλαδή θα το χρησιμοποιήσουμε μέσα στο πρόγραμμα και με φυσικό όνομα input.dat, όπως δηλαδή θα υπάρχει στον σκληρό δίσκο του υπολογιστή. Από ένα άλλο πρόγραμμα της Cobol θα μπορούμε να αναφερθούμε στο ίδιο αρχείο με διαφορετικό ή και με το ίδιο λογικό όνομα αλλά αναγκαστικά με το ίδιο φυσικό όνομα. Το αρχείο με λογικό όνομα PRINT-FILE αναφέρεται στον εκτυπωτή όπου θα στείλουμε για εκτύπωση τα αποτελέσματα που θέλουμε.

 

Το Data Division

Το data division είναι αυτό στο οποίο γίνεται η εκχώρηση της μνήμης στα δεδομένα (data) και τα αναγνωριστικά (identifiers) που πρόκειται να χρησιμοποιήσει το πρόγραμμα. Περιέχει τρία SECTIONS και καμία παράγραφο. Ο σκοπός του είναι να περιγράψει αναλυτικά την εσωτερική δομή των αρχείων (field description) και να δηλώσει τις μεταβλητές που θα χρησιμοποιήσουμε στο πρόγραμμα.

Δύο πολύ σημαντικά τμήματα (sections) αυτού του division είναι το FILE SECTION και το WORKING-STORAGE SECTION. Το πρώτο χρησιμοποιείται για να ορίσουμε τη δομή, το μέγεθος και το είδος (τύπο) των δεδομένων (πεδίων) που πρόκειται να διαβάσουμε από ή να γράψουμε σ’ ένα αρχείο. Το δεύτερο τμήμα χρησιμοποιείται για να δηλώσουμε τις δικές μας μεταβλητές του προγράμματος, με πιθανή απόδοση αρχικών τιμών. Το τρίτο τμήμα του DIVISION αυτού είναι το CONSTANT SECTION, το οποίο, όμως, χρησιμοποιείται ελάχιστα.

Ακολουθεί ένα χαρακτηριστικό παράδειγμα.

            DATA DIVISION.

            FILE SECTION.

            FD       FILE-YPALLILOS      LABEL RECORD OMITTED.

                                                            DATA RECORD IS REC-YPALLILOS.

01        REC-YPALLILOS.

                        03 YPAL-AR-MHTROOY.

                                    05 YPAL-KOD-YPHRESIAS            PIC X(2).

                                    05 YPAL-KOD-TMIMATOS PIC X(2).

                                    05 YPAL-KODIKOS              PIC 9(6).

                        03 YPAL-EPONYMO                                    PIC Α(20).

                        03 YPAL-ONΟMA                                         PIC Α(15).

            WORKING-STORAGE SECTION.

01        TITLOS.

03 FILLER                 PIC X(80) VALUE SPACES.

03 FILLER                 PIC X(6) VALUE "ΣΕΛΙΔΑ".

03 AR-SELIDAS        PIC ZZ9.

01        FLAG                          PIC 9 VALUE 0.

Η εικόνα ενός πεδίου ή μιας μεταβλητής, που δηλώνεται με το PIC, περιγράφει το είδος του, και πιο συγκεκριμένα το Α(10) δηλώνει πεδίο μόνο με αλφαβητικούς χαρακτήρες (Α-Ζ) και με μέγιστο μήκος 10, το Χ(15) δηλώνει αλφαριθμητικούς χαρακτήρες (Α-Ζ, 0-9 και σύμβολα) με μέγιστο μήκος 15 χαρακτήρες και το 9(6) δηλώνει μόνο αριθμούς, εδώ το πολύ 6 ψηφία.

Το Ζ χρησιμοποιείται στα αριθμητικά πεδία για να μην εμφανίζονται τα μη σημαντικά μηδενικά των αριθμών. Το FILLER αποτελεί δεσμευμένη λέξη της Cobol και χρησιμοποιείται για να περιγράψει ένα σταθερό κείμενο (μήνυμα) που δεν πρόκειται να μεταβληθεί και δεν έχει νόημα έτσι η χρησιμοποίηση μιας μεταβλητής και η απόδοση τιμής σ’ αυτήν.

 

Το Procedure Division

Το procedure division είναι εκεί όπου βρίσκεται ουσιαστικά όλη η λογική του προγράμματος, όπως το διάβασμα από αρχεία, το γράψιμο σε αρχεία, η επεξεργασία των δεδομένων, η επιλογή στη λήψη αποφάσεων, η εκτέλεση βρόχων κ.ά.

Στην Cobol ένα πρόγραμμα αποτελείται από αυτόνομες μονάδες που αποκαλούνται παράγραφοι (paragraphs). Μια παράγραφος μπορεί να περιέχει μία μόνο ή και πολλές εντολές. Τα ονόματα που δίνουμε στις παραγράφους πρέπει να είναι δηλωτικά της δουλειάς που θέλουμε να κάνουν και θα πρέπει να τα γράφουμε ξεκινώντας από τη στήλη 8. Τις εντολές μέσα σε κάθε παράγραφο θα πρέπει να τις γράφουμε ξεκινώντας από τη στήλη 12.

Ακολουθεί ένα χαρακτηριστικό παράδειγμα.

PROCEDURE DIVISION.

CONTROL-PARAGRAPH.

PERFORM READ-DATA-FILE.

PERFORM CALCULATE-PRICES.

PERFORM PRINT-PRICE-REPORT.

STOP RUN.

Το ρεπερτόριο των εντολών της Cobol είναι πλουσιότατο και εδώ θα δούμε τις σημαντικότερες εντολές της.

 

Εντολές για Διάβασμα και Γράψιμο σε Αρχεία

Με την εντολή OPEN μπορούμε να ανοίξουμε ένα σειριακό αρχείο ή μόνο για διάβασμα απ’ αυτό (INPUT) ή μόνο για γράψιμο σ’ αυτό (OUTPUT).

            OPEN INPUT ARXEIO-EISODOU.

            OPEN OUTPUT ARXEIO-EXODOU.

Με την εντολή READ διαβάζουμε μια ολόκληρη εγγραφή (record) από ένα αρχείο εισόδου. Όταν φθάσουμε στο τέλος του αρχείου (AT END), μπορούμε να ορίσουμε να τοποθετηθεί μια τιμή σε μια βοηθητική μεταβλητή.

            READ ARXEIO-EISODOU AT END MOVE 1 TO FLAG-END.

Με την εντολή WRITE γράφουμε μια ολόκληρη εγγραφή (record) σ’ ένα αρχείο εξόδου. Εδώ δεν προσδιορίζουμε το όνομα του αρχείου αλλά το όνομα της εγγραφής του. Η ίδια εντολή χρησιμοποιείται και για την εκτύπωση σε εκτυπωτή.

            WRITE REC-ARXEIO-EXODOU.

Με την εντολή CLOSE κλείνουμε όσα από τα ανοικτά αρχεία θέλουμε και τα αποδεσμεύουμε έτσι από το λειτουργικό σύστημα.

            CLOSE ARXEIO-EISODOU ARXEIO-EXODOU.

 

Εντολές για Διάβασμα και Εμφάνιση Τιμών

Με την εντολή ACCEPT μπορούμε να διαβάσουμε δεδομένα (τιμές) από το πληκτρολόγιο και να τα καταχωρήσουμε σε μεταβλητές που θα πρέπει να τις έχουμε δηλώσει προηγουμένως στο WORKING-STORAGE SECTION. Μπορούμε να δηλώσουμε και σε ποιες συντεταγμένες (γραμμή, στήλη) της οθόνης θέλουμε να γίνει η καταχώρηση.

            ACCEPT YPAL-EPONYMO AT 0203

Με την εντολή DISPLAY μπορούμε να εμφανίσουμε δεδομένα (τιμές) στην οθόνη. Μπορούμε να δηλώσουμε και σε ποιες συντεταγμένες (γραμμή, στήλη) της οθόνης θέλουμε να γίνει η εμφάνιση της τιμής.

            DISPLAY YPAL-ONOMA AT 0805

 

Εντολές για Καταχώρηση και για Αριθμητικές Πράξεις

Με την εντολή MOVE μπορούμε να κάνουμε καταχώρηση μιας τιμής σ’ ένα πεδίο ή σε μια μεταβλητή.

            MOVE POSO TO WS-POSO.

            MOVE 1 TO FLAG.

            MOVE SPACES TO EPONYMO.

            MOVE ZERO TO FLAG.

            MOVE TIMH TO ARIT-A, ARIT-B.

Με την εντολή ADD μπορούμε να κάνουμε πρόσθεση δύο ή και περισσοτέρων αριθμητικών τιμών και να καταχωρήσουμε το αποτέλεσμα είτε σ’ έναν από τους προσθετέους είτε σε μια τρίτη μεταβλητή.

            ADD A TO B.

            Αθροίζει τα Α και Β και καταχωρεί το αποτέλεσμα στο Β.

            ADD A, B TO C.

Αθροίζει τα Α και Β και προσθέτει το αποτέλεσμα στο C.

            ADD A TO B, C.

            Αθροίζει την τιμή του Α σε καθεμία από τις μεταβλητές B και C.

            ADD A, B GIVING C.

            Αθροίζει τα Α και Β και καταχωρεί το αποτέλεσμα στο C.

Με την εντολή SUBTRACT μπορούμε να κάνουμε αφαίρεση δύο αριθμητικών τιμών και να καταχωρήσουμε το αποτέλεσμα είτε σ’ έναν από τους δύο αριθμούς είτε σε μια τρίτη μεταβλητή.

            SUBTRACT A FROM B.

            Κάνει την πράξη B=BA.

            SUBTRACT A, B FROM C.

            Κάνει την πράξη C=CBA.

            SUBTRACT A FROM B GIVING C.

            Κάνει την πράξη C=BA.

Με την εντολή MULTIPLY μπορούμε να κάνουμε πολλαπλασιασμό δύο αριθμητικών τιμών και να καταχωρήσουμε το αποτέλεσμα είτε σ’ έναν από τους δύο αριθμούς είτε σε μια τρίτη μεταβλητή.

            MULTIPLY A BY B.

            Κάνει την πράξη B=B*A.

            MULTIPLY A BY A.

            Κάνει την πράξη A=A*A.

            MULTIPLY A BY B GIVING C.

            Κάνει την πράξη C=A*B.

Με την εντολή DIVIDE μπορούμε να κάνουμε διαίρεση δύο αριθμητικών τιμών και να καταχωρήσουμε το αποτέλεσμα είτε σ’ έναν από τους δύο αριθμούς είτε σε μια τρίτη μεταβλητή.

            DIVIDE A INTO B.

            Κάνει την πράξη B=B/A.

DIVIDE A INTO B GIVING C.

            Κάνει την πράξη C=B/A.

DIVIDE SYNOLO BY 12 GIVING MO.

            Κάνει την πράξη MO=SYNOLO / 12.

Με την εντολή COMPUTE μπορούμε να κάνουμε πολύπλοκες αριθμητικές πράξεις που θα ήταν δύσκολο να γίνουν με τους συνδυασμούς των εντολών ADD, SUBTRACT, MULTIPLY ΚΑΙ DIVIDE. Πρέπει να έχουμε υπόψη μας ότι η Cobol χρησιμοποιεί το σύμβολο / για τη διαίρεση και τα δύο ** για την ύψωση σε δύναμη.

Για παράδειγμα, για να υπολογίσουμε την μία από τις δύο λύσεις μιας εξίσωσης δευτέρου βαθμού, θα μπορούσαμε να γράψουμε το εξής :

            COMPUTE R1=(–B+(B**2–4*A*C)**0.5) / (2*A)

 

Η Εντολή PERFORM

Η εντολή PERFORM είναι η πιο ενδιαφέρουσα εντολή της Cobol με πολλές δυνατότητες και με πολλές παραλλαγές. Μας θυμίζει κάτι από τις διαδικασίες (procedures) και τις εντολές επανάληψης (for, while, dountil) που γνωρίζουμε από τις άλλες γλώσσες προγραμματισμού. Ακολουθούν μερικά χαρακτηριστικά παραδείγματα.

            PERFORM YPOLOGISMOS-FOROU.

Θα εκτελεσθούν όλες οι εντολές της παραγράφου YPOLOGISMOS-FOROU μία φορά και μετά η εκτέλεση θα συνεχισθεί με την εντολή που ακολουθεί την εντολή PERFORM. Το τέλος μιας παραγράφου καθορίζεται από την έναρξη μιας άλλης παραγράφου, όταν δηλαδή βρεθεί μια καταχώριση στη στήλη 8.

            PERFORM READ-POSO UNTIL POSO=0.

Θα εκτελεσθούν όλες οι εντολές της παραγράφου READ-POSO όσες φορές χρειασθεί μέχρις ότου η μεταβλητή POSO πάρει την τιμή 0.

            PERFORM PARAGRAPH-1 THRU PARAGRAPH-3.

Θα εκτελεσθούν από μία φορά όλες οι εντολές που βρίσκονται ανάμεσα στις παραγράφους PARAGRAPH-1 και PARAGRAPH-3.

            PERFORM PARAGRAPH-1 THRU PARAGRAPH-2 5 TIMES.

Θα εκτελεσθούν από 5 φορές όλες οι εντολές που βρίσκονται ανάμεσα στις παραγράφους PARAGRAPH-1 και PARAGRAPH-2.

            PERFORM PARAGR-1 THRU PARAGR-2 UNTIL POSO=0.

Θα εκτελεσθούν όλες οι εντολές που βρίσκονται ανάμεσα στις παραγράφους PARAGR-1 και PARAGR-2 όσες φορές χρειασθεί μέχρις ότου η μεταβλητή POSO πάρει την τιμή 0.

            PERFORM PARAGR-1 THRU PARAGR-2 VARYING A FROM 1 BY 1 UNTIL A>10.

Θα εκτελεσθούν όλες οι εντολές που βρίσκονται ανάμεσα στις παραγράφους PARAGR-1 και PARAGR-2 τόσες φορές όσο η τιμή της μεταβλητής Α είναι μικρότερη ή ίση από 10. Η μεταβλητή Α ξεκινάει με αρχική τιμή 1 και αυξάνεται σε κάθε επανάληψη κατά 1.

 

Η Εντολή IF … ELSE

Η εντολή IF είναι κι αυτή πολύ βασική στην Cobol και έχει πολλές παραλλαγές. Οι εντολές IF και ELSE τελειώνουν όταν συναντήσουν τον χαρακτήρα της τελείας (.). Πολύ χρήσιμη είναι η έκφραση NEXT SENTENCE, που κατευθύνει τον έλεγχο του προγράμματος στην επόμενη εντολή.

Οι τελεστές σύγκρισης που χρησιμοποιεί η Cobol είναι οι γνωστοί μας <, > και =, αλλά μπορούμε να χρησιμοποιήσουμε και τις εκφράσεις LESS THAN, GREATER THAN και EQUAL TO αντίστοιχα. Για την άρνηση χρησιμοποιούμε τη δεσμευμένη λέξη NOT.

Ακολουθούν μερικά χαρακτηριστικά παραδείγματα.

            IF POSO GREATER THAN 100

                        MOVE 1 TO FLAG

                        ADD POSO TO SYNOLO.

 

            IF POSO > 100

                        MOVE 1 TO FLAG

            ELSE

                        ADD 1 TO METRITIS.

 

            IF METRITIS > 10

                        ADD 1 TO SYNOLO-SELIDON

                        MOVE ZEROS TO METRITIS

            ELSE

NEXT SENTENCE.

 

            IF METRITIS NOT > 10

NEXT SENTENCE

            ELSE

ADD 1 TO SYNOLO-SELIDON

                        MOVE ZEROS TO METRITIS.

 

            IF POSO > 10

                        IF POSO > 100

                                    MOVE 1 TO FLAG

                        ELSE

                                    MOVE 2 TO FLAG

            ELSE

                        MOVE 0 TO FLAG.

 

            IF POSO IS NUMERIC …

Ελέγχει αν το περιεχόμενο της μεταβλητής POSO είναι καθαρά αριθμητικό.

 

            IF ONOMA IS ALHABETIC …

Ελέγχει αν το περιεχόμενο της μεταβλητής ONOMA είναι καθαρά αλφαβητικό.

 

            IF POSO IS NOT POSITIVE

                        PERFORM ERROR-POSO

            ELSE

            NEXT SENTENCE.

Ελέγχει αν το περιεχόμενο της μεταβλητής POSO δεν είναι θετικό, δηλαδή αν είναι αρνητικό ή μηδέν.

 

Χρήσιμες Υποδείξεις για τα Προγράμματα της Cobol

Τα ονόματα που δίνουμε στα αρχεία πρέπει να είναι δηλωτικά του περιεχομένου τους. Για παράδειγμα, για ένα αρχείο υπαλλήλων, μπορούμε να δώσουμε το όνομα FILE-YPALLILOI ή FILE-EMPLOYEES. Αποτελεί καλή τακτική να χρησιμοποιούμε στα ονόματα των αρχείων το πρόθεμα FILE. Ανάλογο πρέπει να είναι και το όνομα που δίνουμε στην εγγραφή (record) ενός αρχείου, όπως για παράδειγμα REC-YPALLILOS. Επίσης, αποτελεί καλή τακτική να χρησιμοποιούμε στα ονόματα των εγγραφών το πρόθεμα REC.

Είναι καλό τα ονόματα των πεδίων μιας εγγραφής να έχουν σαν πρόθεμα τα πρώτα γράμματα του αντίστοιχου αρχείου, όπως για παράδειγμα, YPAL-AR-MHTROOY, YPAL-EPONYMO, YPAL-ONOMA κοκ. Οι αριθμοί επιπέδου που χρησιμοποιούμε πρέπει να ξεκινάνε από το 01 και να αυξάνουν κατά 2, έτσι ώστε να μπορούμε να κάνουμε εύκολα, αν χρειασθεί, κάποια ομαδοποίηση και προσθήκη αργότερα. Ακολουθεί ένα χαρακτηριστικό παράδειγμα.

            01        REC-YPALLILOS.

                        03 YPAL-AR-MHTROOY.

                                    05 YPAL-KOD-YPHRESIAS            PIC X(2).

                                    05 YPAL-KOD-TMIMATOS PIC X(2).

                                    05 YPAL-KODIKOS              PIC 9(6).

                        03 YPAL-EPONYMO                                    PIC X(20).

                        03 YPAL-ONΟMA                                         PIC X(15).

Αν δώσουμε την τιμή A1 στο υποπεδίο YPAL-KOD-YPHRESIAS, την τιμή Β5 στο υποπεδίο YPAL-KOD-TMIMATOS και την τιμή 121342 στο υποπεδίο YPAL-KODIKOS, τότε το ομαδικό πεδίο YPAL-AR-MHTROOY θα πάρει αυτόματα την τιμή A1Β5121342. Αντίστοιχα, αν δώσουμε την τιμή Α2Β5235647 στο ομαδικό πεδίο YPAL-AR-MHTROOY, τότε η τιμή αυτή θα σπάσει και θα μοιρασθεί ανάλογα στα τρία υποπεδία του, YPAL-KOD-YPHRESIAS, YPAL-KOD-TMIMATOS και YPAL-KODIKOS.

 

Τα Λογικά Δεδομένα

Τα λογικά δεδομένα (boolean data) μπορούν να πάρουν μία από δύο τιμές, TRUE ή FALSE. Ακολουθεί ένα παράδειγμα.

IDENTIFICATION DIVISION.

PROGRAM-ID.   NUMBER-SIZE-PROG.

AUTHOR.       PETER.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 NUMBER-SIZE PIC X.

88 BIG-NUMBER VALUE 'Y'.

77 DATA-NUMBER  PIC 9(6).

PROCEDURE DIVISION.

INPUT-NUMBER-PARAGRAPH.

MOVE 'N' TO NUMBER-SIZE

ACCEPT DATA-NUMBER

IF DATA-NUMBER > 1000

THEN MOVE 'Y' TO NUMBER-SIZE

END-IF

IF BIG-NUMBER THEN

DISPLAY 'Μεγάλος αριθμός'

ELSE

DISPLAY 'Μικρός αριθμός'

END-IF

STOP RUN.

Αν ο αριθμός που καταχωρούμε με την εντολή ACCEPT είναι μεγαλύτερος από 1000, τότε καταχωρείται ο χαρακτήρας 'Y' στο στοιχείο (item) NUMBER-SIZE. Το αποτέλεσμα αυτής της καταχώρησης είναι να πάρει το στοιχείο BIG-NUMBER του επιπέδου 88 την τιμή TRUE. Το επίπεδο 88 χρησιμοποιείται γι’ αυτόν τον σκοπό στην Cobol, ενώ με το επίπεδο 77 δηλώνουμε μεταβλητές που είναι ανεξάρτητες και δεν έχουν σχέση με ομαδικά πεδία και υποπεδία.

Το BIG-NUMBER έχει αρχική τιμή ίση με ‘Ν’ (false), καθώς καταχωρήσαμε τον χαρακτήρα 'N' στο NUMBER-SIZE, αν και οποιοσδήποτε άλλος χαρακτήρας (εκτός από τον 'Y') θα επέφερε το ίδιο αποτέλεσμα. Η εντολή IF BIG-NUMBER THEN ... είναι σαν να είχαμε γράψει "IF BIG-NUMBER is true THEN ...". Στο επίπεδο 88 μπορούμε να έχουμε και περισσότερες από μία επιλογές που να είναι true.

            Ακολουθούν μερικά χαρακτηριστικά παραδείγματα.

01        THIRTY-DAY-MONTHS PIC X VALUE SPACE.

88 SEPTEMBER        VALUE 'S'.

88 APRIL                    VALUE 'A'.

88 JUNE                    VALUE 'J'.

88 NOVEMBER         VALUE 'N'.

Στο παραπάνω παράδειγμα, αν το πεδίο THIRTY-DAY-MONTHS πάρει την τιμή S, τότε το υποπεδίο SEPTEMBER θα γίνει TRUE (αληθές), ενώ αν το πεδίο THIRTY-DAY-MONTHS πάρει την τιμή A, τότε το υποπεδίο APRIL θα γίνει TRUE (αληθές) κοκ.

01        MONTHS-CHECK PIC X.

88 SHORT-MONTH VALUE 'S' 'A' 'J' 'N' 'F'.

Στο παραπάνω παράδειγμα, αν το πεδίο MONTHS-CHECK πάρει μια από τις τιμές S, A, J, N και F, τότε το υποπεδίο SHORT-MONTH θα γίνει TRUE (αληθές), αλλιώς θα γίνει FALSE (ψευδές).

01        GRADES-CHECK PIC 999.

88 A-GRADE VALUE 70 THRU 100.

88 B-GRADE VALUE 60 THRU 69.

88 C-GRADE VALUE 50 THRU 59.

88 FAIL-GRADE       VALUE 0 THRU 49.

Στο παραπάνω παράδειγμα, αν το πεδίο GRADES-CHECK πάρει τιμή από 70 έως και 100, τότε το υποπεδίο A-GRADE θα γίνει TRUE (αληθές), ενώ αν το πεδίο GRADES-CHECK πάρει τιμή από 60 έως και 69, τότε το υποπεδίο B-GRADE θα γίνει TRUE (αληθές) κοκ.

 

Η Εντολή SET

Μια χρήσιμη εντολή είναι η SET. Έτσι, αντί να γράψουμε :

MOVE 'Y' TO NUMBER-SIZE

όπως κάναμε στο προηγούμενο παράδειγμα, μπορούμε να δώσουμε τιμή απευθείας στη λογική μεταβλητή BIG-NUMBER, ως εξής :

SET BIG-NUMBER TO TRUE

Φυσικά, θα μπορούσαμε να είχαμε γράψει και το εξής :

SET BIG-NUMBER TO FALSE

 

Απόδοση Τιμών σε Δεδομένα

Κατά τη διάρκεια της εκτέλεσης ενός προγράμματος, είναι συχνά απαραίτητο να δώσουμε μια αρχική τιμή σ’ ένα στοιχείο ή σε μια ομάδα στοιχείων, όπως την τιμή μηδέν (zero) ή κάποια άλλη τιμή. Συχνά τα προγράμματα δίνουν μια συγκεκριμένη τιμή στα δεδομένα κατά το ξεκίνημά τους. Για παράδειγμα, μπορούμε να χρησιμοποιήσουμε τη μεταβλητή REC-COUNT για να μετρήσουμε τον αριθμό (πλήθος) των εγγραφών (records) που έχουν διαβασθεί από το πρόγραμμα. Προς τον σκοπό αυτό μπορούμε να χρησιμοποιήσουμε την εντολή COMPUTE :

COMPUTE REC-COUNT = REC-COUNT + 1

Φυσικά, την πρώτη φορά που θα συναντήσουμε τη μεταβλητή REC-COUNT, αυτή θα πρέπει να έχει μια αρχική τιμή, προφανώς μηδέν. Αυτό μπορεί να γίνει στο data division, ως εξής :

01        REC-COUNT  PIC 9(4) VALUE ZERO.

Μπορούμε ακόμη και να χρησιμοποιήσουμε την παρακάτω εντολή ανάμεσα στις πρώτες εντολές στο procedure division :

MOVE ZERO TO REC-COUNT

Αν, όμως, θελήσουμε να μηδενίσουμε μια ομάδα από αριθμητικά στοιχεία ή και να καταχωρήσουμε μηδενικά σε μια ομάδα από αλφαριθμητικά στοιχεία, τότε μπορούμε να χρησιμοποιήσουμε την εντολή INITIALIZE, όπως φαίνεται στο παρακάτω παράδειγμα :

DATA DIVISION.

WORKING-STORAGE SECTION

01        DATA-GROUP.

03 REC-COUNTER               PIC 9(4).

03 REC-TYPE                        PIC X(2).

03 REC-DATE                       PIC 9(6).

03 FILLER                 PIC X(14) VALUE 'Στοιχεία εγγραφής'.

Και στο procedure division :

INITIALIZE DATA-GROUP

Το αποτέλεσμα της παραπάνω εντολής INITIALIZE είναι ότι το REC-COUNTER θα έχει τώρα τιμή μηδέν (zero), όπως και το REC-DATE, ενώ το REC-TYPE θα περιέχει κενά (spaces). Το στοιχείο FILLER αποτελεί μια δεσμευμένη λέξη (reserved word) της Cobol και αναφέρεται σε μια συγκεκριμένη (σταθερή) τιμή, η οποία δεν θα μηδενισθεί από την παραπάνω εντολή INITIALIZE.

 

Μια Εφαρμογή με Εκτύπωση Δεδομένων

Θα δούμε τώρα πώς μπορούμε να δημιουργήσουμε μια φόρμα για εκτύπωση στο data division. Αν θέλουμε να κάνουμε εγγραφή σε αρχείο και όχι εκτύπωση σε εκτυπωτή, η διαδικασία είναι ολόιδια.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

           

SELECT PRINT-FILE ASSIGN TO PRINTER.

DATA DIVISION.

FILE SECTION.

FD       PRINT-FILE.

01        REPORT-OUT                       PIC X(80).

WORKING-STORAGE SECTION.

01        PRINT-HEADERS.

03 P-TITLE.

05 P-TITLE-TXT        PIC X(49)  VALUE '  Batch Control Program - Error Report.  Page : '.

05 P-PAGE-NO         PIC Z9 VALUE ZERO.

03 COL-HEAD-1                  PIC X(31)

VALUE ' PART    CUST/   DATE     QUANT'.

03 COL-HEAD-2                  PIC X(24) VALUE '  NO     SUP NO  SUP/REC'.

01        PRINT-LINE.

03 P-PART-NO                      PIC X(8). 

03                                            PIC X VALUE SPACE.

03 P-CUS-SUP-NO              PIC X(6).

03                                            PIC XX VALUE SPACES.

03 P-DATE-S-D.

05 P-DATE-1             PIC XX.

05                                PIC X VALUE '/'.

05 P-DATE-2             PIC XX.

05                                PIC X VALUE '/'.

05 P-DATE-3             PIC XX.    

03                                            PIC X VALUE SPACE.

03 P-QUANT                         PIC Z(4)9.

01        P-FOOTER.

03 TOT-REC-TXT                 PIC X(21) VALUE 'Συνολικός αριθμός εγγραφών : '.

03 P-REC-COUNT                PIC ZZ9 VALUE ZERO.

01        P-BATCH-REC.

03 BAT-TITLE                       PIC X(38)

 Η εκτύπωση (printout) θα έχει την εξής μορφή (format) :

03 COL-HEAD-1 PIC X(31) VALUE ' PART    CUST/   DATE     QUANT'.

MOVE PAGE-NO TO P-PAGE-NO 

WRITE REPORT-OUT FROM P-TITLE AFTER PAGE

Ο αριθμός γραμμής που περιέχεται στη μεταβλητή PAGE-NO εκχωρείται στο στοιχείο P-PAGE-NO της ομάδας P-TITLE, η οποία με τη σειρά της ανήκει στο τμήμα PRINT-HEADERS.

Η δεύτερη εντολή κάνει στην ουσία δύο δουλειές :

MOVE P-TITLE TO REPORT-OUT

WRITE REPORT-OUT AFTER PAGE

Η εντολή AFTER PAGE αναγκάζει τον εκτυπωτή να ξεκινήσει μια καινούργια σελίδα.

Αν αλλάξουμε την εντολή ASSIGN PRINT-FILE TO 'PRINTER' με την εντολή ASSIGN PRINT-FILE TO 'report.txt', τότε θα δημιουργηθεί η ίδια μορφή εκτύπωσης (report) αλλά αυτή τη φορά θα καταχωρηθεί σ’ ένα αρχείο με όνομα 'report.txt' και θα πρέπει να προσθέσουμε και την εντολή ORGANIZATION IS LINE SEQUENTIAL.

 

Μια Ακόμη Εφαρμογή σε Cobol

IDENTIFICATION DIVISION.

PROGRAM-ID. TEST.

AUTHOR. KOSTAS.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

DATA DIVISION.

WORKING-STORAGE SECTION.

01        ORES              PIC 99.

01        AMOIBH        PIC 9(6).

01        SUM               PIC 9(12).

01        FOROS           PIC 9(5).

01        K                     PIC X.

01        GRAMMH.

02  E-FOROS            PIC Z(5).

02  FILLER                PIC XX VALUE SPACES.

02  E-SUM                 PIC Z(12).

PROCEDURE DIVISION.

MOVE ZEROS TO E-SUM E-FOROS SUM FOROS.

DISPLAY "ΔΩΣΕ ΤΙΣ ΩΡΕΣ ΕΡΓΑΣΙΑΣ : " AT 0101.

ACCEPT ORES AT 0130.

DISPLAY "ΔΩΣΕ ΤΗΝ ΑΜΟΙΒΗ : " AT 0201.

ACCEPT AMOIBH AT 0230.

COMPUTE SUM = ORES * AMOIBH.

IF SUM > 100000

COMPUTE FOROS = (12 * SUM) / 100

ELSE

COMPUTE FOROS = (8 * SUM) / 100.

MOVE SUM TO E-SUM.

MOVE FOROS TO E-FOROS.

DISPLAY GRAMMH AT 0505.

DISPLAY "AAAA" AT 0605.

ACCEPT K AT 1220.

STOP RUN.

Στο πρόγραμμα αυτό ζητάμε από τον χρήστη να καταχωρήσει δύο αριθμητικές τιμές στις μεταβλητές ORES και AMOIBH και μετά υπολογίζουμε το γινόμενό τους για να το καταχωρήσουμε στη μεταβλητή SUM. Στη συνέχεια υπολογίζουμε τον φόρο με μια κατάλληλη εντολή IFELSE και καταχωρούμε τις τιμές των μεταβλητών SUM και FOROS σε ίσου μεγέθους αντίστοιχες μεταβλητές, ώστε να μπορούμε να τις εμφανίσουμε στην οθόνη μέσω του ομαδικού πεδίου GRAMMH

Η εντολή ACCEPT K AT 1220 δίνεται για να σταματήσει η εκτέλεση του προγράμματος και να μπορούμε να δούμε έτσι τα αποτελέσματα. Με την εντολή STOP RUN τελειώνει η εκτέλεση του προγράμματος.

 

 

back.gif (9867 bytes)

Επιστροφή