home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume3 / xmases < prev    next >
Internet Message Format  |  1989-02-03  |  47KB

  1. Path: xanth!mcnc!gatech!mandrill!hal!ncoast!allbery
  2. From: rsk@mace.cc.purdue.edu (Rich Kulawiec)
  3. Newsgroups: comp.sources.misc
  4. Subject: v03i076: Just for fun (something which once appeared on the net)
  5. Message-ID: <8807101545.AA21634@mace.cc.purdue.edu>
  6. Date: 10 Jul 88 15:45:48 GMT
  7. Sender: allbery@ncoast.UUCP
  8. Reply-To: rsk@mace.cc.purdue.edu (Rich Kulawiec)
  9. Lines: 2008
  10. Approved: allbery@ncoast.UUCP
  11.  
  12. Posting-number: Volume 3, Issue 76
  13. Submitted-by: "Rich Kulawiec" <rsk@mace.cc.purdue.edu>
  14. Archive-name: xmases
  15.  
  16. [Only half a year late...  ;-)  ++bsa]
  17.  
  18. I found this while doing some housecleaning in my account, and thought
  19. it was marginally interesting enough to send along to you.
  20.  
  21. ---Rsk
  22.  
  23. From: ded@aplvax.UUCP
  24. Newsgroups: net.misc
  25. Subject: Merry Christmas Programs
  26. Organization: JHU/Applied Physics Lab, Laurel, MD
  27.  
  28.  
  29.  
  30. Well, here it is: the long awaited list of "Merry Christmas" programs.  
  31. If you are a crawled-out-from-under-a-rock sort of person and don't 
  32. know what's going on here, then you should read the following sentence:
  33. I don't know what's going on here either.  For some reason, I wanted
  34. to collect a group of programs which print the phrase "Merry Christmas"
  35. 15 times.  If you can figure out why I wanted to do this, please let 
  36. me know.
  37.  
  38. Thanks alot to all the nice folks who inundated me with mail.  Some of 
  39. the submissions made extremely clever use of editors and utility languages
  40. (I'm particularly fond of the UNIX shell script by Ben Hyde).  A few errors
  41. probably crept in due to transmission errors and my editing, and for that
  42. I apologize (because you're probably gonna be swamped by a horde of
  43. prepubescent fault finders).
  44.  
  45. Several of you requested that I (1) send you personal copies of the results,
  46. (2) send you only the more interesting examples, or (3) send you a report
  47. contrasting and comparing the various syntaxes.  I lost all your names.
  48.  
  49. If you sent me a submission and it wasn't included, then it either duplicated
  50. a previous entry or never arrived.  I deleted many comments to save space. 
  51. In retrospect, that was probably a mistake.
  52.                         --Don Davis
  53. ==========================================================================
  54.  
  55. /* 6502 assembly */
  56.  
  57. START    LDX #$0F
  58. LOOP1    LDY #$10
  59. LOOP2    LDA MCDATA,Y
  60.     JSR $FDF0    (CHAROUT or something like that)
  61.     DEY
  62.     BPL LOOP2
  63.     DEX
  64.     BPL LOOP1
  65.     RTS
  66.  
  67. MCDATA    ASC "
  68.  
  69.             ~ Kenn Frankel
  70.  
  71.             ...!sdcsvax!sdccs6!ix192
  72.  
  73. ==========================================================================
  74.  
  75. /* Ada version */
  76.  
  77.     with text_io; use text_io;
  78.     program print_merry_christmas is
  79.  
  80.     begin
  81.         for i in 1..15 loop
  82.             put("Merry Christmas"); new_line;
  83.         end loop;
  84.     end print_merry_Christmas;
  85.  
  86. I tested the program using the SuperSoft/Maranatha Ada compiler.
  87.    -- Dave Norris
  88.  
  89. ==========================================================================
  90.  
  91. /*  Ada  */
  92.  
  93. /*  This program is merely an ordinary loop.  It was developed by    */
  94. /*  Rob Pearce of JHU/APL. Oh yes; Rob is English.                    */
  95.  
  96.     1   with text_io; use text_io;
  97.     2
  98.     3   procedure number_a is
  99.     4
  100.     5     i_max:constant integer:=15;
  101.     6     type i_type is range 1..i_max;
  102.     7
  103.     8     package i_type_io is new integer_io(num=>i_type);
  104.     9
  105.    10   begin  -- number_a
  106.    11     for i in i_type loop
  107.    12       i_type_io.put(item=>i,
  108.    13                     width=>2);
  109.    14       put("  " &
  110.    15           "God save the Queen");
  111.    16       new_line;
  112.    17     end loop;
  113.    18   end number_a;
  114.  
  115. ==========================================================================
  116.  
  117. /* Ada */
  118.  
  119. -- This program counts to 15, but does so  via  three  "concurrently
  120. -- executing"  tasks.   The  output has been modified to be a single
  121. -- character instead of the full  "Merry  Christmas"  message.   The
  122. -- first  task  prints,  sequentially,  0..4.  The second prints, in
  123. -- turn, 5..9; and the third sequentially prints A..E.
  124. -- 
  125. -- If we had used the full "Merry Christmas" line,  then  the  three
  126. -- concurrent  tasks would have (almost certainly) interleaved their
  127. -- respective character strings, and one would have not been able to
  128. -- read any of the messages!
  129. -- 
  130. -- The program was developed by Rob Pearce of JHU/APL, and  was  run
  131. -- on a validated Ada system, the NY University, Ada/ED. The machine
  132. -- was a VAX-11/750 under typical loading. (Note the times;  they're
  133. -- about  the  same  on an empty machine, too!) The listing has been
  134. -- edited to remove the "uninteresting" lines and the  #$^&  control
  135. -- characters.
  136. --                    Mars Gralia
  137. --                    11/11/8
  138.  
  139. NYU ANSI-Ada/ED 1.1(11-Apr-83)            FRI  11 NOV 83  09:27:31   PAGE     1
  140.  
  141.     1   with text_io; use text_io;
  142.     2
  143.     3   procedure number_f is
  144.     4
  145.     5     task A;
  146.     6     task B;
  147.     7     task C;
  148.     8
  149.     9
  150.    10     task body A is
  151.    11
  152.    12     begin  -- A
  153.    13       for ch in character range '0'..'4' loop
  154.    14         put(ch);
  155.    15       end loop;
  156.    16     end A;
  157.    17
  158.    18
  159.    19     task body B is
  160.    20
  161.    21     begin  -- B
  162.    22       for ch in character range '5'..'9' loop
  163.    23         put(ch);
  164.    24       end loop;
  165.    25     end B;
  166.    26
  167.    27
  168.    28     task body C is
  169.    29
  170.    30     begin  -- C
  171.    31       for ch in character range 'A'..'E' loop
  172.    32         put(ch);
  173.    33       end loop;
  174.    34     end C;
  175.    35
  176.    36
  177.    37   begin  -- number_f
  178.    38     null;
  179.    39   end number_f;
  180.  
  181.   No translation errors detected
  182.   Translation time: 69 seconds
  183.  
  184.  
  185. NYU ANSI-Ada/ED 1.1(11-Apr-83)            FRI  11 NOV 83  10:34:05   PAGE     1
  186.  
  187.   Binding time: 3.3 seconds
  188.  
  189.   Begin Ada execution
  190.  
  191. 5A06B127C38D94E
  192.  
  193.   Execution complete
  194.   Execution time: 51 seconds
  195.   I-code statements executed: 97
  196.  
  197. ==========================================================================
  198.  
  199. /* Algol-60 */
  200.  
  201. begin comment Algol-60 version.  "Print" is system defined;
  202. integer i;
  203.  
  204. for i := 1 step 1 until 15 do Print("Merry Christmas")
  205.  
  206. end
  207.  
  208.                   --  chip elliott     ...decvax!dartvax!chip
  209.  
  210. ==========================================================================
  211.  
  212. /* Algol-68 */
  213.  
  214.     BEGIN
  215.     TO 15
  216.         DO
  217.         print(("Merry Christmas",newline))
  218.         OD
  219.     END
  220.  
  221.       -- Andrew Klossner   (decvax!tektronix!tekecs!andrew)  [UUCP]
  222.                    (andrew.tektronix@rand-relay)     [ARPA]
  223.  
  224.  
  225. ==========================================================================
  226.  
  227. /* APL */
  228. __
  229. \/ PROG ; S
  230.      ___                    __
  231. [1]  ! ! <- (15, pS) p S <- 'Merry Christmas'   \/
  232.      ---
  233.  
  234. Here's an APL version.  Since APL uses more than the ASCII character set,
  235. I had to fake it some.  The triangle is the greek character 'del' (an
  236. upside-down delta), the first symbol on line [1] is a 'quad', a
  237. rectangular block, the '<-' is a left arrow, and the lower-case 'p'
  238. is the greek character 'rho'.  Have fun.
  239.  
  240.                     ^-^ Bruce ^-^
  241.  
  242. ==========================================================================
  243.  
  244. /* APL */
  245.  
  246.     15 15 rho 'Merry Christmas'
  247.  
  248. (rho is the greek letter of that name, the reshape operator in APL)
  249.  
  250. That may not count, since it's more like an expression than a
  251. program, but it will do what you asked for.  I guess you could make
  252. it a program if you wanted, as follows:
  253.  
  254.     del merry
  255.     [1] 15 15 rho 'Merry Christmas'
  256.     del
  257.  
  258. (del is a little upside-down triangle)
  259.  
  260.                     Joe Ziegler
  261.                     ...ihnp4!pegasus!lzmi!ziegler
  262.  
  263. ==========================================================================
  264.  
  265. /* APL */
  266.  
  267.     Here is an APL Merry Christmas. Since APL uses a different chracter set,
  268. I will use the following identifiers for non-ascii chracters:
  269.     RHO - greek letter rho
  270.     BOX - the rectangle or window character
  271.     ASGN - the back-arrow assignment character
  272.     TRI - upside-down triangle
  273.  
  274. TRI merry ; mesg
  275. BOX ASGN (15,RHO mesg)RHO mesg ASGN "Merry Christmas"
  276. TRI
  277.  
  278.             ---From some unknown person on the other side of uucp 
  279.  
  280. ==========================================================================
  281. /* AWK */
  282.     awk 'BEGIN {for (i=1;i<=15;i++) print "Merry Xmas"}' /dev/null
  283.  
  284.             From: seismo!mcvax!steven (Steven Pemberton)
  285. ==========================================================================
  286.  
  287. /* AWK */
  288. (note that it wants some standard input):
  289.     
  290. BEGIN { for (i = 0; i < 15; i++) {
  291.     printf "Merry Christmas\n"
  292.     }   
  293. }   
  294.     
  295.             From: David Chase <rbbb@rice>
  296.                 
  297. ==========================================================================
  298.  
  299. /* B */
  300. (not the predecessor of "C", by the way).
  301.  
  302.     HOW'TO MERRY'CHRISTMAS:
  303.     FOR i IN {1..15}:
  304.         WRITE 'Merry Christmas' /
  305.  
  306. The string quote in B is used like the underscore in "C".
  307. HOW'TO introduces a procedure declaration.
  308. Indentation is used for grouping statements.
  309. The slash is used in WRITE-commands to indicate a newline.
  310. Actually, this definition should be followed by a call:
  311.  
  312.     MERRY'CHRISTMAS
  313.  
  314. You could also write the body of the procedure instead of the call,
  315. and then would have no need for the definition ("B" has no clear
  316. notion of what a program is; usually it's a group of procedures
  317. and functions living together in a workspace).
  318.  
  319. --
  320. Guido van Rossum, "B Group",
  321. Centre for Mathematics and Computer Science, (CWI, formerly MC), Amsterdam
  322. {philabs,decvax}!mcvax!guido
  323.  
  324. ==========================================================================
  325.  
  326. /* Applesoft BASIC */
  327.  
  328. 10 FOR I = 1 TO 10 : PRINT "MERRY CHRISTMAS" : NEXT I
  329.  
  330.             ---From some unknown person on the other side of uucp 
  331.  
  332. ==========================================================================
  333.     
  334. /* Basic-Plus (DEC Basic on RSTS/E) */
  335.     
  336.         10    ! Merry Christmas program &
  337.             ! Written by David Kaufman for Usenet survey
  338.     
  339.         20 For I = 1 to 15 \ &
  340.             Print "Merry Christmas" \ &
  341.             Next I
  342.     
  343.         30 End     ! Optional, but helps reloading command
  344.     
  345.         Merry Christmas!
  346.             David Kaufman
  347.             ...decvax!yale-comix!kaufman
  348.  
  349. ==========================================================================
  350.  
  351. /* BASIC */
  352.  
  353. 1000 i=0
  354. 1010 if i=15 then goto 1050
  355. 1020 print 'Merry Christmas'
  356. 1030 i = i+1
  357. 1040 goto 1010
  358. 1050 end
  359.  
  360.                         That's All
  361.                         Dave Wargo
  362.                         UCSD
  363.  
  364. ==========================================================================
  365.  
  366. /* bc */
  367.  
  368. bc<<!
  369. for(i=19^83;i<=19^83+14;i++) "Merry Christmas
  370. "
  371. !
  372.                     --unknown hacker
  373.  
  374. ==========================================================================
  375.  
  376. /* BCPL */
  377.  
  378.         // Cambridge IBM implementation
  379.         get "libhdr"
  380.         let start(parm) be $(
  381.             selectoutput(findoutput("sysprint"))
  382.             for i := 1 to 15 do writef("Merry Christmas*N")
  383.         $)  
  384.  
  385.                     These languages courtesy of:
  386.                         Pavel Curtis, Cornell
  387.                         Mike Caplinger, Rice
  388.  
  389. ==========================================================================
  390.  
  391. /* BCPL */
  392.  
  393. GET "libhdr"
  394.  
  395. LET start() BE
  396.     FOR index = 1 TO 15 DO writes("Merry Christmas*n")
  397.  
  398.  
  399.             From: jd@ukc.UUCP
  400.             Organization: Computing Lab. Kent University, England
  401.  
  402. ==========================================================================
  403.  
  404. /* Bliss-11 */
  405.  
  406. module Christmas =
  407. begin \Main\
  408.  
  409. external MsgScan;
  410. local i;
  411.  
  412. incr i from 1 to 15 do
  413.   MsgScan( uplit asciz "Merry Christmas%C" );
  414.  
  415. end \Main\
  416. eludom
  417.  
  418.                 From: leiby
  419.  
  420. ==========================================================================
  421.  
  422. /* C */
  423.  
  424. main()
  425. {
  426.     int i;
  427.  
  428.     for (i=0; i<15; i++)
  429.         printf("Merry Christmas\n");
  430. }
  431.                         by Don Davis
  432.  
  433. ==========================================================================
  434.  
  435. /* CDC 6000-type assembly */
  436.  
  437.         IDENT   MERRY
  438.         ENTRY   MERRY
  439.         SYSCOM  B1
  440.  
  441. OUTPUT  FILEB   OBUF,101B,FET=8
  442. OBUF    BSS     101B
  443.  
  444. COUNT   DATA    14
  445.  
  446.  
  447. MERRY   SB1     1
  448.  
  449. MERRY1  WRITEC  OUTPUT,(=C*MERRY CHRISTMAS*)
  450.  
  451.         SA1     COUNT
  452.         SX6     X1-1
  453.         SA6     COUNT
  454.         NZ      X1,MERRY1
  455.  
  456.         WRITER  OUTPUT,R
  457.         ENDRUN
  458.         END     MERRY
  459.  
  460. Jeff Lee
  461. CSNet:    Jeff @ GATech        ARPA:    Jeff.GATech @ CSNet-Relay
  462. uucp:    ...!{sb1,allegra,ut-ngp}!gatech!jeff ...!duke!mcnc!msdc!gatech!jeff
  463.  
  464. ==========================================================================
  465.  
  466. /* CGOL */
  467. ( an extensible language that translates into MACLISP)
  468.  
  469.     for i in 1 to 15 do print "Merry Christmas"<ESC>
  470.  
  471. The value of this expression is nil, if you really want a list of them,
  472.  
  473.     for i in 1 to 15 collect "Merry Christmas"<ESC>
  474.  
  475.                 Garret Swart
  476.  
  477. ==========================================================================
  478.  
  479. /* CLI */
  480. To print Merry Christmas 15 times under Data General's CLI's (command line
  481. interpreters):
  482.  
  483.     RDOS, RTOS, DOS:    MESSAGE Merry Christmas(,,,,,,,,,,,,,,,)
  484.     AOS, AOS/VS:        write Merry Christmas(,,,,,,,,,,,,,,,)
  485.  
  486. (for your information, the parenthesis indicate that the command will be
  487. executed multiple times, with possible subsitutions, so "write a(b,c) d" would
  488. write two lines:  "abd" and "acd".  Since nothing is substituted, the same
  489. command is executed 15 times.  BTW, write can be abreviated to "wr", "wri", ...)
  490.  
  491.                 Michael Meissner
  492.                 Data General Corporation
  493.                 ...{allegra, decvax!ittvax, rocky2}!datagen!mrm
  494.  
  495. ==========================================================================
  496.  
  497. /* CLU */
  498.  
  499. start_up = proc ()
  500.     po: stream := stream$primary_output ()
  501.     for i: int in int$from_to (1, 15) do
  502.         stream$putl (po, "Merry Christmas")
  503.     end
  504.     end start_up
  505.  
  506.                 Happy Hacking!
  507.  
  508.                 Russell Finn
  509.                 {decvax, eagle, mit-eddie}!mit-vax!russ
  510.                 RUSS%MIT-VAX@MIT-ML
  511.  
  512. ==========================================================================
  513.  
  514. /* CLU */
  515. (Liskov, August 1977 CACM)
  516.  
  517. start_up = proc ()
  518.    for i: int in int$from_to(1, 15) do
  519.       stream$putl(stream$primary_output(), "Merry Christmas")
  520.    end
  521. end start_up
  522.  
  523.             Original-From:     J. Dean Brock <brock@unc>
  524.  
  525. ==========================================================================
  526.  
  527. /* COBOL */
  528.  
  529.        IDENTIFICATION DIVISION. 
  530.        PROGRAM-ID. XMASPRINT.
  531.        ENVIRONMENT DIVISION.
  532.        CONFIGURATION SECTION.
  533.        SOURCE-COMPUTER. UNIVAC-1110.
  534.        OBJECT-COMPUTER. UNIVAC-1110.
  535.        DATA DIVISION.
  536.        PROCEDURE DIVISION.  
  537.        0000-MAIN.
  538.            PERFORM 10-PRINT 15 TIMES.
  539.            STOP RUN.
  540.        10-PRINT.  DISPLAY 'Merry Christmas' UPON PRINTER.
  541.  
  542.         From: seismo!decvax!sdcsvax!ittvax!dcdwest!noscvax!kemp
  543.  
  544. ==========================================================================
  545.  
  546. /* Cprolog */
  547.  
  548. /* Write Merry Christmas 15 times in 4.1bsd Cprolog 
  549.  *  To execute, get into prolog, then issue the commands:
  550.  *  |?- ['xmas.p'].
  551.  *  |?- xmas.
  552.  */
  553.  
  554. xmas :- name(Text,"Merry Christmas") , writeline(Text,15).
  555. writeline(_,0).
  556. writeline(Text,N) :- write(Text) , nl , M is N - 1 , writeline(Text,M).
  557.  
  558.         From: seismo!decvax!microsof!ubc-vision!mprvaxa!tbray
  559.                 
  560. ==========================================================================
  561.  
  562. /* dBASEII */
  563.  
  564.     store 0 to number
  565.     do while number < 15
  566.         ? "Merry Christmas"
  567.         store 1+number to number
  568.     enddo
  569.     release number
  570.  
  571.                 From: seismo!philabs!sbcs!BNL!jeffy
  572.                     --Jeff M.
  573.  
  574. ==========================================================================
  575.  
  576. /* dBASE II */
  577.  
  578. SET TALK OFF
  579. STORE 0 TO counter
  580. DO WHILE counter < 15
  581.     @ counter, 0 SAY "Merry Christmas"
  582.     STORE counter + 1 TO counter
  583. ENDDO
  584. RETURN
  585.  
  586.                 From: mike@uokvax.UUCP
  587.  
  588. ==========================================================================
  589.  
  590. /* 'csh' command version */
  591.  
  592. repeat 15 echo Merry Christmas
  593.  
  594.             Original-From:     Bruce Israel <israel@umcp-cs>
  595.  
  596. ==========================================================================
  597. /*  DCL (VAX/VMS shell) */
  598.                 
  599.         $ i = 1
  600.         $ loop:
  601.         $ if i.gt.15 then goto done
  602.         $ write sys$output "Merry Christmas"
  603.         $ i = i + 1
  604.         $ goto loop
  605.         $ done:
  606.         $ exit
  607.                 
  608.         From: David Chase <rbbb@rice>
  609.  
  610. ==========================================================================
  611.                 
  612. /* DCL */
  613. And (as I noticed that Un*x shell scripts were on your list, and in
  614. the interest of equal time) here it is in DCL (Digital Command
  615. Language, a CLI which runs on many DEC machines -- I cut my teeth on
  616. VAX/VMS):
  617.  
  618. $ i = 1
  619. $ loop:
  620. $ write sys$output "Merry Christmas"
  621. $ i = i + 1
  622. $ if i .le. 15 then goto loop
  623. $ exit
  624.  
  625.                 Happy Hacking!
  626.  
  627.                 Russell Finn
  628.                 {decvax, eagle, mit-eddie}!mit-vax!russ
  629.                 RUSS%MIT-VAX@MIT-ML
  630.  
  631. ==========================================================================
  632.  
  633. /* DDL */
  634.  
  635. Here is a Merry Christmas program written in DDL. Yes DDL, the Dungeon
  636. Definition Language from UCLA. I have included a makefile
  637. in case you have never seen this stuff before.
  638.  
  639. *********************** xmas.ddl *************************
  640. VAR count;
  641. (count) = 1;
  642.  
  643. Greetings =    ( WHILE ( $lt @count 15 ) :
  644.         ( $setg count ( $plus 1 @count ))
  645.         ( $say "Merry Christmas\n")
  646.     )
  647.     ($spec 3 0 0 0 0);
  648.  
  649. START = ($sdem Greetings);
  650.  
  651. *********************** makefile *************************
  652.  
  653. xmas:
  654.     /usr/src/games/ddl/ddlcomp tiny < tiny.ddl > ddlcomp.out
  655.  
  656. To run it type the following
  657.  
  658.     `/usr/games/lib/ddlrun xmas'
  659.  
  660.  
  661.                 - Joel
  662.  
  663. ==========================================================================
  664.  
  665. /* ed */
  666.  
  667.     ed - /etc/passwd<<!
  668.     1,15g/./s/.*/Merry Christmas/p
  669.     q
  670.     !
  671.  
  672.         From: seismo!mcvax!steven (Steven Pemberton)
  673.  
  674. ==========================================================================
  675. /* ed  */
  676. (UNIX 'standard' line editor):
  677.  
  678.         a   
  679.         Merry Christmas
  680.         .   
  681.         t.  
  682.         t.  
  683.         t.  
  684.         t.  
  685.         t.  
  686.         t.  
  687.         t.  
  688.         t.  
  689.         t.  
  690.         t.  
  691.         t.  
  692.         t.  
  693.         t.  
  694.         t.  
  695.         t.  
  696.         1,$p
  697.  
  698.                     These languages courtesy of:
  699.                         Pavel Curtis, Cornell
  700.                         Mike Caplinger, Rice
  701.  
  702. ==========================================================================
  703.  
  704. /* Concurrent-Euclid */
  705. ------------------
  706. var xmas :
  707.     module
  708.     include '%IO'
  709.     initially
  710.     imports (var IO)
  711.     begin
  712.         var i : ShortInt := 0
  713.         loop
  714.         IO.PutString ('Merry Christmas$N$E')
  715.         i := i + 1
  716.         exit when i = 15
  717.         end loop
  718.     end
  719. end module {xmas}
  720. ------------------
  721.  
  722. Stephen Perelgut    Computer Systems Research Group    University of Toronto
  723.         Usenet:    {linus, ihnp4, allegra, decvax, floyd}!utcsrgv!perelgut
  724.  
  725. ==========================================================================
  726.  
  727. /* Concurrent Euclid */
  728.  
  729. var MerryChristmas :
  730.     module
  731.  
  732.     include '%IO'
  733.  
  734.     initially
  735.  
  736.     imports (var IO)
  737.     begin
  738.         var i: SignedInt := 15
  739.  
  740.         loop
  741.         IO.PutString('Merry Christmas$N$E')
  742.         i := i - 1
  743.         exit when i = 0
  744.         end loop
  745.     end
  746.  
  747. end module
  748.  
  749.                 From utcsrgv!utai!rayan 
  750.  
  751. ==========================================================================
  752.  
  753. /* EYE */
  754.  
  755. Since you said "the more obscure the better", here is the program written in
  756. EYE, a language which was implemented by Kuck & Associates, Inc. of 
  757. Champaign, Illinois as an implementation language for writing a large piece
  758. of software.
  759.  
  760. program yule_tidings is
  761.  
  762. constant number_of_times_to_print_merry_christmas : integer = 15;
  763.  
  764. begin( yule_tidings )
  765.  
  766.     for i:integer = 1 to number_of_times_to_print_merry_christmas
  767.     loop( print_merry_christmas )
  768.  
  769.         put( 'Merry Christmas' | );
  770.  
  771.         endloop( print_merry_christmas );
  772.  
  773.     end( yule_tidings );
  774.                     Jim Davies
  775.                     {pur-ee parsec}!uiucdcs!uiuccsb!davies
  776.  
  777. ==========================================================================
  778.   
  779. /*  FRED  */
  780. (a text editor)
  781.  
  782. u15 jm Merry Christmas
  783.  
  784.                 From: decvax!watmath!ljdickey
  785.  
  786. ==========================================================================
  787.  
  788. /* Forth */
  789.  
  790. (Forth)
  791. 15 0 DO ."Merry Christmas" CR LOOP
  792.  
  793.                     Adam Reed
  794.                     AT&T Information Systems
  795.                     ihnp4!hogpc!pegasus!lzmi!adam
  796.  
  797. ==========================================================================
  798.  
  799. /* Forth */
  800.  
  801. : greetings cr 0 do ." Merry Christmas" cr loop ;
  802.  
  803. 15 greetings
  804.  
  805.  
  806.                 Dave Seaman
  807.                 ..!pur-ee!pucc-k:ags
  808.  
  809. ==========================================================================
  810.  
  811. /* Fortran? */
  812.  
  813. If you want an obscure solution, try the following Fortran
  814. on a VAX.  It works on BSD4.1, BSD4.1c and System V.
  815.  
  816.     integer table(12)
  817.     data table/248514560, -552542885, 4847, -83763968
  818.      1, 323331, 1542717440, 1260, 1292108988
  819.      2, 2037543525, 1919435552, 1836348265, 684897/
  820.     call out(table)
  821.     end
  822.  
  823.     subroutine out(code)
  824.     external code
  825.     call code
  826.     return
  827.     end
  828. -- 
  829.  
  830. Griff Smith    AT&T Bell Laboratories, Murray Hill
  831. Phone:        (201) 582-7736
  832. Internet:    ggs@ulysses.uucp
  833. UUCP:        ulysses!ggs
  834.  
  835. ==========================================================================
  836.  
  837. /* Fortran 77 */
  838.  
  839.       program yule
  840.       parameter (nwish = 15)
  841. c
  842.       do 1 i = 1,nwish
  843.     1   print*,'Merry Christmas'
  844. c
  845.       end
  846.                     Jim Davies
  847.                     {pur-ee parsec}!uiucdcs!uiuccsb!davies
  848.  
  849. ==========================================================================
  850.  
  851. /* FP */
  852. (Backus' Functional Programming Language):
  853. (Using the syntax of Scott Baden's UNIX implementation)
  854.  
  855.         ; MC prints the string 'Merry Christmas' 15 times when applied
  856.         ;                       to any argument and returns T.
  857.         {MC     %T @ out @ &%"Merry Christmas\n" @ iota @ %15}
  858.  
  859.                     These languages courtesy of:
  860.                         Pavel Curtis, Cornell
  861.                         Mike Caplinger, Rice
  862.  
  863. ==========================================================================
  864.  
  865. /* GPSS */ 
  866.  
  867.     SIMULATE
  868.     GENERATE    1
  869.     TERMINATE    1
  870.     START        15,,1
  871.     REPORT
  872.     TEXT        MERRY CHRISTMAS
  873.     END
  874.  
  875.             ---From some unknown person on the other side of uucp 
  876.  
  877. ==========================================================================
  878.  
  879. /* IBM 370 assembly */
  880.  
  881. How about this one (IBM 370 assembler running VM/VPS - a local hack at Boston
  882. University):
  883.  
  884. xmas      csect
  885.           stm     r14,r12,12(r13)
  886.           lr      r12,r15
  887.           using   xmas,r12
  888.           st      r13,savearea+4
  889.           la      r13,savearea
  890.  
  891. *
  892. *         Initialize counter
  893. *
  894.  
  895. xmasloop  ds      0h
  896.           la      r2,15                   Print it 15 times
  897.           qio     rb=xmasrb               Print "Merry Christmas"
  898.           bct     r2,xmasloop
  899.  
  900.           l       r13,4(,r13)             Restore registers
  901.           lm      r14,r12,12(r13)
  902.           br      r14                     Return to OS
  903.  
  904. xmasrb    qiorb   ddname=sysprint,bufad=xmasmsg,lrecl=l'xmasmsg
  905. xmasmsg   dc      c' Merry Christmas'     Don't forget carriage control
  906.           end     xmas
  907.  
  908.  
  909. If that isn't obscure, I don't know what is.
  910.  
  911.             ---Sender: reg@ima!vaxine.UUCP
  912.  
  913. ==========================================================================
  914.  
  915. /* Icon */
  916.  
  917.     # write "Merry Christmas" 15 times on standard output
  918.     procedure main()
  919.         every 1 to 15 do write("Merry Christmas")
  920.     end
  921.  
  922. "1 to 15" is a generator which produces the sequence 1..15;
  923. "every X do Y" evaluates Y for each value of X;
  924. write() writes a line of text.
  925.  
  926.                     Randy Hudson
  927.                     decvax!cca!ima!inmet!rgh
  928.  
  929. ==========================================================================
  930.  
  931. /* Icon (Version 5) */
  932.  
  933. procedure main()
  934.     every write(|"Merry Christmas") \ 15
  935. end
  936.  
  937. The more canonical solution is:
  938.  
  939. procedure main()
  940.     every 1 to 15 do
  941.         write("Merry Christmas")
  942. end
  943.  
  944. but obviously isn't as devious.
  945.  
  946.                     ---Bill Mitchell
  947.  
  948. ==========================================================================
  949.  
  950. /* Imp80 */
  951.  
  952. %begin
  953.     %integer index
  954.  
  955.     %for index = 1, 1, 15 %cycle
  956.         Print String("Merry Christmas")
  957.         New Line
  958.     %repeat
  959. %end %of %program
  960.  
  961.                 From: jd@ukc.UUCP
  962.         Organization: Computing Lab. Kent University, England
  963.  
  964. ==========================================================================
  965.  
  966. /* The Kent Recursive Calculator */
  967.  
  968.     there you are, here is the merry christmas program in my favourite 
  969.     language, krc (The Kent Recursive Calculator),
  970.     a teaching and research applicative language used at the University of
  971.     Kent, Canterbury, UK.
  972.     the syntax is annexed and requests for the full formal description
  973.     of the language (syntax+semantics) will be considered.
  974.     the program is:
  975.  
  976.     print 0 = []
  977.     print n = "Merry Christmas":nl:print (n-1)
  978.  
  979.     and the command to run it (in the interpreter) is
  980.  
  981.     print 15!
  982.  
  983.     silvio lemos meira
  984.     computing lab
  985.     university of kent at canterbury
  986.     ...vax135!ukc!srlm
  987.  
  988.     SYNTAX...
  989.  
  990. (note: space is limited, but the syntax is available upon request;
  991.     just send me a stamped, self-addressed antelope -- Don Davis)
  992.  
  993. ==========================================================================
  994.  
  995. /* LISP */
  996.  
  997.    (do ((i 0 (add1 i)))
  998.        ((eq i 15))
  999.        (msg "Merry Christmas" N))
  1000.  
  1001.  
  1002.                 Dave Seaman
  1003.                 ..!pur-ee!pucc-k:ags
  1004.  
  1005. ==========================================================================
  1006.  
  1007. /* Scheme or Maclisp or Franz Lisp */
  1008. ;
  1009. (do ((i 0 (+ i 1)))
  1010.     ((= i 15))
  1011.     (princ "Merry Christmas")
  1012.     (terpri)   ;new line
  1013. )
  1014.  
  1015.                   --  chip elliott     ...decvax!dartvax!chip
  1016.  
  1017. ==========================================================================
  1018.  
  1019. /* MTS Lisp */
  1020.  
  1021.   (repeat '( print '"Merry Christmas") 15)    # MTS Lisp.
  1022.                  Bruce Wilcox, Intermetrics Inc.
  1023.  
  1024. ==========================================================================
  1025.  
  1026. /* LSRHS Logo */
  1027. (from the Usenix82 tape):
  1028.  
  1029. to greet :n
  1030. 10  if :n >1 then greet (:n - 1)
  1031. 20  print [Merry Christmas]
  1032. end
  1033. greet 15
  1034.  
  1035.         From: seismo!decvax!trw-unix!trwspp!urban (Mike Urban)
  1036.  
  1037. ==========================================================================
  1038.  
  1039. /* Logo */
  1040.  
  1041.         repeat 15 [print "Merry\ Christmas]
  1042.  
  1043.                     These languages courtesy of:
  1044.                         Pavel Curtis, Cornell
  1045.                         Mike Caplinger, Rice
  1046.  
  1047. ==========================================================================
  1048.  
  1049. /* LSE */
  1050.  
  1051. Here's a language you probably have never heard of... LSE (Langue
  1052. Symbolique d'Instruction, or Symbolic Language of Instruction).  I
  1053. used it on some ancient machine in France (of French make) and it is
  1054. roughly parallel to BASIC translated to French.  It sure isn't my
  1055. favorite, but it's interesting...
  1056.  
  1057. 10 pour i = 1 jusqua 15 faire 20
  1058. 20 afficher "Merry Christmas"
  1059.  
  1060.  
  1061.                 Philippe Lacroute
  1062.                 ..decvax!sun!cochon
  1063.  
  1064. ==========================================================================
  1065.  
  1066. /* m4 */
  1067.  
  1068. define(`merry',`ifelse(eval($1),eval(0),,Merry Christmas
  1069. `merry'(eval($1-1)))')dnl
  1070. merry(15)dnl
  1071.  
  1072.  
  1073.  
  1074.                     Joseph L. Wood, III
  1075.                     AT&T Information Systems
  1076.                     Laboratories, Holmdel
  1077.                     (201) 834-3759
  1078.                     ariel!jlw
  1079.  
  1080. ==========================================================================
  1081.  
  1082. /* MACSYMA */
  1083.  
  1084.         doit() := for i:1 thru 15 do print("Merry Christmas")$
  1085.  
  1086.                     These languages courtesy of:
  1087.                         Pavel Curtis, Cornell
  1088.                         Mike Caplinger, Rice
  1089.  
  1090. ==========================================================================
  1091.  
  1092. /* make */
  1093.  
  1094. If you use the following as the description file for 'make', it
  1095. will satisfy your requirement.  Make can be considered a language
  1096. interpreter, so what the heck.
  1097.  
  1098. ---------------------- cut ------- here -----------------------------------
  1099. .SILENT:
  1100.  
  1101. foo_._bar_ :                    # some name unlikely to already exist
  1102.     echo merry christmas
  1103.     echo merry christmas
  1104.     echo merry christmas
  1105.     echo merry christmas
  1106.     echo merry christmas
  1107.     echo merry christmas
  1108.     echo merry christmas
  1109.     echo merry christmas
  1110.     echo merry christmas
  1111.     echo merry christmas
  1112.     echo merry christmas
  1113.     echo merry christmas
  1114.     echo merry christmas
  1115.     echo merry christmas
  1116.     echo merry christmas
  1117.  
  1118.             ---From some unknown person on the other side of uucp 
  1119.  
  1120. ==========================================================================
  1121.  
  1122. /* A Maryland Text Editor procedure */
  1123. ---------------------------------
  1124. let a=0 
  1125. next:test a<15  
  1126. escape  
  1127. dis 'Merry Christmas'
  1128. let a=a+1
  1129. jump next
  1130.  
  1131. From: seismo!decvax!sdcsvax!ittvax!dcdwest!noscvax!kemp
  1132.  
  1133. ==========================================================================
  1134.  
  1135. /* Mesa 5.0 */
  1136.  
  1137. -- Here it is in Mesa 5.0; good luck trying to find an Alto or a D-machine
  1138. -- on which to run it.
  1139.  
  1140. DIRECTORY
  1141.         IODefs: FROM "iodefs" USING [WriteLine];
  1142.  
  1143. MerryChristmas: PROGRAM IMPORTS IODefs =
  1144.  
  1145.         BEGIN
  1146.         i: INTEGER; -- loop index
  1147.         FOR i IN [0..15) DO -- print the message 15 times
  1148.                 WriteLine["Merry Christmas"]; -- this is the message, and the
  1149.                                               -- procedure WriteLine[] provides
  1150.                                               -- the carriage return
  1151.                 ENDLOOP; -- go back and do it again
  1152.  
  1153.         END. -- all done
  1154.  
  1155.                 -- Patrick Olmstead
  1156.  
  1157.                 -- ...ucbvax!menlo70!sytek!olmstead
  1158.                 -- ...decvax!sytek!olmstead (when decvax answers the phone)
  1159.  
  1160. ==========================================================================
  1161.  
  1162. /* MIX */
  1163.  
  1164. *
  1165. *  THIS PROGRAM WILL PRINT "MERRY CHRISTMAS" 15 TIMES 
  1166. *
  1167. LP         EQU  18        CARD PUNCH DEVICE
  1168. *
  1169. MSG        ALF   MERR        DON'T FORGET THE BLANK SPACE FOR CCTL
  1170.            ALF  Y CHR
  1171.            ALF  ISTMA
  1172.            ALF  S
  1173.            ORIG *+20
  1174. *
  1175. START      EQU  *
  1176.            ENT1 0        INITIALIZE COUNTER
  1177. *
  1178. LOOP       EQU  *
  1179.            OUT  MSG(LP)        WRITE IT OUT
  1180.            JBUS *(LP)        WAIT ON I/O
  1181.            INC1 1        R1 := R1 + 1
  1182.            CMP1 =15=        IF (R1 = 15)
  1183.            JE   DONE           THEN DONE
  1184.            JMP  LOOP           ELSE DO IT AGAIN
  1185. *
  1186. DONE       EQU  *
  1187.            HLT            AND A HAPPY NEW YEAR
  1188.            END  START
  1189.  
  1190.  
  1191. -- 
  1192. Theodore Hope
  1193. School of ICS, Georgia Tech, Atlanta GA
  1194. CSNet:    Hope @ GaTech        ARPA:    Hope.GaTech @ CSNet-Relay
  1195. uucp:    ...!{akgua,allegra,rlgvax,sb1,unmvax,ut-ngp,ut-sally}!gatech!Hope
  1196.  
  1197. ==========================================================================
  1198.  
  1199. /* MLisp */
  1200. (Gosling's Emacs editor extension language):
  1201.  
  1202.         (provide-prefix-argument 15 (insert-string "Merry Christmas\n"))
  1203.  
  1204.                     These languages courtesy of:
  1205.                         Pavel Curtis, Cornell
  1206.                         Mike Caplinger, Rice
  1207.  
  1208. ==========================================================================
  1209.  
  1210. /* Modula-2 */
  1211.  
  1212. Module cheers;
  1213. ODULEcheers;
  1214. FROM InOut IMPORT WriteLn, WriteString;
  1215. VAR
  1216.   i    :CARDINAL;
  1217. BEGIN
  1218.   FOR i := 1 TO 15 DO
  1219.     WriteString('Merry Christmas');
  1220.     WriteLn;
  1221.   END;    (*FOR I*)
  1222. END cheers.
  1223.  
  1224.             From: seismo!decvax!decwrl!amd70!fortune!dsd!mush
  1225.  
  1226. ==========================================================================
  1227.  
  1228. /* MTS editor */
  1229.  
  1230. * And here is a weird one written in the MTS editor
  1231. * the @verify@-lnum says to print the new line without linenumber
  1232. * '*' refers the current line number.
  1233. *
  1234.  
  1235. insert "merry christmas" @verify@-lnum
  1236. copy * to * copies=14 @verify@-lnum
  1237.  
  1238.             ---From: seismo!cmcl2!floyd!ihnp4!alberta!stephen
  1239.  
  1240. ==========================================================================
  1241.  
  1242. /* Mystery Language */
  1243. (Author did not include name and I don't recognize it)
  1244.  
  1245. MODULE Greetings;
  1246. FROM Terminal IMPORT WriteString, WriteLn;
  1247.  
  1248. VAR i: CARDINAL;
  1249.  
  1250. BEGIN
  1251.   FOR i:=1 TO 15 DO
  1252.     WriteString("Merry Christmas");
  1253.     WriteLn;
  1254.   END; (*for*)
  1255. END Greetings.
  1256.  
  1257.         From: seismo!decvax!decwrl!amd70!dual!proper!opje
  1258.  
  1259. ==========================================================================
  1260.  
  1261. /* Newspeak */
  1262.  
  1263. (defproc merry-xmas () (values)
  1264.     (do ((i 1 (1+ i)))
  1265.         (print "Merry Christmas")
  1266.         (exit-do-if (= i 15))))
  1267.      
  1268.         From: John Foderaro (on an h19-u) <ucbvax!ucbkim:jkf>
  1269.  
  1270. ==========================================================================
  1271.  
  1272. /* nroff */
  1273.  
  1274. .nr i 15+1 1
  1275. .de MC
  1276. .if \\n-i \{ .tl ''Merry Christmas''
  1277. .    MC \}
  1278. ..
  1279. .MC
  1280.  
  1281.  
  1282.             R. Drew Davis  pyuxbb!drew
  1283.  
  1284. ==========================================================================
  1285.  
  1286. /* OOPC */
  1287. (an object-oriented preprocessor for C):
  1288.  
  1289. main()
  1290. {
  1291.     int i;
  1292.  
  1293.     for (i=0; i<15; i++)
  1294.         printf("Merry Christmas\n");
  1295. }
  1296.  
  1297. If it looks a lot like C, that's because it is.  The object-oriented features
  1298. are only used when you're dealing with objects (you can use C wherever
  1299. you want).
  1300.  
  1301.  
  1302.     Karl Freburger
  1303.     decvax!ittvax!freb
  1304.  
  1305. ==========================================================================
  1306.  
  1307. /* OPS5 */
  1308.  
  1309. ; A program to print Merry Christmas 15 times, in OPS5.
  1310. ; OPS5 is a simple AI/expert systems language for writing
  1311. ; production systems in.
  1312. (literalize counter value)    ; Analogous to a record declaration.
  1313.                 ; The program:    A single production.
  1314. (p print-one-merry-christmas            ; if
  1315.     (counter ^value {<c> > 0})        ;    counter.value > 0
  1316.     -->                    ; then
  1317.     (write (crlf) Merry Christmas)        ;      write("Merry christmas");
  1318.     (modify 1 ^value (compute <c> - 1)))    ;      counter.value -:= 1;
  1319. (make counter ^value 15)             ; Create a counter with value=15
  1320. (watch 0)                      ; No tracing.
  1321. (run)                        ; Go for it.
  1322.  
  1323. ;                                Ben Hyde, Intermetrics Inc.
  1324.  
  1325. ==========================================================================
  1326.  
  1327. /* Pascal */
  1328.  
  1329. program yuletidings (output);
  1330. const
  1331.     numberofwishes = 15;
  1332. var
  1333.     i : integer;
  1334.  
  1335. begin
  1336.     for i := 1 to numberofwishes do
  1337.         writeln('Merry Christmas');
  1338.     end.
  1339.                     Jim Davies
  1340.                     {pur-ee parsec}!uiucdcs!uiuccsb!davies
  1341.  
  1342. ==========================================================================
  1343.  
  1344. /* PDP-11 assembler */
  1345. (under RT-11)
  1346.  
  1347.     .TITLE    MERRY XMAS
  1348.     .IDENT    /R M/
  1349.     .NLIST    BEX
  1350.     .DSABL    GBL
  1351.     .ENABL    LC
  1352.  
  1353.  
  1354.  
  1355.     .MACLL    .PRINT, .EXIT
  1356.  
  1357.  
  1358.  
  1359. MERRY::
  1360.     MOV    #15.,R4            ;set up the print count
  1361.     .PRINT    #MSG1            ;print the message
  1362.     SOB    R4,MERRY        ;loop until finished
  1363.  
  1364.     .EXIT                ;return to RT-11
  1365.  
  1366. MSG1:    .ASCIZ    /Merry Christmas !!!/
  1367.     .EVEN
  1368.  
  1369.     .END    MERRY
  1370.  
  1371.                 From: seismo!utah-cs!pwa-b!miorelli
  1372.  
  1373. ==========================================================================
  1374.  
  1375. /* PDP-11 assembler */
  1376. (under UNIX)
  1377.  
  1378.         mov    $15.,r4
  1379.     1:
  1380.         mov    $1,r0
  1381.         sys    write; 2f; 3f-2f
  1382.         bcs    1f
  1383.         sob    r4,1b
  1384.         clr    r0
  1385.     1:
  1386.         sys    exit
  1387.     .data
  1388.     2:    <Merry Christmas\n\0>
  1389.     3:
  1390.  
  1391. Jim McKie    Mathematisch Centrum, Amsterdam        ....mcvax!jim
  1392.  
  1393. ==========================================================================
  1394.  
  1395. /*  PL/I  version.  ANS PL/I, subset G.   */
  1396.  
  1397. merry: proc options(main);
  1398.  
  1399. dcl i fixed binary;
  1400.  
  1401. do i = 1 to 15;
  1402.  
  1403.      put skip edit('Merry Christmas') (a);
  1404.  
  1405. end;
  1406.  
  1407. end merry;
  1408.  
  1409.                  --  chip elliott     ...decvax!dartvax!chip
  1410.  
  1411. ==========================================================================
  1412.  
  1413. /* PL/1 */
  1414.  
  1415. START: PROC OPTIONS(MAIN);
  1416. DCL I FIXED BINARY(15);  /* LONG FORM; SAME AS DCL I; */
  1417. DO I = 1 TO 15;
  1418.     PUT EDIT ("Merry Christmas");
  1419. END;
  1420. END START;
  1421.                                                         julie    
  1422.                 seismo!philabs!jah
  1423.  
  1424. ==========================================================================
  1425.  
  1426. /* PL/1 */
  1427.  
  1428. yule: proc options(main);
  1429.  
  1430. %numwish = '15';
  1431.  
  1432. do i = 1,numwish;
  1433.    put skip list('Merry Christmas');
  1434.    end;
  1435.  
  1436. end yule;
  1437.  
  1438.                     Jim Davies
  1439.                     {pur-ee parsec}!uiucdcs!uiuccsb!davies
  1440.  
  1441. ==========================================================================
  1442.  
  1443. /* Pr1me assembly */
  1444.  
  1445.          SEG
  1446.          RLIT
  1447.          SUBR   PRINT
  1448.  
  1449.          LINK
  1450. PRINT    ECB    START
  1451.  
  1452.          DYNM   COUNT
  1453.          PROC
  1454.  
  1455.  
  1456. START    LDA    =15
  1457.          STA    COUNT
  1458.  
  1459. START1   LDA    COUNT
  1460.          BEQ    DONE
  1461.          S1A
  1462.          STA    COUNT
  1463.  
  1464.          CALL   TNOU
  1465.          AP     =C'Merry Christmas',S
  1466.          AP     =15,SL
  1467.  
  1468.          JMP    START1
  1469.  
  1470. DONE     PRTN
  1471.          END
  1472.  
  1473.  
  1474. Jeff Lee
  1475. CSNet:    Jeff @ GATech        ARPA:    Jeff.GATech @ CSNet-Relay
  1476. uucp:    ...!{sb1,allegra,ut-ngp}!gatech!jeff ...!duke!mcnc!msdc!gatech!jeff
  1477.  
  1478. ==========================================================================
  1479.  
  1480. /* Prolog */
  1481.  
  1482.     hello(0) :- !.
  1483.     hello(N) :- M is N - 1, print("Merry Christmas"), hello(M), !.
  1484.     hello(15)!
  1485.  
  1486. (I'm just learning prolog, so my apologies if the style is wrong.)
  1487.  
  1488.                             Aloke Prabhakar
  1489.                             prabhaka@BERKELEY
  1490.                             ucbvax!prabhaka
  1491.  
  1492. ==========================================================================
  1493.  
  1494. /* Prolog */ 
  1495.  
  1496. wmc:- countmc(15).
  1497. countmc(0).
  1498. countmc(Count):- write('Merry Christmas'), nl, Ncnt is Count-1, countmc(Ncnt).
  1499.  
  1500.  
  1501.                     --Peter Borgwardt, U. of Minnesota
  1502.                       borgward.umn-cs@rand-relay
  1503.  
  1504. ==========================================================================
  1505.  
  1506. /* REVE */
  1507. (Equational-programming/term-rewriting system):
  1508.  
  1509. (Has no I/O.  This will look like
  1510.             merry_christmas(merry_christmas(...))
  1511. Also, to avoid having to specify 15 as the fifteenth successor of zero,
  1512. we define addition and multiplication.)
  1513.  
  1514.         (x + 0)     == x
  1515.         (x + s(y))  == (s(x) + y)
  1516.         (x * 0)     == 0
  1517.         (x * s(y))  == (x + (x * y))
  1518.         mc(s(0))    == merry_christmas
  1519.         mc(s(s(x))) == merry_christmas(mc(s(x)))
  1520.         
  1521.         mc( (s(s(s(0))) * s(s(s(s(s(0)))))) )
  1522.  
  1523.                     These languages courtesy of:
  1524.                         Pavel Curtis, Cornell
  1525.                         Mike Caplinger, Rice
  1526.  
  1527. ==========================================================================
  1528.  
  1529. /* *roff */
  1530.  
  1531. Well, the most natural choice for Merry Christmas is of course:
  1532.     V/N/T/DIT/roff.
  1533.  
  1534. This will print it on the standard output, It will give you an extra blank line,
  1535. sorry about that.
  1536.  
  1537.     .fp 1 MC
  1538.     .pl 1
  1539.     .nf
  1540.     .nr l 0 +1
  1541.     .de mm
  1542.     .if \\n+l=15 .rm mm
  1543.     Merry Christmas
  1544.     .mm
  1545.     ..
  1546.     .mm
  1547.  
  1548. The font MC is of course your local ``Merry Christmas font''; all the characters
  1549. are built from christmas trees.
  1550. If you don't want the extra newline you can use the error output:
  1551.  
  1552.     .de mm
  1553.     .if \\nk=14 .ab Merry Christmas
  1554.     .nr k +1
  1555.     .tm Merry Christmas
  1556.     .mm
  1557.     ..
  1558.     .mm
  1559.  
  1560. Of course, you loose the nice look of the MC font.
  1561.  
  1562. There are of course about a dozen other ways to use troff for this.
  1563.  
  1564.                 -- jaap akkerhuis (mcvax!jaap)
  1565.  
  1566. ==========================================================================
  1567.  
  1568. /* QC */
  1569.  
  1570. /*
  1571.  * This program is written in the language QC (quick & clean), a
  1572.  * descendant of QD (quick & dirty). Both languages were written by 
  1573.  * Chris Grey for 370/ systems runing MTS (a user-friendly operating
  1574.  * system).
  1575.  */
  1576. proc main():
  1577. int I;
  1578. extern printf;
  1579.   for I from 1 upto 15 do
  1580.         printf("Merry Christmas")
  1581.   od
  1582. corp
  1583.             ---From: seismo!cmcl2!floyd!ihnp4!alberta!stephen
  1584.  
  1585. ==========================================================================
  1586.  
  1587. /* sed script */
  1588.  
  1589. echo 'Mery Chistma' |
  1590. sed '
  1591.     s/\(..\)\(.\)\(....\)\(.\)\(.\)\(...\)/\1\2\2\3\2\4\5\6\5/
  1592.     h;G;G
  1593.     s/$/\
  1594. /
  1595.     s/.*/&&&&&/
  1596. '
  1597.             From: seismo!decvax!ucbvax!reed!phillips
  1598.  
  1599. ==========================================================================
  1600.  
  1601. /* SETL */
  1602. (Doesn't use any of the interesting features of the language):
  1603.  
  1604.         definef main();
  1605.             (1 <= forall i <= 15) print('Merry Christmas');
  1606.         end main;.
  1607.  
  1608.                     These languages courtesy of:
  1609.                         Pavel Curtis, Cornell
  1610.                         Mike Caplinger, Rice
  1611.  
  1612. ==========================================================================
  1613.  
  1614. /* XEROX sigma-7 assembler */
  1615. (running under CP-V)
  1616.  
  1617.     SYSTEM SIG7
  1618.     SYSTEM BPM
  1619.     REF M:LO
  1620. BUFR    TEXT 'MERRY CHRISTMAS'
  1621. START    LI,4 15
  1622.     M:WRITE M:LO,(BUF,BUFR),(SIZE,15)
  1623.     BDR,4 START+1
  1624.     M:EXIT
  1625.     END START
  1626.  
  1627. or, you can avoid loading the BPM macro's by doing your own FPT
  1628.  
  1629.     SYSTEM SIG7
  1630.     REF M:LO
  1631. BUFR    TEXT 'MERRY CHRISTMAS'
  1632. FPT    GEN,8,24 X'11',M:LO
  1633.     GEN,4,28 3,X'10'
  1634.     DATA BUFR
  1635.     DATA 15
  1636. START    LI,4 15
  1637.     CAL1,1 FPT
  1638.     BDR,4 START
  1639.     CAL1,9 1
  1640.     END START
  1641.  
  1642.                     Bob McQueer
  1643.                     druxt!mcq
  1644.  
  1645. ==========================================================================
  1646.  
  1647. /* Smalltalk-80 */
  1648.  
  1649.     output <- WriteStream on: (String new: 10).
  1650.     1 to 15 do: [
  1651.         output nextPutAll: 'Merry Christmas'.
  1652.         output cr
  1653.     ].
  1654.     output contents.
  1655.  
  1656. Select this from the screen and hit 'printIt', and out comes the message.
  1657.  
  1658.             From: seismo!decvax!ittvax!freb
  1659.  
  1660. ==========================================================================
  1661.  
  1662. /* Smalltalk-80 */
  1663.  
  1664.         merryChristmas: aStream
  1665.             "Prints 'Merry Christmas' on aStream 15 times."
  1666.             
  1667.             15 timesRepeat:
  1668.                 [aStream
  1669.                     nextPutAll: 'Merry Christmas';
  1670.                     cr
  1671.                 ]
  1672.                     These languages courtesy of:
  1673.                         Pavel Curtis, Cornell
  1674.                         Mike Caplinger, Rice
  1675.  
  1676. ==========================================================================
  1677.  
  1678. /* Snobol-3 */
  1679. (Snobol-4??  What's that?  We use Snobol-3 here.)
  1680.  
  1681. * S.D.S. TSS SNOBOL-3
  1682.           N = 1
  1683. LOOP      LOUT = 'MERRY CHRISTMAS'
  1684.           N = .LT(N,15) N + 1                        /S(LOOP)F(.EXIT)
  1685.  
  1686.             From: seismo!rochester!rocksvax!sunybcs!colonel
  1687.  
  1688. ==========================================================================
  1689.  
  1690. /* Snobol 4 */
  1691.  
  1692. * Snobol 4 version.  Not very elegant!
  1693. *
  1694. i = 1
  1695.  
  1696. a: output = 'Merry Christmas'
  1697.    i = i + 1
  1698.    le(i,15)    :s(a)
  1699.  
  1700.                   --  chip elliott     ...decvax!dartvax!chip
  1701.  
  1702. ==========================================================================
  1703.  
  1704. /* SPEED editor */
  1705.  
  1706. To print Merry Christmas 15 times using the SPEED editor from Data General
  1707. (SPEED is a TECO-like editor, $ will represent an escape character, ^D will
  1708. represent a control-D):
  1709.  
  1710. 15<iMerry Christmas
  1711. $>$#t$#k$h^D
  1712.                 Michael Meissner
  1713.                 Data General Corporation
  1714.                 ...{allegra, decvax!ittvax, rocky2}!datagen!mrm
  1715.  
  1716. ==========================================================================
  1717.  
  1718. /* SPL/3000 */
  1719.  
  1720. $Control Uslinit
  1721. Begin
  1722.  
  1723. Byte Array
  1724.    Msg (0:14) := "Merry Christmas";
  1725.  
  1726. Integer
  1727.    I;
  1728.  
  1729. Intrinsic
  1730.    Print, Terminate;
  1731.  
  1732. For I := 1 UNTIL 15 Do
  1733.    Print (Msg, -15, 0);        << 15 bytes, no CCTL >>
  1734.  
  1735. Terminate;
  1736.  
  1737. End.
  1738.  
  1739. From: seismo!harpo!ihnp4!clyde!akgua!emory!gatech!hope
  1740.  
  1741. ==========================================================================
  1742.  
  1743. /* Stage 2 */
  1744.  
  1745. #$#$0 (+-*/)
  1746. END#
  1747. $F0#
  1748. #
  1749. $#
  1750. $10$F7#
  1751. Merry Christmas$F15#
  1752. $F8#
  1753. ##
  1754. 15
  1755. END
  1756.  
  1757.             ---Written and Contributed by Tom Almy, Tektronix, Inc.
  1758.  
  1759. ==========================================================================
  1760.  
  1761. /* Stoic */
  1762. 15 0 DO "Merry Christmas&15&" MSG LOOP
  1763.  
  1764.             ---Written and Contributed by Tom Almy, Tektronix, Inc.
  1765.  
  1766. ==========================================================================
  1767.  
  1768. /* TECO */
  1769.  
  1770. 15<^AMerry Christmas
  1771. ^A>$$
  1772.  
  1773. (where '$' is an Escape, and ^A is a control-A)
  1774.  
  1775.         ---Written and Contributed by Tom Almy, Tektronix, Inc.
  1776.  
  1777. =======================================
  1778.  
  1779. /* TECO */
  1780. (Text Editor COrrector)
  1781.  
  1782. 15<^AMerry Christmas
  1783. ^A>$$
  1784.  
  1785. note: ^A is a Control A
  1786.       $ is an escape character
  1787.  
  1788. And a Happy New Year,
  1789.  
  1790.  
  1791.                 Rob Spray
  1792.  
  1793.                 Software Designer
  1794.  
  1795.                 US Mail:  Computer*Thought Corporation
  1796.                       1721 West Plano Parkway, Suite 125
  1797.                       Plano TX 75075
  1798.                 BellTel:  214-424-3511
  1799.                 ARPAnet:  ROB.CT@RAND-RELAY
  1800.                 uucp:     ... decvax!cornell!ctvax!rob
  1801.  
  1802. ==========================================================================
  1803.     
  1804. /* TECO */
  1805.  
  1806.     :IGMerry Christmas
  1807. $                !* Put string in Q-register G !
  1808.     15<:GG>$$        !* 15 Times, print it out !
  1809.  
  1810. The dollar signs represent ESCapes.
  1811.  
  1812.                 Merry Christmas!
  1813.                     David Kaufman
  1814.                     ...decvax!yale-comix!kaufman
  1815.     
  1816.  
  1817. ==========================================================================
  1818.  
  1819. /* TeX */
  1820. (Knuth's text formatting language, assuming presence of Plain.TeX macros):
  1821.  
  1822.         \def\mc#1{\ifnum #1>0 Merry Christmas\par
  1823.                   {\count0=#1\advance\count0 by-1\mc\count0}\fi}
  1824.         \mc{15}
  1825.  
  1826.                     These languages courtesy of:
  1827.                         Pavel Curtis, Cornell
  1828.                         Mike Caplinger, Rice
  1829.  
  1830. ==========================================================================
  1831.  
  1832. /* TRAC */
  1833.  
  1834. #(ds,Merry-Christmas,(#(eq,arg,0,,(#(PS,Merry Christmas(
  1835. ))#(Merry-Christmas,#(su,arg,1))))))'
  1836. #(ss,Merry-Christmas,arg)'
  1837. #(Merry-Christmas,15)'
  1838.  
  1839. Note: "TRAC" is a trademark of Rockford Research, Inc.
  1840.         ---Written and Contributed by Tom Almy, Tektronix, Inc.
  1841.  
  1842. ==========================================================================
  1843.  
  1844. /* TRAC */
  1845.  
  1846.         #(ds,merry,(#(eq,count,0,,((Merry Christmas
  1847.         )#(cl,merry,#(su,count,1))))))'
  1848.  
  1849.         #(ss,merry,count)'
  1850.  
  1851.         #(cl,merry,15)'
  1852.  
  1853. The TRAC language is a text- and macro-processing language reminiscent
  1854. of LISP.  The first command defines a function, the second marks "count"
  1855. as a dummy argument, the third calls the function.  The printing is done
  1856. by the command interpreter.
  1857.  
  1858.                    Andy Behrens
  1859.                    decvax!dartvax!andyb
  1860.  
  1861. ==========================================================================
  1862.  
  1863. /* TROFF */
  1864.  
  1865.         .de MC
  1866.         .nf
  1867.         .if \\$1>0 \{\
  1868.         Merry Christmas
  1869.         .nr x \\$1
  1870.         .nr x -1
  1871.         .MC \\nx \}
  1872.         ..
  1873.         .MC 15
  1874.  
  1875.                     These languages courtesy of:
  1876.                         Pavel Curtis, Cornell
  1877.                         Mike Caplinger, Rice
  1878.  
  1879. ==========================================================================
  1880.  
  1881. /* Turing */
  1882.  
  1883. ------
  1884. for : 1 .. 15
  1885.     put "Merry Christmas"
  1886. end for
  1887. ------
  1888.  
  1889. Stephen Perelgut    Computer Systems Research Group    University of Toronto
  1890.         Usenet:    {linus, ihnp4, allegra, decvax, floyd}!utcsrgv!perelgut
  1891.  
  1892. ==========================================================================
  1893.  
  1894. /* UL */
  1895.  
  1896. Here's one you probably wouldn't expect to get. It is Model204 User Language
  1897. (UL is a query/programming language for the M204 database system that
  1898. runs on IBM mainframes).
  1899.  
  1900. BEGIN
  1901. %A IF FIXED DP 0
  1902. 1. FOR %A FROM 1 TO 15
  1903.    PRINT 'MERRY CHRISTMAS'
  1904. 2. END
  1905.  
  1906. That's it!
  1907.                 Mickey Levine
  1908.                 decvax!cca!mickey
  1909.  
  1910. ==========================================================================
  1911.  
  1912. /* UNIX shell script */
  1913.  
  1914. echo "Merry Christmas" | sed -e 's/./Merry Christmas%/g' | tr % '\012'
  1915.  
  1916.                          Ben Hyde Intermetrics Inc.
  1917.  
  1918. ==========================================================================
  1919.  
  1920. /* Unix shell script (Bourne) */
  1921.  
  1922. COUNT=0
  1923. while test $COUNT -lt 15
  1924. do
  1925.     echo "Merry Christmas."
  1926.     COUNT=`expr $COUNT + 1`
  1927. done
  1928.  
  1929.             Ta!
  1930.  
  1931.             Dave Ihnat
  1932.             ihuxx!ignatz
  1933.  
  1934. ==========================================================================
  1935.  
  1936. /* VALGOL */
  1937.  
  1938. I didn't look closely, but I didn't see a submission in VALGOL.  Here is an
  1939. attempt, but I can't vouch for its correctness, since I don't know any valley
  1940. girls.  After all, I live in Washington, not California, and we're a little
  1941. behind the times up here.
  1942.  
  1943. Like, gag me with a Merry Christmas!
  1944. No Way! Merry Christmas!
  1945. Like, so totally Merry Christmas!
  1946. Barf me out with a Merry Christmas!
  1947. So gross! Merry Christmas!
  1948.  
  1949.  
  1950. I realize this is only five times, not fifteen, but you can multiprocess in
  1951. VALGOL.  Just get three valley girls and execute the above on each one.
  1952.  
  1953.             From: seismo!cornell!uw-beaver!ssc-vax!fluke!witters
  1954.  
  1955. ==========================================================================
  1956.  
  1957. /* VAX MACRO */
  1958. (VMS flavour...snicker)
  1959.  
  1960. ;
  1961. text:    .ascii    "Merry Christmas"    ; output text
  1962.     .byte    13,10            ; carriage control
  1963.     tlen     = . - text        ; text length
  1964. tty:    .ascid    "TT:"            ; logical name of current terminal
  1965. chan:    .blkw    1            ; storage for IO channel number
  1966.  
  1967.     .entry xmas,^M<r10>
  1968.     $ASSIGN_S    devnam=tty,chan=chan        ;get channel to terminal
  1969.     movl        #1,r10                ;initialize loop
  1970. loop:    $QIOW_S        chan=chan,func=#IO$_WRITELBLK,- ;dump the message
  1971.             P1=text,P2=#tlen
  1972.     aobleq        #15,r10,loop            ;15 times
  1973.     ret
  1974.     .end xmas
  1975.  
  1976.         From: seismo!decvax!microsof!ubc-vision!mprvaxa!tbray
  1977.  
  1978. ==========================================================================
  1979.  
  1980. /* Xerox Data Systems Metasymbol Assembler */    
  1981.  
  1982.          system       sig9
  1983.          system       bpm
  1984.          csect        1
  1985. message  text         'Merry Christmas'
  1986.          ref          m:lo
  1987. start    equ,0        $
  1988.          li,7         15
  1989. loop     equ,0        $
  1990.          m:write      m:lo,(buf,message),(size,15)
  1991.          bdr,7        loop
  1992.          m:exit      
  1993.          end          start
  1994.   
  1995.  
  1996.                                    Jon Bertoni
  1997.  
  1998. ==========================================================================
  1999.  
  2000. /*  XPL version.  (Defined in book "A Compiler Generator".)  */
  2001.  
  2002. dcl i fixed;
  2003.  
  2004. do i = 1 to 15;
  2005.  
  2006.      output = 'Merry Christmas';
  2007.  
  2008. end;
  2009.  
  2010.           --  chip elliott     ...decvax!dartvax!chip
  2011.  
  2012. ==========================================================================
  2013. -- 
  2014.  
  2015.                     Don Davis
  2016.                     JHU/APL
  2017.                 ...decvax!harpo!seismo!umcp-cs!aplvax!ded
  2018.                 ...rlgvax!cvl!umcp-cs!aplvax!ded
  2019.