cloudflare/cobweb

COBOL to WebAssembly compiler

400

stars

11

commits

COBOL

primary language

Apr 23, 2026

updated

Browse cluster: Build systems, packaging, and container infrastructure

README

CobWeb

See announcement Cloudflare Workers Now Support COBOL.

Uses GnuCOBOL 2.2.

Usage with Docker

To avoid setting up the compiler environment locally, you can use a pre-built Docker image: xtuc/cobweb:

docker run \
  -e EM_OUT \
  -e EM_ARGS \
  -v /tmp/cobol-worker:/root/.emscripten_cache/ \
  -v $PWD:/worker \
  -v $PWD/build:/build \
  xtuc/cobweb \
  /worker/src/worker.cob

Usage

Compile dependecies:

make all

Compile COBOL to WebAssembly:

./cobweb.sh source.cob

program-id

The program-id should be worker otherwise the program will fail to compile.

Worker API

Set the HTTP status code:

CALL "set_http_status" USING "400".

Set the response body to a string:

CALL "set_http_body" USING "something".

Append a string to the response body:

CALL "append_http_body" USING "something".

Get HTTP form values:

WORKING-STORAGE SECTION.
    01 THE-VALUE PIC S9(9) BINARY.
PROCEDURE DIVISION.
    CALL "get_http_form" USING "key" RETURNING THE-VALUE.

Example

See the example.

Contributors

xtuc

9 commits

cloudflare/cobweb

COBOL to WebAssembly compiler

400

stars

11

commits

COBOL

primary language

Apr 23, 2026

updated

Browse cluster: Build systems, packaging, and container infrastructure

README

CobWeb

See announcement Cloudflare Workers Now Support COBOL.

Uses GnuCOBOL 2.2.

Usage with Docker

To avoid setting up the compiler environment locally, you can use a pre-built Docker image: xtuc/cobweb:

docker run \
  -e EM_OUT \
  -e EM_ARGS \
  -v /tmp/cobol-worker:/root/.emscripten_cache/ \
  -v $PWD:/worker \
  -v $PWD/build:/build \
  xtuc/cobweb \
  /worker/src/worker.cob

Usage

Compile dependecies:

make all

Compile COBOL to WebAssembly:

./cobweb.sh source.cob

program-id

The program-id should be worker otherwise the program will fail to compile.

Worker API

Set the HTTP status code:

CALL "set_http_status" USING "400".

Set the response body to a string:

CALL "set_http_body" USING "something".

Append a string to the response body:

CALL "append_http_body" USING "something".

Get HTTP form values:

WORKING-STORAGE SECTION.
    01 THE-VALUE PIC S9(9) BINARY.
PROCEDURE DIVISION.
    CALL "get_http_form" USING "key" RETURNING THE-VALUE.

Example

See the example.

Contributors

xtuc

9 commits

Languages

COBOL

40.7%

C

17.5%

Makefile

14.3%

Dockerfile

10.2%

Shell

8.8%

HTML

8.5%