proc _main, gcd; proc putword, putword0; word x, y, z; defproc _main : { set x := 15639; set y := 4823; call gcd; call putword; putchar 10; } defproc gcd : word a, b, tmp; { if (x > y) { set a := x; set b := y; } if (x <= y) { set a := y; set b := x; } while (a % b != 0) { set tmp := b; set b := a % b; set a := tmp; } set z := b; } defproc putword : word n; { set n := z; if (z < 0) { putchar 45; set z := -z; } call putword0; set z := n; } defproc putword0 : word d; { set d := z % 10; if (10 <= z) { set z := z / 10; call putword0; } putchar 48 + d; }