BluePink BluePink
XHost
Servere virtuale de la 20 eur / luna. Servere dedicate de la 100 eur / luna - servicii de administrare si monitorizare incluse. Colocare servere si echipamente de la 75 eur / luna. Pentru detalii accesati site-ul BluePink.

Aplicatii simple Cobol

Coding in Cobol
  1. editam codul sursa si il salvam cu numele hello.cob
  2. compilare: folosim compilatorul opencobol: cobc -x hello.cob
  3. executie: ./hello

PROGRAM-ID. hello.
PROCEDURE DIVISION.
DISPLAY "Hello World!".
STOP RUN

*Lucru cu data si timp
IDENTIFICATION DIVISION.
PROGRAM-ID.  EX5.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Zona-lunilor-anului.
02 FILLER PIC X(10) VALUE 'Ianuarie'.
02 FILLER PIC X(10) VALUE  'Februarie'.
02 FILLER PIC X(10) VALUE  'Martie'.
02 FILLER PIC X(10) VALUE  'Aprilie'.
02 FILLER PIC X(10) VALUE  'Mai'.
02 FILLER PIC X(10) VALUE   'Iunie'.
02 FILLER PIC X(10) VALUE  'Iulie'.
02 FILLER PIC X(10) VALUE  'August'.
02 FILLER PIC X(10) VALUE   'Septembrie'.
02 FILLER PIC X(10) VALUE   'Octombrie'.
02 FILLER PIC X(10) VALUE   'Noiembrie'.
02 FILLER PIC X(10) VALUE    'Decembrie'.
01 Vector-luna REDEFINES Zona-lunilor-anului.
02 B OCCURS 12 PIC  X(10).
01 Data-zilei.
02 aa PIC 99.
02 ll PIC 99.
02 zz PIC 99.
01 Data-zilei-E.
02 ziua PIC 99.
02 FILLER PIC XXX VALUE ' - '.
02 luna PIC X(10).
02 FILLER PIC X(5) VALUE ' - 20'.
02 an PIC 99.
01 Ora-curenta.
02 hh PIC 99.
02 mm PIC 99.
02 ss PIC 99.
02 cc PIC 99.
01 Ora-curenta-E.
02 ora PIC 99.
02 FILLER PIC XXX VALUE ' , '.
02 minute PIC 99.
02 FILLER PIC X(9) VALUE ' minute, '.
02 secunde PIC 99.
02 FILLER PIC X(8) VALUE ' secunde'.
PROCEDURE DIVISION.
Prog.
ACCEPT Data-zilei FROM DATE
MOVE zz TO ziua
MOVE B(ll) TO luna
MOVE aa TO an
ACCEPT Ora-curenta FROM TIME
MOVE hh TO ora
MOVE mm TO minute
MOVE ss TO secunde
DISPLAY 'Suntem in ziua de :'   Data-zilei-E
DISPLAY 'Este ora:'    Ora-curenta-E
STOP RUN.

*Formatare ecran
IDENTIFICATION DIVISION.
PROGRAM-ID.  FORMATARE-ECRAN.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
   CONSOLE IS CRT.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC S999V99.
77 B PIC S999V99.
77 S PIC S9999V99.
77 E PIC -(6)9.99.
77 OP PIC X.

77 P PIC 9.

PROCEDURE DIVISION.
PROG.
DISPLAY ALL X'02'
DISPLAY 'Dati A (S999V99):' AT 0201
      WITH REVERSE-VIDEO
ACCEPT A AT 0230
PERFORM Prel UNTIL A = 0
DISPLAY SPACE
STOP RUN.
Prel.
  DISPLAY 'Dati B (S999V99):' AT 0301
      WITH REVERSE-VIDEO
  ACCEPT B AT 0330
DISPLAY 'Dati operatorul aritmetic:' AT 0401
      WITH REVERSE-VIDEO
  ACCEPT OP AT 0430
  PERFORM TEST1
DISPLAY 'Tastati <ENTER>:'  AT 1501 WITH BLINK
  ACCEPT P
  DISPLAY ALL X'02'
  DISPLAY 'Dati A (S999V99)'  AT 0201
    WITH REVERSE-VIDEO
   `sau 0:  ` AT 0217 WITH HIGHLIGHT BLINK
  ACCEPT A AT 0230
