Stack: Difference between revisions
Content deleted Content added
Removed unnecessary make-stack |
Yet another major refactoring |
||
Line 566: | Line 566: | ||
stack.cbl |
stack.cbl |
||
<lang COBOL> 01 stack |
<lang COBOL> 01 stack. |
||
05 head USAGE IS POINTER VALUE NULL.</lang> |
05 head USAGE IS POINTER VALUE NULL.</lang> |
||
Line 590: | Line 590: | ||
01 node-info PICTURE X(10) VALUE SPACES. |
01 node-info PICTURE X(10) VALUE SPACES. |
||
PROCEDURE DIVISION. |
PROCEDURE DIVISION. |
||
ALLOCATE stack |
|||
CALL "push" USING |
CALL "push" USING |
||
BY REFERENCE |
BY REFERENCE stack |
||
BY CONTENT "daleth " |
BY CONTENT "daleth " |
||
END-CALL |
END-CALL |
||
CALL "push" USING |
CALL "push" USING |
||
BY REFERENCE |
BY REFERENCE stack |
||
BY CONTENT "gimel " |
BY CONTENT "gimel " |
||
END-CALL |
END-CALL |
||
CALL "push" USING |
CALL "push" USING |
||
BY REFERENCE |
BY REFERENCE stack |
||
BY CONTENT "beth " |
BY CONTENT "beth " |
||
END-CALL |
END-CALL |
||
CALL "push" USING |
CALL "push" USING |
||
BY REFERENCE |
BY REFERENCE stack |
||
BY CONTENT "aleph " |
BY CONTENT "aleph " |
||
END-CALL |
END-CALL |
||
CALL "traverse-stack" USING |
CALL "traverse-stack" USING |
||
BY REFERENCE |
BY REFERENCE stack |
||
END-CALL |
END-CALL |
||
STOP RUN. |
STOP RUN. |
||
Line 618: | Line 617: | ||
LOCAL-STORAGE SECTION. |
LOCAL-STORAGE SECTION. |
||
COPY p. |
COPY p. |
||
COPY stack. |
|||
COPY node. |
COPY node. |
||
LINKAGE SECTION. |
LINKAGE SECTION. |
||
COPY stack. |
|||
01 node-info PICTURE X(10). |
01 node-info PICTURE X(10). |
||
PROCEDURE DIVISION USING stack |
PROCEDURE DIVISION USING stack node-info. |
||
SET ADDRESS OF stack TO stack-pointer |
|||
CALL "make-node" USING |
CALL "make-node" USING |
||
BY CONTENT node-info |
BY CONTENT node-info |
||
Line 647: | Line 644: | ||
LOCAL-STORAGE SECTION. |
LOCAL-STORAGE SECTION. |
||
COPY p. |
COPY p. |
||
COPY stack. |
|||
COPY node. |
COPY node. |
||
LINKAGE SECTION. |
LINKAGE SECTION. |
||
COPY stack. |
|||
01 node-info PICTURE X(10). |
01 node-info PICTURE X(10). |
||
PROCEDURE DIVISION USING stack |
PROCEDURE DIVISION USING stack node-info. |
||
SET ADDRESS OF stack TO stack-pointer |
|||
CALL "empty" USING |
CALL "empty" USING |
||
BY REFERENCE |
BY REFERENCE stack |
||
BY REFERENCE p |
BY REFERENCE p |
||
END-CALL |
END-CALL |
||
Line 673: | Line 668: | ||
DATA DIVISION. |
DATA DIVISION. |
||
LOCAL-STORAGE SECTION. |
LOCAL-STORAGE SECTION. |
||
⚫ | |||
COPY stack. |
COPY stack. |
||
⚫ | |||
01 stack-pointer USAGE IS POINTER. |
|||
COPY p. |
COPY p. |
||
PROCEDURE DIVISION USING stack |
PROCEDURE DIVISION USING stack p. |
||
SET ADDRESS OF stack TO stack-pointer |
|||
CALL "pointerp" USING |
CALL "pointerp" USING |
||
BY CONTENT head OF stack |
BY CONTENT head OF stack |
||
Line 692: | Line 685: | ||
LOCAL-STORAGE SECTION. |
LOCAL-STORAGE SECTION. |
||
COPY p. |
COPY p. |
||
COPY stack. |
|||
COPY node. |
COPY node. |
||
LINKAGE SECTION. |
LINKAGE SECTION. |
||
COPY stack. |
|||
01 node-info PICTURE X(10). |
01 node-info PICTURE X(10). |
||
PROCEDURE DIVISION USING stack |
PROCEDURE DIVISION USING stack node-info. |
||
SET ADDRESS OF stack TO stack-pointer |
|||
CALL "empty" USING |
CALL "empty" USING |
||
BY |
BY REFERENCE stack |
||
BY REFERENCE p |
BY REFERENCE p |
||
END-CALL |
END-CALL |
||
Line 717: | Line 708: | ||
LOCAL-STORAGE SECTION. |
LOCAL-STORAGE SECTION. |
||
LINKAGE SECTION. |
LINKAGE SECTION. |
||
COPY stack. |
|||
01 node-info PICTURE X(10). |
01 node-info PICTURE X(10). |
||
PROCEDURE DIVISION USING stack |
PROCEDURE DIVISION USING stack node-info. |
||
CALL "head" USING |
CALL "head" USING |
||
BY CONTENT stack |
BY CONTENT stack |
||
BY REFERENCE node-info |
BY REFERENCE node-info |
||
END-CALL |
END-CALL |
||
Line 805: | Line 796: | ||
LOCAL-STORAGE SECTION. |
LOCAL-STORAGE SECTION. |
||
COPY p. |
COPY p. |
||
COPY stack. |
|||
01 node-info PICTURE X(10) VALUE SPACES. |
01 node-info PICTURE X(10) VALUE SPACES. |
||
LINKAGE SECTION. |
LINKAGE SECTION. |
||
COPY stack. |
|||
PROCEDURE DIVISION USING stack |
PROCEDURE DIVISION USING stack. |
||
SET ADDRESS OF stack TO stack-pointer |
|||
CALL "empty" USING |
CALL "empty" USING |
||
BY REFERENCE |
BY REFERENCE stack |
||
BY REFERENCE p |
BY REFERENCE p |
||
END-CALL |
END-CALL |
||
IF nil |
IF nil |
||
CALL "head" USING |
CALL "head" USING |
||
BY |
BY CONTENT stack |
||
BY REFERENCE node-info |
BY REFERENCE node-info |
||
END-CALL |
END-CALL |
||
DISPLAY node-info END-DISPLAY |
DISPLAY node-info END-DISPLAY |
||
CALL "peek" USING |
CALL "peek" USING |
||
BY |
BY CONTENT stack |
||
BY REFERENCE node-info |
BY REFERENCE node-info |
||
END-CALL |
END-CALL |
||
DISPLAY node-info END-DISPLAY |
DISPLAY node-info END-DISPLAY |
||
CALL "pop" USING |
CALL "pop" USING |
||
BY REFERENCE |
BY REFERENCE stack |
||
BY REFERENCE node-info |
BY REFERENCE node-info |
||
END-CALL |
END-CALL |
||
DISPLAY node-info END-DISPLAY |
DISPLAY node-info END-DISPLAY |
||
CALL "traverse-stack" USING |
CALL "traverse-stack" USING |
||
BY REFERENCE |
BY REFERENCE stack |
||
END-CALL |
END-CALL |
||
END-IF |
END-IF |