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