*> Calling program: program-id. startup. working-storage section. 01 start-point usage procedure-pointer. procedure division. set start-point to entry "menu" call "controller" using start-point display "End of run" stop run. entry "illegal" *> Recursive calls invalid without local-storage section. stop run. end program startup.
*> Called program: program-id. controller. working-storage section. 01 next-option pic x. linkage section. 01 current-proc usage procedure-pointer. procedure division using current-proc. perform until current-proc = NULL call current-proc returning next-option *> Note program-id must be called before any entry point evaluate next-option when "a" set current-proc to entry "sub1" when other set current-proc to NULL end-evaluate end-perform. exit program. end program controller. program-id. menu. working-storage section. 01 exit-option pic x. procedure division. display "In menu" move "a" to exit-option exit program returning exit-option. *> Note that the maximum size of returned value is 4 bytes entry "sub1" display "In sub1" exit program returning 1.