This hard-to-understand PL/I program reminds us that there are no reserved words in PL/I. It was sent to Paul Green by a former St. John's University user. It was written by Paul Karagianis, who writes:
I forget the exact date but I wrote it either shortly before or after I moved to NYC in 1981, likely early 1982. The motivation was provided by Dave Warme, a friend (and a highly skilled Multician) back at Virginia Tech who was a big fan of the Northern Virginia (McLean) Explorer Post that churned out a generation of gung-ho programmers in the late 70's. One of their tests, I think for a merit badge, included describing what was being done by a sadistically warped Fortran program. It was a real horror show which, back then, I actually had the time to enjoy puzzling out, with limited success. "proc proc" was my retort, and was done very slowly and incrementally with a manual at hand. Stripped of the obscurity it's a pretty dull program.
proc: proc; entry: proc (entry) returns (bin (71)); if returns < entry then return (call (entry - returns) * entry); return (1): return (1); dcl entry bin (71), end entry; end entry; dcl dcl char (char) based (based), based ptr ptr, ptr bit (144) init ("33184c674379c8d26136080bc32308f4bc64"b4), if defined defined (1), 1 then, 2 else (0:1) options (variable) variable init ((2) ioa_), ioa_ options (variable), defined (0:1) bin init (1,0), end char (16) based (addr (ptr)), char fixed (21), cu_$arg_ptr entry (bin, ptr, prec (21)) returns (prec (35)), returns defined defined (0), call generic (cu_$arg_ptr when (fixed, ptr, binary (21)), entry when (prec (17:71))); if if ^= call (returns, based, char) then do; goto: call else (returns) ("I need a numeric arg > 0 & < 23"); return; end; if if ^= verify (dcl, "1928374650") then goto goto; if bin (dcl) - 22 > if | if = bin (dcl) then goto goto; call then.else (if) (end, dcl, call (bin (dcl) ---- if)); end;
It takes an arg over 0 and less than 23 and gives the factorial using a very vanilla recursive subroutine.