RosettaCodeData/Task/Parametric-polymorphism/COBOL/parametric-polymorphism.cobol

35 lines
1000 B
COBOL

>>SOURCE FORMAT IS FREE
IDENTIFICATION DIVISION.
CLASS-ID. Tree INHERITS FROM Base USING X.
DATE-WRITTEN. 20240702.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
OBJECT-COMPUTER.
MEMORY SIZE IS 1073741824 CHARACTERS.
REPOSITORY.
CLASS Base.
CLASS X.
IDENTIFICATION DIVISION.
OBJECT.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 ws-value USAGE IS OBJECT REFERENCE X ONLY.
77 ws-left USAGE IS OBJECT REFERENCE Tree ONLY.
77 ws-right USAGE IS OBJECT REFERENCE Tree ONLY.
PROCEDURE DIVISION.
IDENTIFICATION DIVISION.
METHOD-ID. replace_all.
DATA DIVISION.
LINKAGE SECTION.
77 new_value USAGE IS OBJECT REFERENCE X ONLY.
PROCEDURE DIVISION USING BY REFERENCE new_value.
MOVE new_value TO ws-value.
IF ws-left IS NOT EQUAL TO NULL THEN
INVOKE ws-left "replace_all" USING BY REFERENCE new_value.
IF ws-right IS NOT EQUAL TO NULL THEN
INVOKE ws-right "replace_all" USING BY REFERENCE new_value.
GOBACK.
END METHOD replace_all.
END OBJECT.
END CLASS Tree.