Recently someone on LowEndTalk mentioned asmbb, which is forum software written in assembler.
Full stop.
Written in assembler. Forum software.
Go look – it’s actually pretty nice.
I joked that I was inspired to write forum software in COBOL. Was I serious? Well…not exactly, but it would be fun.
COBOL gets a bad rap – and deservedly so! It’s overly verbose to the point of being a parody of itself, and is very rigid in its views of programming. It’s designed to execute top down (“gravity driven design” is the term) and while in theory you can program anything in it, the real strength is in high speed processing of records. If you’ve got a bunch of records on tape 1 and want to transform them and put them on tape 2, COBOL is your go-to.
I say high speed because for years, IBM designed their mainframes with COBOL in mind and there is a tight symbiotic relationship between big iron and COBOL. On average, each sentence in COBOL (despite its sentence-long verbosity) generates only 4 assembler instructions, and since variables are pre-defined it’s easy to optimize the hell out of the code. COBOL was designed when memory was written in kilobytes and its “records batch processing” mindset makes it lean and mean.
And I say record-oriented because this is COBOL’s niche. As the announcement last year for the new gcobol project (a parallel to GnuCOBOL) stated:
Cobol has a niche no other language occupies: a compiled language for record-oriented I/O.
That might sound strangely specialized, but it’s not. Record-oriented I/O describes, I would argue, nearly *all* applications. Yet, since the advent of C, nearly all applications have relegated I/O to an external library, and adopted the Unix byte-stream definition of a “file”.
If you’ve written a CGI web application, you know what I’m talking about. Cobol eliminates a lot of gobbledygook by reducing free-form run-time variables to compile-time constants.
I’m not about to recommend anyone learn COBOL in 2023. While there are still hundreds of millions of lines of COBOL code in use, no one is writing new systems in COBOL these days.
But if into vintage systems…
To that end, I googled for a tutorial on how to setup GNU Cobol on Debian 11 and couldn’t find one. It was in sid, but was dropped, and while there are some third-party .debs out there, it’s pretty straightforward to build from scratch.
First, install some basics and dependencies:
apt-get -y install build-essential libgmp-dev libdb-dev libncurses-dev \ libcjson-dev libxml2-dev
Next, download the Gnu COBOL package and untar it. The project’s page is on SourceForge, but the FTP site is more direct. Here I’m using 3.1.2 but check for the latest:
cd /usr/local/src wget https://ftp.gnu.org/gnu/gnucobol/gnucobol-3.1.2.tar.gz cd gnucobol-3.1 ./configure make make install
This gives you everything you might normally need:
configure: Dynamic loading: System configure: Use gettext for international messages: yes configure: Use fcntl for file locking: yes configure: Use math multiple precision library: gmp configure: Use curses library for screen I/O: ncursesw configure: Use Berkeley DB for INDEXED I/O: yes configure: Used for XML I/O: libxml2 configure: Used for JSON I/O: cjson
Read the DEPENDENCIES file if you want some more exotic options or have specialized needs.
Here’s some code to try…and yes, those leading spaces are significant. This program could be shortened but shortening code is not the COBOL mindset!
IDENTIFICATION DIVISION. PROGRAM-ID. LOW-END-SAMPLE. AUTHOR. raindog308. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. OBJECT-COMPUTER. INPUT-OUTPUT SECTION. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. PROCEDURE DIVISION. 0001-HELLO. DISPLAY "LowEnd4Life!". STOP RUN. END PROGRAM LOW-END-SAMPLE.
Make sure you have /usr/local/lib in your LD_LIBRARY_PATH, since that’s where you installed the COBOL libraries (.so files) by default. You can stick this in your .bash_profile:
export LD_LIBRARY_PATH=${LOAD_LIBRARY_PATH}:/usr/local/lib
And the compile and go:
$ cobc -x lowend.cbl $ ./lowend LowEnd4Life! $
Related Posts:
- Is Block (formerly Square) Committing Fraud on a Massive Scale? - March 23, 2023
- OVHCloud Flash Offer: 12 Days Left! Cheap Dedi Systems as Low as $24.33/Month in EU or North America! - March 23, 2023
- Special Offers on Cheap Dedicated Servers in Warsaw and Six US Locations from ServerHub! - March 22, 2023
Leave a Reply