COBOL – Geschäftslogik im Mainframe
COBOL (Common Business Oriented Language, 1959) ist die Sprache der Banken, Versicherungen und Behörden. Noch heute laufen Milliarden Zeilen COBOL in Produktionssystemen – von Kontoführung über Gehaltsabrechnung bis zur Steuerverwaltung. Der freie Compiler GnuCOBOL (Kommando cobc) macht die Sprache auch auf Linux nutzbar.
Compiler
cobc --version– Version prüfencobc -x -o prog prog.cbl– ausführbares Programm bauencobc -m modul.cbl– Modul/Bibliothek kompilierencobc -x -Wall prog.cbl– mit Warnungen kompilieren- Typische Dateiendungen:
.cbl,.cob
Struktur: Die vier Divisionen
Jedes COBOL-Programm besteht aus vier Pflicht-Teilen:
IDENTIFICATION DIVISION.
PROGRAM-ID. hallo.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NAME PIC X(20).
PROCEDURE DIVISION.
MAIN.
DISPLAY "Wie heisst du?".
ACCEPT NAME.
DISPLAY "Hallo, " NAME "!".
STOP RUN.
- IDENTIFICATION DIVISION: Name und Metadaten (
PROGRAM-ID) - ENVIRONMENT DIVISION: Dateien und Umgebung (optional in modernem COBOL)
- DATA DIVISION: Datendefinitionen,
WORKING-STORAGE SECTIONfür Variablen - PROCEDURE DIVISION: die ausführbare Logik
Daten: PIC-Klauseln
01 Name PIC X(20).– alphanumerisch (Text), 20 Zeichen01 Alter PIC 9(3).– Zahl mit 3 Stellen01 Betrag PIC 9(6)V99.– 6 Stellen vor, 2 Nachkommastellen (implizites Dezimalkomma)01 Wahr PIC 9 VALUE 0.– Schalter (0/1)
Wichtige Befehle
MOVE wert TO ziel– Wert zuweisen (auchMOVE a TO b)DISPLAY ...– Ausgabe,ACCEPT var– EingabeADD a TO b,SUBTRACT a FROM b,MULTIPLY a BY b,DIVIDE a INTO b– ArithmetikCOMPUTE erg = a * (b + c)– formelbasierte BerechnungIF bedingung THEN ... ELSE ... END-IF.EVALUATE var WHEN 1 ... WHEN OTHER ... END-EVALUATE.– MehrfachverzweigungPERFORM para.– Absatz ausführen,PERFORM UNTIL bedingung ... END-PERFORM– SchleifeGO TO para.– Sprung (verpönt, aber in Legacy-Code allgegenwärtig)STOP RUN.– Programm beenden
Beispiel: Schleife und Bedingung
PROCEDURE DIVISION.
MAIN.
MOVE 1 TO I.
PERFORM UNTIL I > 5
IF FUNCTION MOD(I, 2) = 0
DISPLAY I " ist gerade"
ELSE
DISPLAY I " ist ungerade"
END-IF
ADD 1 TO I
END-PERFORM.
STOP RUN.
COBOL bleibt relevant, weil Kernbankensysteme darauf laufen – oft kombiniert mit SQL für Datenbankzugriffe. Verwandte Begriffe: Datenbank, Compiler und Stack.
Pascal und Delphi – strukturierte Programmierung
Pascal (Niklaus Wirth, 1970) wurde als Lehr- und Systemsprache entwickelt und ist bekannt für klare Struktur, strenge Typisierung und lesbaren Code. Delphi (Embarcadero, früher Borland) erweitert Pascal zu Object Pascal mit Klassen, Properties und einer visuellen Entwicklungsumgebung (VCL/FMX). Der freie Compiler Free Pascal (fpc) mit der IDE Lazarus hält die Sprache am Leben.
Compiler
fpc --version– Version prüfenfpc prog.pas– kompilieren (erzeugtprog)fpc -O2 prog.pas– mit Optimierungfpc -gl prog.pas– Debug-Info (gdb) einbinden- Delphi/Windows:
dcc32 prog.dpr(Kommandozeilen-Compiler)
Basissyntax
program hallo;
uses crt;
var
name: string;
begin
write('Wie heisst du? ');
readln(name);
writeln('Hallo, ', name, '!');
end.
program– Programmkopf,uses– Units/Bibliotheken einbindenvar– Variablendeklaration:i: integer; x: real; s: string; ok: boolean; c: char;const– Konstanten:const pi = 3.14159;type– eigene Typen/Records:type Punkt = record x, y: integer; end;- Blöcke:
begin ... end(Ende des Programms mitend.– Punkt!)
Kontrollstrukturen
if x > 0 then
writeln('positiv')
else
writeln('negativ');
case n of
1: writeln('eins');
2: writeln('zwei');
else
writeln('anders');
end;
for i := 1 to 10 do
writeln(i);
while x < 100 do
x := x * 2;
repeat
readln(eingabe)
until eingabe = 'ende';
Prozeduren und Funktionen
function quadrat(x: integer): integer;
begin
quadrat := x * x; { Pascal weist das Ergebnis dem Funktionsnamen zu }
end;
procedure begruesse(name: string);
begin
writeln('Hallo, ', name);
end;
Object Pascal / Delphi
type
TPerson = class
private
FName: string;
public
constructor Create(aName: string);
procedure Vorstellen;
end;
constructor TPerson.Create(aName: string);
begin
FName := aName;
end;
procedure TPerson.Vorstellen;
begin
writeln('Ich bin ', FName);
end;
- Klassen:
classmitprivate/public-Bereichen - Properties:
property Name: string read FName write FName; - Vererbung:
TKind = class(TPerson) - Units: jede Unit in eigener
.pas-Datei mitinterface/implementation
Unit-Aufbau (Free Pascal / Lazarus)
unit meineunit;
interface
function verdoppeln(x: integer): integer;
implementation
function verdoppeln(x: integer): integer;
begin
verdoppeln := x * 2;
end;
end.
Verwandte Einträge: C und C++ für Systemprogrammierung, Python für moderne Alternativen, sowie die Glossar-Begriffe Compiler, Adresse (Speicher) und Stack.
GraphQL ist eine Abfragesprache für APIs, die 2015 von Facebook entwickelt wurde. Anders als bei REST ruft der Client genau die Felder ab, die er braucht — in einer einzigen Anfrage.
Grundstruktur einer Query
query {
user(id: 42) {
name
email
}
}
Eine Mutation verändert Daten, eine Subscription empfängt Live-Updates:
mutation { createUser(name: "Anna") { id } }
subscription { newMessage { text } }
Schema und Typen
type User {
id: ID!
name: String!
email: String
}
Ausrufezeichen (!) bedeutet: Feld ist Pflicht. ID, String, Int, Float, Boolean sind die eingebauten Skalartypen.
Variablen und Aliase
query GetUser($id: ID!) {
user(id: $id) { name }
}
Praxis-Tipps
- Ein Endpunkt (z.B.
/graphql), eine POST-Anfrage — kein Overfetching und kein Underfetching. - Zum Testen eignen sich Tools wie GraphiQL oder Altair.
- Fehler kommen als
errors-Array in der Antwort, nicht als HTTP-Statuscode.
Verwandte Grundlagen: SQL-Befehle und Python-Befehle.
Markdown ist eine leichtgewichtige Auszeichnungssprache, mit der man Text mit einfachen Zeichen formatieren kann — ideal für Dokumentation, README-Dateien, Foren und Wikis. Der Klartext bleibt lesbar, HTML-Ausgabe entsteht automatisch.
Überschriften und Text
# H1
## H2
### H3
**fett**, *kursiv*, ~~durchgestrichen~~
Listen und Links
- Punkt 1
- Punkt 2
1. Erster
2. Zweiter
[Linktext](https://example.org)
Code und Tabellen
`inline code`
```python
print("Hallo")
```
| Spalte A | Spalte B |
|----------|----------|
| Wert 1 | Wert 2 |
Praxis-Tipps
- Die meisten Plattformen (GitHub, GitLab, Joomla) unterstützen Markdown direkt oder per Erweiterung.
- Für Sonderzeichen HTML einbetten:
für geschütztes Leerzeichen. - Dateiendung:
.mdoder.markdown.
Verwandte Grundlagen: HTML & CSS und YAML, TOML, JSON.
grep ist der Standardbefehl unter Linux und macOS, um Textmuster (reguläre Ausdrücke) in Dateien und Ausgaben zu suchen. Der Name steht für global regular expression print.
Grundlagen
grep "fehler" logfile.txt # Zeilen mit 'fehler' anzeigen
grep -i "error" *.log # Groß/klein ignorieren
grep -r "TODO" src/ # rekursiv im Verzeichnis suchen
Wichtige Optionen
grep -v "debug" datei # invertieren: Zeilen OHNE Treffer
grep -n "warn" datei # Zeilennummern ausgeben
grep -c "success" datei # nur Anzahl zählen
grep -l "passwort" *.conf # nur Dateinamen ausgeben
grep -E "foo|bar" datei # erweiterte Regex (egrep)
Mit Pipes kombinieren
ps aux | grep ssh # Prozesse filtern
history | grep "git commit" # in der Historie suchen
tail -f app.log | grep "ERROR" # Logs live filtern
Praxis-Tipps
grep -ispart Zeit, wenn die Groß-/Kleinschreibung egal ist.- Für ganze Wörter:
grep -w wort, für echte reguläre Ausdrückegrep -E. - Alternativen je nach Kontext:
rg(ripgrep, schneller) undag(The Silver Searcher).
Verwandte Grundlagen: Bash-Befehle und Regex.