Stack: Difference between revisions

Content deleted Content added
Added attribution
Cleaned up push and pop by removing the need for make-node
Line 625:
01 node-info PICTURE X(10).
PROCEDURE DIVISION USING stack node-info.
CALLALLOCATE "make-node" USING
BY CONTENT node-info
BY REFERENCE ADDRESS OF node
END-CALL
CALL "pointerp" USING
BY REFERENCE ADDRESS OF node
Line 636 ⟶ 633:
CALL "stack-overflow-error" END-CALL
ELSE
BY CONTENTMOVE node-info TO info OF node
SET link OF node TO head OF stack
SET head OF stack TO ADDRESS OF node
Line 660 ⟶ 658:
ELSE
SET ADDRESS OF node TO head OF stack
SET head OF stack TO link OF node
MOVE info OF node TO node-info
SET head OF stack TO link OF node
FREE ADDRESS OF node
END-IF
BY REFERENCEFREE ADDRESS OF node
GOBACK.
END PROGRAM pop.
Line 720 ⟶ 718:
GOBACK.
END PROGRAM peek.
 
IDENTIFICATION DIVISION.
PROGRAM-ID. make-node.
DATA DIVISION.
LOCAL-STORAGE SECTION.
COPY p.
COPY node.
LINKAGE SECTION.
01 node-info PICTURE X(10).
01 node-pointer USAGE IS POINTER.
PROCEDURE DIVISION USING node-info node-pointer.
ALLOCATE node
CALL "pointerp" USING
BY REFERENCE ADDRESS OF node
BY REFERENCE p
END-CALL
IF nil
CALL "stack-overflow-error" END-CALL
ELSE
MOVE node-info TO info OF node
SET node-pointer TO ADDRESS OF node
END-IF
GOBACK.
END PROGRAM make-node.
 
IDENTIFICATION DIVISION.