OpenCOBOL (Frissítve)

Egyre inkább tetszik, pláne, hogy sikerült ennél picivel messzebb jutnom:


-------*
       IDENTIFICATION DIVISION.
       PROGRAM-ID. Elso_Programocska.
       AUTHOR. Zeller.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01   oprendszer PIC X(16).
       01   datum.
            05 ev      PIC 9(4).
            05 honap   PIC 9(2).
            05 nap     PIC 9(2). 

       PROCEDURE DIVISION.
       Eleje.
         ACCEPT oprendszer FROM ENVIRONMENT 'OS'.
         DISPLAY "OS: ", oprendszer," " WITH NO ADVANCING.
         ACCEPT datum FROM DATE YYYYMMDD.
         DISPLAY datum SPACE ev, "-", honap, "-", nap.
         STOP RUN.

A továbbjutás jelenleg annyi, hogy fájlok be/ki, sort, matekozok a rekordok egyes mezőivel, a nem numerikus mezőkkel is elkezdtem szórakozni. Természetesen "old style" formátum :) a sorok első 7 karaktere space, a sor max. hossza 72 karakter...

http://www.cse.ohio-state.edu/~sgomori/314/topics.html
http://www.csis.ul.ie/cobol/Course/Default.htm
http://www.opencobol.org/
http://opencobol.add1tocobol.com/

Update 2011.02.18:

Már korábban megjöttek az antikvarium.hu-ról rendelt könyvek, most azokat olvasgatom a szerencsére ismét megfogyatkozott szabadidőmben:

Bevezetés a COBOL programozási nyelvbe (Fordította Balogh Zoltán) - SZÁMOK Budapest, 1971
Budavári Elemér: COBOL (kézirat) - Tankönyvkiadó Budapest, 1977
Bodor Tibor: Korszerű COBOL kódolási konvenciók - SZÁMALK Budapest, 1983
Orbán katalin: COBOL az IBM PC-n - Novotrade Budapest, 1988

Hozzászólások

De hogy még a Gyaloggaloppban is szó van róla...

"Nono, fiam, tán COBOL nem lehet hidat építeni?"

belőled még nagy ember lehet a magyar giro rendszerben...
ahogy a szabványok kinéznek, megeszem a kalapom, ha nem cobolban írták az egészet...

Nemrég kaptam n-ed kézből allásajánlatot Cobol-programozói helyre, ha kicsit belehúzol, szólok, hogy jössz. Már csak azt az egyetlen problémám, hogy nem látom, hogy miként lesz a fenti kódból "hello world".

Az illendően (7 sorban) megírt "Hello World!" -ön itt is, mint más nyelvekben nulladik körben túljutottam :-) a bedobott példában már a környezeti változókat kezdtem piszkálni - az mondjuk kevésbé érdekes, mint pl. egy listafájl maszírozása.
A "miként lesz" egyszerűen annyi, hogy "cobc -x -Wall envi.cbl" aztán slussz. Cygwin alatt is szépen fordult az OpenCOBOL (miután a libgmp-devel meg libdb4.5* fel lett pakolva).

Néhány echte COBOL (tan)könyvet már összeszedtem (várom, hogy megérkezzenek), addig meg az OpenCOBOL programozói kézikönyvet forgatom, és abból próbálok okosodni. Belehúzni mindenképp belehúzok, úgyhogy nyugodtan szólj, aztán meglátjuk. Beletanulni úgyis bele kell az adott környezetbe/kódhalmazba, egy erős alapozás után -bízom benne- menni fog. Végülis a Pl/SQL-be is így ástam bele magam anno: volt egy "Bevezetés..." tanfolyam, majd évek múlva jött a "mély víz" - webet hegeszteni Pl/SQL alapokon.

Azt a kutya meg a mája! Elővakarom a régi COBOL tankönyveimet! Ez király! :-D

Ave, Saabi.

ls -l > DIR.LST, aztán játszadozzunk vele :)


       IDENTIFICATION DIVISION.
       PROGRAM-ID.  SzortDemo.
       AUTHOR.  Zeller.
       
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       *   soronkent egy rekord:
           SELECT DirFile ASSIGN TO "DIR.LST"
                ORGANIZATION IS LINE SEQUENTIAL.
      
           SELECT WorkFile ASSIGN TO "WORK.TMP".

           SELECT SortedFile ASSIGN TO "DIRSORT.LST"
                ORGANIZATION IS LINE SEQUENTIAL.
 
       DATA DIVISION.
       FILE SECTION.
       FD DirFile.
       01 FileDetails.
          88  EndOfDirFile    VALUE HIGH-VALUES.
          02  Mask   PIC X(10).
          02  Sp1    PIC X.
          02  Link   PIC 9.
          02  Sp2    PIC X.
          02  UserGroup.
              05  Owner  PIC X(7).
              05  Sp3    PIC X.
              05  Grp    PIC X(5).
          02  Sp4    PIC X.
          02  Meret  PIC ------9.
          02  Sp5    PIC X.
          02  HonapNap.
              05  Honap  PIC XXX.
              05  Sp6    PIC X.
              05  Nap    PIC 99.
          02  Sp7    PIC X.
          02  Ido    PIC X(5).
          02  Sp8    PIC X.
          02  Name   PIC X(32).

       SD WorkFile.
       01 WorkRec.
          02 NameW   PIC X(32).
          02 MeretW  PIC -------9.

       FD SortedFile.
       01 SortedRec.
          88 EndOfSortedFile    VALUE HIGH-VALUES.
          02 NameS   PIC X(32).
          02 MeretS  PIC -------9.

       WORKING-STORAGE SECTION.
       *  Numerikus, mert szamolunk vele: a bevezeto 0-k maradnak
       01 MeretN     PIC 9(8).
       01 Szumma     PIC 9(8).
       *  Nem lesz bevezeto nulla, nem numerikus
       01 SzummaDis  PIC -------9.
       01 Kitolt     PIC X(32) VALUE SPACES.

       PROCEDURE DIVISION.
       Begin.
       * Then read the file and display the records 
          OPEN INPUT DirFile
       *  DISPLAY "_Size__ ____________N_a_m_e_____________"
          READ DirFile
             AT END SET EndOfDirFile TO TRUE
          END-READ 
          PERFORM UNTIL EndOfDirFile
       *     DISPLAY Meret SPACE Name
             DISPLAY FileDetails, "#"
             READ DirFile
                AT END SET EndOfDirFile TO TRUE
             END-READ
          END-PERFORM
          CLOSE DirFile

       * Szortoljuk meg:
       SORT WorkFile ON ASCENDING KEY MeretW
            INPUT PROCEDURE IS SzortRekordGen
            GIVING SortedFile.

          OPEN INPUT SortedFile
          DISPLAY " MeretS  ", Kitolt, " MeretN   Szumma"
          READ SortedFile
             AT END SET EndOfSortedFile TO TRUE
          END-READ 
          PERFORM UNTIL EndOfSortedFile
            MOVE MeretS TO MeretN
            ADD MeretN TO Szumma
             DISPLAY MeretS SPACE NameS SPACE MeretN SPACE Szumma
             READ SortedFile
                AT END SET EndOfSortedFile TO TRUE
             END-READ
          END-PERFORM
          MOVE Szumma TO SzummaDis.
          DISPLAY SzummaDis SPACE Kitolt SPACE Szumma. 
          CLOSE SortedFile

          STOP RUN.
        
       * A szorthoz az input:
       SzortRekordGen.
          OPEN INPUT DirFile
          READ DirFile
             AT END SET EndOfDirFile TO TRUE
          END-READ 
          PERFORM UNTIL EndOfDirFile
             MOVE Name TO NameW
             MOVE Meret TO MeretW
             RELEASE WorkRec
             READ DirFile
                AT END SET EndOfDirFile TO TRUE
             END-READ
          END-PERFORM
          CLOSE DirFile.

Ezen rövid forrás alapján úgy tűnik, hogy a COBOL programozok mesterei a Caps Lock kezelésének. :-)

-----
"Én vagyok a hülye, hogy leállok magával vitatkozni."