summaryrefslogtreecommitdiff
path: root/Ganlib/data/testgan1_proc/fact.c2m
diff options
context:
space:
mode:
authorstainer_t <thomas.stainer@oecd-nea.org>2025-09-08 13:48:49 +0200
committerstainer_t <thomas.stainer@oecd-nea.org>2025-09-08 13:48:49 +0200
commit7dfcc480ba1e19bd3232349fc733caef94034292 (patch)
tree03ee104eb8846d5cc1a981d267687a729185d3f3 /Ganlib/data/testgan1_proc/fact.c2m
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Ganlib/data/testgan1_proc/fact.c2m')
-rw-r--r--Ganlib/data/testgan1_proc/fact.c2m19
1 files changed, 19 insertions, 0 deletions
diff --git a/Ganlib/data/testgan1_proc/fact.c2m b/Ganlib/data/testgan1_proc/fact.c2m
new file mode 100644
index 0000000..45a6dfd
--- /dev/null
+++ b/Ganlib/data/testgan1_proc/fact.c2m
@@ -0,0 +1,19 @@
+ !
+ ! Example of a recursive procedure.
+ !
+ ! input to "fact": *n*
+ ! output from "fact": *n_fact*
+ !
+ INTEGER n n_fact prev_fact ;
+ :: >>n<< ;
+ IF n 1 = THEN
+ EVALUATE n_fact := 1 ;
+ ELSE
+ EVALUATE n := n 1 - ;
+ ! Here, "fact" calls itself
+ PROCEDURE fact ;
+ fact :: <<n>> >>prev_fact<< ;
+ EVALUATE n_fact := n 1 + prev_fact * ;
+ ENDIF ;
+ :: <<n_fact>> ;
+ QUIT " Recursive procedure *fact* XREF " .