[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/FrankR85/cobol-workspace)

# COBOL Workspace

## Ausprobieren im Webeditor

Ihr seid neu und wollt COBOL und diesen Workspace einfach mal ausprobieren? Dann klickt [hier](https://gitpod.io/#https://github.com/FrankR85/cobol-workspace).

## Installation
**Easy Install**

Für diesen Kurs gibt es ein Dockerimage, welches fertig eingerichtet ist. Wir empfehlen dieses zu verwenden.
1. Docker installieren auf [Windows](https://docs.docker.com/docker-for-windows/install).

2. Dieses Repository clonen.

3. Ein Terminal öffnen, in den cobol-workspace Ordner navigieren und die folgenden Befehle ausführen:

```bash
docker rmi frankr85/cobol:latest -f
```

**Linux & Windows Powershell**
```bash
docker run -it --mount src="$(pwd)",target=/root/cobol,type=bind frankr85/cobol:latest bash
```

**Windows cmd**
```bash
docker run -it --mount src="%cd%",target=/root/cobol,type=bind frankr85/cobol:latest bash
```
4. Testen, ob der GnuCOBOL bei euch läuft. Gebt dazu folgendes in das Terminal ein:

```bash
cobc -x -j helloworld/HELLWORLD.CBL 
```
Die Ausgabe sollte so aussehen:
```
Hallo Welt!
```

5. IDE eurer Wahl installieren. Unsere Empfehlung: Visual Studio Code mit einer COBOL-Extension wie bitlang.cobol.

**(Optional) Testframework**

```bash
./testframework/run-ut.sh 
```
Die letzten Zeilen der Ausgabe sollte in etwa so aussehen:
```bash
  1 TEST CASES WERE EXECUTED
  1 PASSED
  0 FAILED
=================================================
```

**DIY Install**

Ihr könnt den GnuCOBOL-Compiler und evtl. die verwendeten Projekte auch selber installieren. Allerdings müsst ihr das Ganze dann selber zum Laufen bringen. 

Für die Unittests verwenden wir das Projekt [cobol-unit-test von neopragma](https://github.com/neopragma/cobol-unit-test) 

## Dokumentation
Für diesen Kurs wurde eine Kurzeinweisung in COBOL geschrieben. Ihr findet sie [hier](https://frankr85.github.io/cobol-handbuch/).

Die komplette Dokumentation für den GnuCOBOL-Compiler der Version 3.1 findet ihr [hier](https://sourceforge.net/p/gnucobol/code/HEAD/tree/external-doc/guide/PDFs/gnucobpg-a4.pdf?format=raw).

## Hallo Welt
Gewöhnlich beginnt man das Erlernen einer neuen Programmiersprache mit einem `Hallo Welt`-Beispiel.
Dieses Beispiel findet ihr im Ordner `helloworld`. Nachdem ihr den Container gestartet habt und euch mit einer Shell verbunden habt, könnt ihr in das Verzeichnis wechseln:
```
cd helloworld
```
Und die Datei `HELLOWORLD.CBL` anschließend kompilieren:
```
cobc -x HELLOWORLD.CBL
```
Der Compiler erzeugt ein Binary `HELLOWORLD`, welches ihr ausführen könnt:
```
./HELLOWORLD
```
Die Ausgabe sollte
```
Hallo Wwu!
``` 
sein.

## Eigenes Projekt mit dem Testframework
Damit ihr euch auf das Entwickeln und nicht das Einrichten des Entwicklungs- und Testtools konzentrieren könnt, haben wir euch eine Kopierbasis bereitgestellt, an der ihr nur wenige Anpassungen durchführen müsst:
1. Kopiert den Ordner testframework und bennent ihn um.
2. Ändert in der Datei run-ut.sh in eurem kopierten Ordner kopierbasis in den namen eures neuen Ordners.
