Thread View: alt.folklore.computers
1 messages
1 total messages
Started by p... Per Lindberg
Fri, 09 Mar 1990 23:17
Another mad programmer strikes...
Author: p... Per Lindberg
Date: Fri, 09 Mar 1990 23:17
Date: Fri, 09 Mar 1990 23:17
84 lines
3663 bytes
3663 bytes
(No, *I* didn't write this!!) 001001 IDENTIFICATION DIVISION. 001002 PROGRAM-ID. ACK. 001003 AUTHOR. A.NONYM. 002001 ENVIRONMENT DIVISION. 003001 DATA DIVISION. 003010 WORKING-STORAGE SECTION. 003012 01 N PICTURE IS 9(12) USAGE IS COMPUTATIONAL. 003013 01 M PICTURE IS 9(12) USAGE IS COMPUTATIONAL. 003014 01 R PICTURE IS 9(12) USAGE IS COMPUTATIONAL. 003101 01 STACK PICTURE IS 9(12) USAGE IS COMPUTATIONAL 003102 OCCURS 32766 TIMES. 003119 01 ELEMENT PICTURE IS 9(12) USAGE IS COMPUTATIONAL. 003200 01 STACK-POINTER PICTURE IS 9999 USAGE IS COMPUTATIONAL. 003900 77 AREA-SIZE PICTURE IS 9(5) VALUE IS 32766. 003999 PROCEDURE DIVISION. 004000 BEGIN. 004002 DISPLAY 'PROGRAM ACKERMANN'. 004003 DISPLAY 'ENTER M,N PLEASE'. 004004 ACCEPT M N. 004005 MOVE ZEROES TO STACK-POINTER. 004006 MOVE 1 TO ELEMENT PERFORM PUSH GO TO ACKERMANN. 004020 HELL. 004021 DISPLAY 'EXECUTION TERMINATED.' 004022 STOP RUN. 004100 PUSH. 004101 ADD 1 TO STACK-POINTER 004102 IF STACK-POINTER IS GREATER THAN AREA-SIZE 004103 DISPLAY '** STACK OVERFLOW ***' 004104 GO TO HELL. 004110 MOVE ELEMENT TO STACK ( STACK-POINTER ). 004200 POP. 004201 IF STACK-POINTER IS LESS THAN 1 004202 DISPLAY '** STACK UNDERFLOW **' 004203 GO TO HELL. 004204 MOVE STACK ( STACK-POINTER ) TO ELEMENT. 004205 SUBTRACT 1 FROM STACK-POINTER. 004300 ACKERMANN. 004301 IF M IS EQUAL TO ZERO ADD N 1 GIVING R 004302 ELSE MOVE 2 TO ELEMENT PERFORM PUSH GO TO ACKERMANN-2. 004303 ACKER-RETUR-2. 004304 PERFORM POP GO TO JUMP-TABLE. 004309 ACKERMANN-2. 004310 IF N IS NOT EQUAL TO ZERO MOVE 4 TO ELEMENT PERFORM PUSH 004311 GO TO ACKERMANN-3. 004312 MOVE M TO ELEMENT PERFORM PUSH MOVE N TO ELEMENT PERFORM PUSH 004313 SUBTRACT 1 FROM M MOVE 1 TO N 004314 MOVE 3 TO ELEMENT PERFORM PUSH GO TO ACKERMANN. 004315 ACKER-RETUR-3. 004316 PERFORM POP MOVE ELEMENT TO N 004317 PERFORM POP MOVE ELEMENT TO M 004320 ACKER-RETUR-4. 004331 PERFORM POP GO TO JUMP-TABLE. 004350 ACKERMANN-3. 004351 MOVE N TO ELEMENT PERFORM PUSH 004352 SUBTRACT 1 FROM N 004353 MOVE 5 TO ELEMENT PERFORM PUSH GO TO ACKERMANN. 004354 ACKER-RETUR-5. 004354 MOVE R TO N 004355 MOVE M TO ELEMENT PERFORM PUSH 004356 SUBTRACT 1 FROM M 004357 MOVE 6 TO ELEMENT PERFORM PUSH GO TO ACKERMANN. 004360 ACKER-RETUR-6. 004361 PERFORM POP MOVE ELEMENT TO M 004362 PERFORM POP MOVE ELEMENT TO N 004364 PERFORM POP GO TO JUMP-TABLE. 004400 JUMP-TABLE. 004401 IF ELEMENT=1 GO TO HUVUD-RETUR. 004402 IF ELEMENT=2 GO TO ACKER-RETUR-2. 004403 IF ELEMENT=3 GO TO ACKER-RETUR-3. 004404 IF ELEMENT=4 GO TO ACKER-RETUR-4. 004405 IF ELEMENT=5 GO TO ACKER-RETUR-5. 004406 IF ELEMENT=6 GO TO ACKER-RETUR-6. 004498 DISPLAY '** INVALID RETURN ADDRESS ** ADDRESS=' ELEMENT 004499 GO TO HELL. 004900 HUVUD-RETUR. 004901 DISPLAY 'RESULT = ' R. 004999 STOP RUN. -- Per Lindberg (The Mad Programmer) ! __!__ Front Capital Systems ! _____(_)_____ Ceci n'est pas une Piper Linneg 5, 11447 Stockholm, Sweden ! ! ! !
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads