Stack: Difference between revisions
Content added Content deleted
(Removed unused fields) |
(Separated stack utilities to stack-utilities) |
||
Line 581:
Based loosely on the C stack implementation in Quiwa's Data Structures.
This example (ab)uses the COPY procedure to ensure that there is a consistently-defined stack type, node type,
stack.cbl
<lang COBOL> 01 stack.
05 head USAGE IS POINTER VALUE NULL.
</lang>
node.cbl
<lang COBOL> 01 node BASED.
05 info PICTURE X(10) VALUE SPACES.
05 link USAGE IS POINTER VALUE NULL.
</lang>
p.cbl
<lang COBOL> 01 p PICTURE 9.
88 nil VALUE ZERO.
88 t VALUE 1.
</lang>
stack-
<lang COBOL>
IDENTIFICATION DIVISION.▼
PROGRAM-ID. stack-test.▼
DATA DIVISION.▼
LOCAL-STORAGE SECTION.▼
COPY stack.▼
PROCEDURE DIVISION.▼
CALL "push" USING▼
BY REFERENCE stack▼
BY CONTENT "daleth "▼
END-CALL▼
CALL "push" USING▼
BY REFERENCE stack▼
BY CONTENT "gimel "▼
END-CALL▼
CALL "push" USING▼
BY REFERENCE stack▼
BY CONTENT "beth "▼
END-CALL▼
CALL "push" USING▼
BY REFERENCE stack▼
BY CONTENT "aleph "▼
END-CALL▼
CALL "traverse-stack" USING▼
BY REFERENCE stack▼
END-CALL▼
STOP RUN.▼
END PROGRAM stack-test.▼
PROGRAM-ID. push.
DATA DIVISION.
Line 652 ⟶ 625:
GOBACK.
END PROGRAM push.
IDENTIFICATION DIVISION.
PROGRAM-ID. pop.
Line 677 ⟶ 650:
GOBACK.
END PROGRAM pop.
IDENTIFICATION DIVISION.
PROGRAM-ID. empty.
Line 693 ⟶ 666:
GOBACK.
END PROGRAM empty.
IDENTIFICATION DIVISION.
PROGRAM-ID. head.
Line 716 ⟶ 689:
GOBACK.
END PROGRAM head.
IDENTIFICATION DIVISION.
PROGRAM-ID. peek.
Line 731 ⟶ 704:
GOBACK.
END PROGRAM peek.
IDENTIFICATION DIVISION.
PROGRAM-ID. pointerp.
Line 746 ⟶ 719:
GOBACK.
END PROGRAM pointerp.
IDENTIFICATION DIVISION.
PROGRAM-ID. stack-overflow-error.
Line 753 ⟶ 726:
STOP RUN.
END PROGRAM stack-overflow-error.
IDENTIFICATION DIVISION.
PROGRAM-ID. stack-underflow-error.
Line 760 ⟶ 733:
STOP RUN.
END PROGRAM stack-underflow-error.
</lang>
stack-test.cbl
<lang COBOL> *>* Stack
▲ IDENTIFICATION DIVISION.
▲ PROGRAM-ID. stack-test.
▲ DATA DIVISION.
▲ LOCAL-STORAGE SECTION.
▲ COPY stack.
▲ PROCEDURE DIVISION.
▲ CALL "push" USING
▲ BY REFERENCE stack
▲ BY CONTENT "daleth "
▲ END-CALL
▲ CALL "push" USING
▲ BY REFERENCE stack
▲ BY CONTENT "gimel "
▲ END-CALL
▲ CALL "push" USING
▲ BY REFERENCE stack
▲ BY CONTENT "beth "
▲ END-CALL
▲ CALL "push" USING
▲ BY REFERENCE stack
▲ BY CONTENT "aleph "
▲ END-CALL
▲ CALL "traverse-stack" USING
▲ BY REFERENCE stack
▲ END-CALL
▲ STOP RUN.
▲ END PROGRAM stack-test.
COPY stack-utilities.
IDENTIFICATION DIVISION.
PROGRAM-ID. display-pointer.
Line 780 ⟶ 787:
GOBACK.
END PROGRAM display-pointer.
IDENTIFICATION DIVISION.
PROGRAM-ID. traverse-stack.
Line 815 ⟶ 822:
END-IF
GOBACK.
END PROGRAM traverse-stack.
</lang>
Output:
|