Skip to content

Instantly share code, notes, and snippets.

@cpfiffer
Created June 12, 2025 21:24
Show Gist options
  • Save cpfiffer/2b48e7a60e3425aacfc5c02d05c6d856 to your computer and use it in GitHub Desktop.
Save cpfiffer/2b48e7a60e3425aacfc5c02d05c6d856 to your computer and use it in GitHub Desktop.
it was all shit after cobol
IDENTIFICATION DIVISION.
PROGRAM-ID. MICROSERVICE-ARCHITECTURE.
AUTHOR. SOME-BOOMER-WHO-INVENTED-THIS-STUFF.
DATE-WRITTEN. 1959.
DATE-COMPILED. BEFORE-YOUR-FRAMEWORK-EXISTED.
* REVOLUTIONARY NEW CONCEPT: SEPARATING BUSINESS LOGIC!
* (WE'VE ONLY BEEN DOING THIS FOR 65 YEARS)
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-MAINFRAME.
OBJECT-COMPUTER. STILL-RUNNING-YOUR-BANK.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CUSTOMER-RECORD.
05 CUSTOMER-ID PIC 9(10).
05 CUSTOMER-NAME PIC X(30).
05 ACCOUNT-BALANCE PIC 9(10)V99.
05 TRANSACTION-AMOUNT PIC 9(8)V99.
05 NEW-BALANCE PIC 9(10)V99.
01 RESPONSE-CODES.
05 SUCCESS-CODE PIC X(3) VALUE "200".
05 ERROR-CODE PIC X(3) VALUE "500".
05 CURRENT-RESPONSE PIC X(3).
* LOOK MA, NO CONTAINERS! NO ORCHESTRATION!
* JUST RELIABLE CODE THAT PROCESSES BILLIONS OF TRANSACTIONS
PROCEDURE DIVISION.
MAIN-PROCESSING.
DISPLAY "STARTING MICROSERVICE..."
DISPLAY "(JUST KIDDING, THIS IS A MONOLITH FROM 1959)"
MOVE 1234567890 TO CUSTOMER-ID
MOVE "TRADITIONAL PROGRAMMER" TO CUSTOMER-NAME
MOVE 1000.00 TO ACCOUNT-BALANCE
MOVE 50.00 TO TRANSACTION-AMOUNT
PERFORM VALIDATE-TRANSACTION
IF CURRENT-RESPONSE = SUCCESS-CODE
PERFORM PROCESS-PAYMENT
PERFORM SEND-RESPONSE
ELSE
PERFORM HANDLE-ERROR
END-IF
STOP RUN.
* DOMAIN-DRIVEN DESIGN? WE CALL IT "BUSINESS LOGIC"
VALIDATE-TRANSACTION.
IF ACCOUNT-BALANCE >= TRANSACTION-AMOUNT
MOVE SUCCESS-CODE TO CURRENT-RESPONSE
DISPLAY "TRANSACTION VALIDATED (NO NPM PACKAGES NEEDED)"
ELSE
MOVE ERROR-CODE TO CURRENT-RESPONSE
DISPLAY "INSUFFICIENT FUNDS (SHOCKING CONCEPT, I KNOW)"
END-IF.
* EVENT-DRIVEN ARCHITECTURE? THAT'S JUST BATCH PROCESSING
PROCESS-PAYMENT.
COMPUTE NEW-BALANCE = ACCOUNT-BALANCE - TRANSACTION-AMOUNT
MOVE NEW-BALANCE TO ACCOUNT-BALANCE
DISPLAY "PAYMENT PROCESSED: " NEW-BALANCE
DISPLAY "(RUNTIME: 0.001 SECONDS, NO GARBAGE COLLECTION)".
* REST API? HOW ABOUT SOME REST FOR THE WEARY
SEND-RESPONSE.
DISPLAY "HTTP " SUCCESS-CODE " OK"
DISPLAY "CONTENT-TYPE: TEXT/PLAIN"
DISPLAY "BODY: TRANSACTION SUCCESSFUL"
DISPLAY "(SERIALIZED WITHOUT 47 JAVASCRIPT LIBRARIES)".
* ERROR HANDLING THAT DOESN'T CRASH THE ENTIRE SYSTEM
HANDLE-ERROR.
DISPLAY "HTTP " ERROR-CODE " ERROR"
DISPLAY "MESSAGE: TRANSACTION FAILED"
DISPLAY "(NO STACK OVERFLOW REQUIRED TO DEBUG THIS)".
* END OF PROGRAM
* UPTIME: 50+ YEARS AND COUNTING
* DEPENDENCIES: ZERO
* TECHNICAL DEBT: WHAT'S THAT?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment