Jump to content

Stack: Difference between revisions

109 bytes added ,  12 years ago
Separated stack utilities to stack-utilities
(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, and p(redicate) type, and set of stack-utilities.
 
stack.cbl
<lang COBOL> 01 stack.
05 head USAGE IS POINTER VALUE NULL.</lang>
</lang>
 
node.cbl
<lang COBOL> 01 node BASED.
05 info PICTURE X(10) VALUE SPACES.
05 link USAGE IS POINTER VALUE NULL.</lang>
</lang>
 
p.cbl
<lang COBOL> 01 p PICTURE 9.
88 nil VALUE ZERO.
88 t VALUE 1.</lang>
</lang>
 
stack-testutilities.cbl
<lang COBOL> *>*IDENTIFICATION StackDIVISION.
 
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.
 
IDENTIFICATION DIVISION.
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>
</lang>
 
Output:
Cookies help us deliver our services. By using our services, you agree to our use of cookies.