TEST1.
  IF OP = '+' THEN
    ADD A B GIVING S
    DIVIDE S BY 2 GIVING E
    DISPLAY  'E=' AT 0601
        WITH REVERSE-VIDEO HIGHLIGHT
       E AT 0604 WITH BLINK
ELSE
 IF OP = '-' THEN
   SUBSTRACT B FROM A GIVING E
   DISPLAY 'E=' AT 0601
      WITH REVERSE-VIDEO HIGHLIGHT
     E AT 0604 WITH BLINK
  ELSE
    IF OP = '*' THEN
      MULTIPLY A BY B GIVING E
      DISPLAY 'E=' AT 0601
         WITH REVERSE-VIDEO HIGHLIGHT
        E  AT 0604 WITH BLINK
     ELSE
       IF OP = '/' THEN
         IF B NOT = 0 THEN
           DIVIDE A BY B GIVING E
           DISPLAY 'E=' AT 0601
           WITH REVERSE-VIDEO HIGHLIGHT
                 E AT 0604 WITH BLINK
          ELSE
          DISPLAY 'Impartire la zero !'
 AT 1015 WITH REVERSE-VIDEO BLINK BEEP

         ELSE
DISPLAY 'Operator diferit de +,-,*,/   !'

*Maxim
IDENTIFICATION DIVISION.
PROGRAM-ID.  EX1.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 9999.
77 B PIC 9999.
77 C PIC 9999.
77 MAX PIC ZZZ9.
PROCEDURE DIVISION.
PROG.
DISPLAY 'Dati A (9999):' NO ADVANCING
ACCEPT A
DISPLAY 'Dati B (9999):' NO ADVANCING
ACCEPT B
DISPLAY 'Dati C(9999):' NO ADVANCING
ACCEPT C
IF A>B
IF A>C
   MOVE A TO MAX
ELSE
   MOVE C TO MAX

ELSE
IF B>C
   MOVE B TO MAX
 ELSE
     MOVE C TO MAX.
  DISPLAY 'Elementul maxim este:'MAX
STOP RUN.

*Ecuatia de gradul II
IDENTIFICATION DIVISION.
PROGRAM-ID.  EX2.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 COEF-ECUATIE.
   02    A  PIC S9999V99.
   02    B  PIC S9999V99.
   02    C  PIC S9999V99.
77  D        PIC  S9(9)V9999.
PROCEDURE DIVISION.
PROG.
 DISPLAY 'dati A  (S9999V99):' NO ADVANCING
    ACCEPT A
 DISPLAY 'dati B  (S9999V99):' NO ADVANCING
    ACCEPT B
 DISPLAY 'dati C  (S9999V99):' NO ADVANCING
    ACCEPT C
    COMPUTE D=B * B - 4 * A * C
    IF D NOT NEGATIVE THEN
      DISPLAY 'Radacini reale !'
    ELSE
      DISPLAY 'Radacini complexe !'.
STOP RUN.

*Ecuatia de gradul II alta varianta
IDENTIFICATION DIVISION.
PROGRAM-ID.  EX2-ALTA-VARIANTA.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 COEF-ECUATIE.
02    A  PIC S9999V99.
02    B  PIC S9999V99.
02    C  PIC S9999V99.
77  D        PIC  S9(9)V9999.
77 D-E       PIC  -(9)9.9999.
77  REZ      PIC  S9(9)V9999.
PROCEDURE DIVISION.
PROG.
DISPLAY 'Dati A  (S9999V99):' NO ADVANCING
  ACCEPT A
DISPLAY 'Dati B  (S9999V99):' NO ADVANCING
  ACCEPT B
DISPLAY 'Dati C   (S9999V99):' NO ADVANCING
ACCEPT C
MULTIPLY 4 BY A GIVING REZ
MULTIPLY C BY REZ
MULTIPLY B BY B GIVING D
SUBTRACT REZ FROM D
MOVE D TO D-E
DISPLAY 'D='  D
DISPLAY 'D='  D-E
IF D NOT NEGATIVE THEN
 DISPLAY 'Radacini reale !'
ELSE
 DISPLAY  'Radacini complexe !'.
STOP RUN.

*Suma
IDENTIFICATION DIVISION.
PROGRAM-ID.  EX4.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 VECTOR.
02  B  OCCURS  10  PIC  S9999V99.
77  S  PIC  S9(5)V99.
77  SE PIC  -(5)9.99.
77  I  PIC  99.
PROCEDURE DIVISION.
PROG.
DISPLAY 'Dati 10 numere,un elem. pe linie  (S9999V99):'
MOVE 0 TO S
PERFORM CITIRE-SUMA
   VARYING I FROM 1 BY 1 UNTIL I>10
