home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / snobol / vanilla.arc / VINSIDE.SNO < prev    next >
Text File  |  1991-02-14  |  13KB  |  339 lines

  1. * VINSIDE.SNO
  2. * Produces an industry insider report,
  3. *   thus saving the cost and nuisance of reading
  4. *   Infoworld, PC Week, Microbytes, John Dvorak, etc.
  5. *
  6. * Written by Ed Quillen, Editor of "A SNOBOL's Chance."
  7. *
  8. * modified for Vanilla SNOBOL4 10/87 Dan Haney
  9. *
  10. * note: program size is very close to maximum for Vsnobol4
  11. *    and will not tolerate much modification/addition.
  12. *    Random number generation is highly textured because
  13. *    of integer limit of 32767.
  14. *
  15. * to run: SNOBOL4 VINSIDE
  16. *
  17.  
  18. * Set keywords
  19.  
  20.     &trim = 1
  21.     &anchor = 1
  22.     &maxlngth = 5000
  23.  
  24. * Define your arrays
  25.  
  26. * Blueboy is the I B M whatever
  27.  
  28.     blueboy = array('10')
  29.     blueboy[1] = 'official'
  30.     blueboy[2] = 'executive'
  31.     blueboy[3] = 'vice-president'
  32.     blueboy[4] = 'officer'
  33.     blueboy[5] = 'manager'
  34.     blueboy[6] = 'source'
  35.     blueboy[7] = 'consultant'
  36.     blueboy[8] = 'engineer'
  37.     blueboy[9] = 'vice-president'
  38.     blueboy[10] = 'vice-president'
  39.  
  40. * newspeak is verb for his statement
  41.  
  42.     newspeak = array('10')
  43.     newspeak[1] = 'confirmed'
  44.     newspeak[2] = 'denied'
  45.     newspeak[3] = 'refused to confirm or deny'
  46.     newspeak[4] = 'refused to comment on'
  47.     newspeak[5] = 'denied any knowledge of'
  48.     newspeak[6] = 'agreed that there might be some validity to'
  49.     newspeak[7] = 'denied'
  50.     newspeak[8] = 'been uncharacteristically forthright about'
  51.     newspeak[9] = 'taken the Fifth Amendment when asked about'
  52.     newspeak[10] = 'been involuntarily retired after prematurely confirming'
  53.  
  54. * hearsay is his statement
  55.  
  56.     hearsay = array('10')
  57.     hearsay[1] = 'reports'
  58.     hearsay[2] = 'an article in Tass'
  59.     hearsay[3] = 'industry rumors'
  60.     hearsay[4] = 'authoritative gossip'
  61.     hearsay[5] = 'unsubstantiated dispatches'
  62.     hearsay[6] = 'widespread speculation'
  63.     hearsay[7] = 'unofficial reports'
  64.     hearsay[8] = 'high-level rumors'
  65.     hearsay[9] = 'leaks from beta-testers'
  66.     hearsay[10] = 'informed conjectures'
  67.  
  68. * newstuff is the next product
  69.  
  70.     newstuff = array('10')
  71.     newstuff[1] = 'system'
  72.     newstuff[2] = 'architecture'
  73.     newstuff[3] = 'CPU'
  74.     newstuff[4] = 'system bus'
  75.     newstuff[5] = 'token-ring network'
  76.     newstuff[6] = 'local-area network'
  77.     newstuff[7] = 'entry-level product'
  78.     newstuff[8] = 'top-end workstation'
  79.     newstuff[9] = 'video display standard'
  80.     newstuff[10] = 'operating system'
  81.  
  82. * saywhat is an attribute of the new system
  83.  
  84.     saywhat = array('10')
  85.     saywhat[1] = 'be totally proprietary'
  86.     saywhat[2] = 'run under Microsoft Windows'
  87.     saywhat[3] = 'be based on the Intel 80486'
  88.     saywhat[4] = 'remain a closely-held secret until the end of the century'
  89.     saywhat[5] = 'be generally compatible with existing systems'
  90.     saywhat[6] = 'use a subset of the OS/360 instruction set'
  91.     saywhat[7] = 'employ scalar interrupts and extensive masked gate arrays'
  92.     saywhat[8] = 'be introduced in the near future'
  93.     saywhat[9] = 'have DB-15 connectors'
  94.     saywhat[10] = 'be produced by robots in Singapore'
  95.  
  96. * bluesite is where they're doing it
  97.  
  98.     bluesite = array('10')
  99.     bluesite[1] = 'a product suitability testing facility'
  100.     bluesite[2] = 'several gamma-test sites'
  101.     bluesite[3] = 'a national refuge for migrating data'
  102.     bluesite[4] = 'IRS offices'
  103.     bluesite[5] = 'proposed MX missile bases'
  104.     bluesite[6] = 'the corporate detention center for dress-code violators'
  105.     bluesite[7] = 'a detoxification clinic'
  106.     bluesite[8] = 'a number of Fortune 500 companies'
  107.     bluesite[9] = 'a toxic waste dump'
  108.     bluesite[10] = 'a maximum-security prison'
  109.  
  110. * bluecity is more where
  111.     bluecity = array('10')
  112.     bluecity[1] = ' on Three Mile Island'
  113.     bluecity[2] = ' in Armonk, N.Y.'
  114.     bluecity[3] = ' just above Boulder, Colo.'
  115.     bluecity[4] = ' in midtown Manhattan'
  116.     bluecity[5] = ' in beautiful downtown Burbank'
  117.     bluecity[6] = ' near Fargo, N.D.'
  118.     bluecity[7] = ' in the suburbs of Metetse, Wyo.'
  119.     bluecity[8] = ' in the Silicon Valley'
  120.     bluecity[9] = " between Cassini's Division and the Roche Limit"
  121.     bluecity[10] = ', formerly in Boca Raton until the company learned '
  122. +            'that "Boca Raton" means "Rat Mouth" in Spanish'
  123.  
  124.     morestuff = array('5')
  125.     morestuff[1] = 'further explanation'
  126.     morestuff[2] = 'detailed announcement'
  127.     morestuff[3] = 'specific details'
  128.     morestuff[4] = 'public statement'
  129.     morestuff[5] = 'voluntary confession'
  130.  
  131.     sayblue = array('7')
  132.     sayblue[1] = 'would be premature at this point in time'
  133.     sayblue[2] = 'would cause smaller companies to file for Chapter 11,'
  134. +            ' which would just get us in trouble again with the Antitrust Division'
  135. +            ' of the Justice Department'
  136.     sayblue[3] = 'would cost me my pension'
  137.     sayblue[4] = 'might give clone-makers information they should'
  138. +            ' not have access to'
  139.     sayblue[5] = 'could get me transferred to Anchorage'
  140.     sayblue[6] = 'will have to come from the M*A*S*H cast'
  141.     sayblue[7] = 'must come from a more authoritative source'
  142.  
  143.     bytehead = array('8')
  144.     bytehead[1] = 'observers'
  145.     bytehead[2] = 'analysts'
  146.     bytehead[3] = 'watchers'
  147.     bytehead[4] = 'spies'
  148.     bytehead[5] = 'followers'
  149.     bytehead[6] = 'observers'
  150.     bytehead[7] = 'analysts'
  151.     bytehead[8] = 'observers'
  152.  
  153.     goodsay = array('10')
  154.     goodsay[1] = 'the greatest thing since sliced bread'
  155.     goodsay[2] = 'something the industry has long needed'
  156.     goodsay[3] = 'an important and significant advancement'
  157.     goodsay[4] = 'one of the finest achievements of western civilization'
  158.     goodsay[5] = 'a seminal step, pregnant with fertile possibilities'
  159.     goodsay[6] = 'the best improvement since they quit using punch cards'
  160.     goodsay[7] = 'the reason why Big Blue continues to lead the way'
  161.     goodsay[8] = 'a colossal advancement in personal-computing power'
  162.     goodsay[9] = 'another reason why no one ever got fired for buying IBM'
  163.     goodsay[10] = 'the first manifestation of the next generation of personal computers'
  164.  
  165.     goodmore = array('10')
  166.     goodmore[1] = 'represents no major breakthrough'
  167.     goodmore[2] = 'contains no surprises'
  168.     goodmore[3] = 'employs an unusual huge interface known as the capybara'
  169.     goodmore[4] = 'requires an an EE to configure'
  170.     goodmore[5] = 'uses components yet to be invented'    
  171.     goodmore[6] = 'will work only with IBM peripherals'
  172.     goodmore[7] = 'requires a three-phase 37-hz 440-volt power supply'
  173.     goodmore[8] = 'blows up if connected to anything from a different manufacturer'
  174.     goodmore[9] = 'is compatible with Sidekick'
  175.     goodmore[10] = 'crashes at the slightest provocation'
  176.  
  177.     butmore = array('9')
  178.     butmore[1] = 'set a standard'
  179.     butmore[2] = 'be popular with MIS professionals'
  180.     butmore[3] = 'be what Lotus is to spreadsheets'
  181.     butmore[4] = 'move us into the next generation'
  182.     butmore[5] = 'give the other companies something to try to emulate'
  183.     butmore[6] = 'give the clone-makers fits for at least two months'
  184.     butmore[7] = 'carry on the tradition of reliability and service'
  185.     butmore[8] = "give Radar O'Reilly something besides a teddy bear to sleep with"
  186.     butmore[9] = 'require substantial additional purchases by users,'
  187. +            ' thus making IBM stock a good buy'
  188.  
  189.     badsay = array('10')
  190.     badsay[1] = 'William Gates, president of MicroSoft,'
  191.     badsay[2] = 'Phillipe Kahn of Borland International'
  192.     badsay[3] = 'Mitch Kaypor, formerly of Lotus Development Corp.,'
  193.     badsay[4] = 'Steve Jobs, a co-founder of Apple,'
  194.     badsay[5] = 'Gary Kildall, developer of CP/M,'
  195.     badsay[6] = 'Adam Osborne at Paperback Software'
  196.     badsay[7] = 'Bob Wallace, president of QuickSoft,'
  197.     badsay[8] = 'Esther Dyson, editor of Release 1.0,'
  198.     badsay[9] = 'Charles Babbage, conceptual founder of computing,'
  199.     badsay[10] = 'Lee Felsenstein, president of Golemics and designer of the Osborne I,'
  200.  
  201.     notgood = array('10')
  202.     notgood[1] = 'a disaster waiting to happen'
  203.     notgood[2] = 'a solution in search of a problem'
  204.     notgood[3] = 'another chiclet-key PC Jr.'
  205.     notgood[4] = "Big Blue's biggest blunder since the RISC machine"
  206.     notgood[5] = 'as big a step backwards as returning to paper tape storage'
  207.     notgood[6] = 'a titanic company finally hitting an iceberg'
  208.     notgood[7] = "the kind of thing you'd expect from some hackers"
  209. +            " in a garage, not from the world's biggest computer company"
  210.     notgood[8] = 'something that only defense contractors could afford'
  211.     notgood[9] = 'too much, too soon'
  212.     notgood[10] = 'the DP equivalent of herpes'
  213.  
  214.     addbad = array('10')
  215.     addbad[1] = 'Only IBM would try getting away with this'
  216.     addbad[2] = 'It will go over like a pregnant pole-vaulter'
  217.     addbad[3] = 'In two years, it will be as popular as ferrite core memory'
  218.     addbad[4] = 'You can bet nobody will try to clone this one'
  219.     addbad[5] = 'There are people starving on this planet, '
  220. +        "and yet we have expensive products like this.  That's disgusting"
  221.     addbad[6] = "They must be relying on the old saying "
  222. +            "that there's one born every minute"
  223.     addbad[7] = "I've heard it runs slower than a dBASE sort"
  224.     addbad[8] = 'Maybe they developed it for the Strategic Defense'
  225. +            " Initiative.  That's the only way it makes sense"
  226.     addbad[9] = "Perhaps it's only a stopgap until OS/2 is debugged"
  227.     addbad[10] = 'Only Big Blue would dare try anything like this'
  228.  
  229.     catname = array('2')
  230.     catname[1] = 'Mark Emmer, publisher'
  231.     catname[2] = 'Ed Quillen, editor'
  232.  
  233.     goodadj = array('10')
  234.     goodadj[1] = 'influential'
  235.     goodadj[2] = 'respected'
  236.     goodadj[3] = 'esteemed'
  237.     goodadj[4] = 'highly regarded'
  238.     goodadj[5] = 'popular'
  239.     goodadj[6] = 'noted'
  240.     goodadj[7] = "insiders'"
  241.     goodadj[8] = 'revered'
  242.     goodadj[9] = 'powerful'
  243.     goodadj[10] = 'innovative'
  244.  
  245.     badwarn = array('7')
  246.     badwarn[1] = "All these reports have about as much credibility "
  247. +            "as a White House spokesman"
  248.     badwarn[2] = "If these statements could be transformed into "
  249. +            "matter, we could go into the fertilizer business"
  250.     badwarn[3] = "If you believe any of this, come and see me.  "
  251. +            "I've got a bridge I'd like to sell you"
  252.     badwarn[4] = "Such speculation just proves the truth of the "
  253. +            "old saying, 'Garbage in, Garbage out'"
  254.     badwarn[5] = "This baseless gossip ought to contain a "
  255. +            "self-referential disclaimer"
  256.     badwarn[6] = "Utter fabrications like this ought to be an "
  257. +            "embarrassment to everyone involved.  Unfortunately, some people "
  258. +            "persist in circulating them"
  259.     badwarn[7] = "The circulation of such groundless rumors "
  260. +            "represents as good a reason as any for joining Ed Meese "
  261. +            "in his campaign to repeal the First Amendment"
  262.  
  263. *---------------------------------------------------------------
  264. * Extract a number from the date for a random number 'seed'.
  265. * Take modulus by 555 to prevent overflow in random generator.
  266. * i.e. 555 * 59 = 32765, near the max integer.
  267. *
  268.     date() len(8) . today len(7) len(2) . s1 len(1) len(2) . s2
  269.     seed = s1 s2
  270.     seed = remdr(seed,555)
  271. *----------------------------------------------- RANDOM
  272. * Define random function
  273.  
  274.     DEFINE('RANDOM(N)')
  275.     RAN_VAR = seed                :(RANDOM_END)
  276. RANDOM    RAN_VAR = REMDR(RAN_VAR * 59, 491)
  277.     RANDOM  = ((N * RAN_VAR) / 491) + 1    :(RETURN)
  278. RANDOM_END
  279.  
  280. *----------------------------------------------- JUSTIFY
  281. * Define output formatting function
  282. *  Simplistically breaks line after 65th character at next
  283. *  blank or hyphen.
  284.  
  285.     define('justify(s)')
  286.     just_pat = (len(65) break(' -') (span('-') | '')) . output
  287. +        (span(' ') | '')            :(justify_end)
  288. justify    s just_pat =                    :s(justify)
  289.     output = differ(s) s                :(return)
  290. justify_end
  291.  
  292. *------------------------------------------------ MAIN BODY
  293.  
  294.     boyblue = blueboy[random(10)]
  295.     speaknew = newspeak[random(10)]
  296.     sayhear = hearsay[random(10)]
  297.     stuffnew = newstuff[random(10)]
  298.     whatsay = saywhat[random(10)]
  299.     siteblue = bluesite[random(10)]
  300.     cityblue = bluecity[random(10)]
  301.     stuffmore = morestuff[random(5)]
  302.     bluesay = sayblue[random(7)]
  303.     headbyte = bytehead[random(8)]
  304.     saygood = goodsay[random(10)]
  305.     moregood = goodmore[random(10)]
  306.     morebut = butmore[random(9)]
  307.     saybad = badsay[random(10)]
  308.     goodnot = notgood[random(10)]
  309.     badadd = addbad[random(10)]
  310.     namecat = catname[random(2)]
  311.     adjgood = goodadj[random(10)]
  312.     warnbad = badwarn[random(7)]
  313.  
  314.     output(.output,6,5000)
  315.  
  316.     output = "           SPECIAL CATSPAW INSIDERS' REPORT FOR " today
  317.  
  318.     justify('     An IBM ' boyblue ' has ' speaknew ' ' sayhear
  319. +    " that the company's next personal-computer " stuffnew
  320. +    ' would ' whatsay '.  The ' boyblue ', who asked that his name '
  321. +    'not be used, did say that the ' stuffnew ' was under development at '
  322. +    siteblue cityblue ', but that any ' stuffmore ' "' bluesay '."')
  323.  
  324.     justify('     Industry ' headbyte "' reactions were generally "
  325. +    'favorable, with many calling the ' stuffnew ' "' saygood '."  '
  326. +    'Technically, the new product "' moregood '," one said, "but it will '
  327. +    morebut '."')
  328.  
  329.     justify('     However, there were some dissenters.  '
  330. +    saybad ' said it represented "' goodnot '," adding that "'
  331. +    badadd '."')
  332.  
  333.     justify('     ' namecat ' of the ' adjgood ' newsletter, '
  334. +    "A SNOBOL's Chance, cautioned that " '"' warnbad '."')
  335.  
  336.     output = 
  337.  
  338. end
  339.