MOVE S TO SE
DISPLAY 'S='  SE
STOP RUN.
CITIRE-SUMA.
  ACCEPT B(I)
  ADD B(I)  TO S.

*Lucru cu fisiere
IDENTIFICATION DIVISION.
PROGRAM-ID. EX-FIS.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT LISTA ASSIGN TO 'LISTA.TXT'.
DATA DIVISION.
FILE SECTION.
FD LISTA.
01 Rand PIC X(38).
WORKING-STORAGE SECTION.
01 Articol.
02 Nume  PIC  A(20).
02 Nota1 PIC 99.
02 Nota2  PIC 99.
02 Nota3 PIC 99.
77 S PIC 99.
77 Raspuns PIC AA.
77 NRL PIC 99.
77 NRS PIC 999.
01 Rand-student.
02 NRS-E PIC ZZ9B(5).
02 Nume-E PIC A(25).
02 Media-E PIC Z9.99.
01 Rand-cap-tabel.
02 FILLER PIC X(8) VALUE 'Nr.crt.'.
02 FILLER PIC X(25) VALUE 'Nume si prenume'.
                    02 FILLER PIC X(5) VALUE 'Media'.
                  01 Rand-titlu-lista.
                    02 FILLER PIC X(10) VALUE SPACE.
                    02 FILLER PIC X(6) VALUE 'Lista'.
                    02 NRL-E PIC Z9.
                  PROCEDURE DIVISION.
                  Monitor.
                     PERFORM Inceput
               PERFORM Prel-grup UNTIL Raspuns = 'NU'
                     PERFORM Sfarsit
                     STOP RUN.
                  Inceput.
                     OPEN OUTPUT LISTA
                     MOVE 0 TO NRL
DISPLAY 'Efectuati operatiile cu un grup? (DA/NU): '
        NO ADVANCING
     ACCEPT Raspuns.
  Prel-grup.
    PERFORM Inceput-grup
    PERFORM Prel UNTIL Nume = ' '
    PERFORM Sfarsit-grup.
  Inceput-grup.
     ADD 1 TO NRL
     MOVE NRL TO NRL-E
WRITE Rand FROM Rand-titlu-lista AFTER 4
WRITE Rand FROM Rand-cap-tabel AFTER 2
     MOVE ALL '-' TO Rand
     WRITE Rand   AFTER 1
     MOVE 0 TO NRS
     DISPLAY 'Nume:  ' NO ADVANCING
     ACCEPT Nume.
  Prel.
     ADD 1 TO NRS
     MOVE NRS TO NRS-E
 DISPLAY 'Prima nota:  ' NO ADVANCING
     ACCEPT Nota1
DISPLAY 'A doua nota:  ' NO ADVANCING
     ACCEPT Nota2
             DISPLAY 'A treia nota:  ' NO ADVANCING
                   ACCEPT Nota3
                   ADD Nota1 Nota2 Nota3 GIVING S
                   DIVIDE S BY 3 GIVING Media-E
                   MOVE Nume TO Nume-E
               WRITE Rand FROM Rand-student AFTER 1
             DISPLAY 'Nume sau <CR>: ' NO ADVANCING
                   ACCEPT Nume.
                Sfarsit-grup.
                   MOVE ALL '-' TO Rand
                   WRITE Rand AFTER 1
DISPLAY 'Reluati operatiile cu alt grup? (DA/NU): '
                     NO ADVANCING
                   ACCEPT Raspuns.
                Sfarsit.
                   CLOSE LISTA.


*Alta suma
IDENTIFICATION DIVISION.
PROGRAM-ID.  EX-SUM2.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 VECTOR.
02 B OCCURS 1 TO 10000 DEPENDING N PIC S9999V99.
   77  S  PIC  S9(5)V99.
   77  SE PIC  -(5)9.99.
   77  I  PIC  99.
   77  N  PIC  99999.
   PROCEDURE DIVISION.
   PROG.
DISPLAY 'Dati N <=10000:' NO ADVANCING
ACCEPT N
            MOVE 0 TO S
            PERFORM CITIRE-SUMA
               VARYING I FROM 1 BY 1 UNTIL I>N
            MOVE S TO SE
            DISPLAY 'S='  SE
            STOP RUN.