<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0MFR3g6cCp7ImA9WhRVGEg.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623</id><updated>2012-01-17T20:03:36.618-08:00</updated><category term="resource list" /><category term="feeds" /><category term="OOREXX" /><category term="VMWare" /><category term="ODF" /><category term="translate" /><category term="Regina" /><category term="books" /><category term="tutorial" /><category term="small business" /><category term="XML" /><category term="netrexx" /><category term="Qemu" /><category term="advocacy" /><category term="file-handling" /><category term="Windows Server" /><category term="file date" /><category term="interpreter" /><category term="mail server" /><category term="software" /><category term="environment variables" /><category term="reference" /><category term="rot-13" /><category term="REXX" /><category term="SourceForge" /><category term="project" /><category term="blogging" /><category term="system commands" /><category term="database" /><title>Open Source REXX Blog</title><subtitle type="html">Learning REXX and using it to bring advanced technologies to smaller businesses that never had them before</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://rexxblog.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/OpenSourceRexxBlog" /><feedburner:info uri="opensourcerexxblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0MFR3g5cSp7ImA9WhRVGEg.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-8016299442565841252</id><published>2012-01-17T20:03:00.001-08:00</published><updated>2012-01-17T20:03:36.629-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-17T20:03:36.629-08:00</app:edited><title>Stop SOPA / PIPA</title><content type="html">For some time, the copyright abuse industries (primarily music and movies, but also newspaper and book publishers), have been plying politicians with campaign cash. Their objective has been to force everyone to continue paying them large sums of money. I haven't the time to find and link some of the stories of takedown notices against videos of toddlers dancing because of the music that was in the background or attempting to collect fees against auto repair shops if the music in the repair bays is audible in customer areas.&lt;br /&gt;
&lt;br /&gt;
Recently, many in the technology fields noticed that PIPA (Protect IP Act) and its twin SOPA (Stop Online Piracy Act) included some requirements that would completely break the Internet as we know it.&lt;br /&gt;
&lt;br /&gt;
I ask you, if you are a US citizen who is old enough to vote, to register and to contact your elected officials (your two senators and one representative, as well as the President) and urge them to prevent this from passing. Please remember to &lt;span class="Apple-style-span" style="background-color: #ffe599;"&gt;vote against anyone who supports these bills&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
Thank you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-8016299442565841252?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/OpenSourceRexxBlog?a=eIP2dfF20vA:a9QtsNW3loA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/OpenSourceRexxBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/OpenSourceRexxBlog?a=eIP2dfF20vA:a9QtsNW3loA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/OpenSourceRexxBlog?i=eIP2dfF20vA:a9QtsNW3loA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/eIP2dfF20vA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/8016299442565841252/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2012/01/stop-sopa-pipa.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/8016299442565841252?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/8016299442565841252?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/eIP2dfF20vA/stop-sopa-pipa.html" title="Stop SOPA / PIPA" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2012/01/stop-sopa-pipa.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcNQX84fCp7ImA9WxBbFEo.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-6828275019993808498</id><published>2010-03-13T00:48:00.001-08:00</published><updated>2010-03-13T00:48:10.134-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-13T00:48:10.134-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OOREXX" /><title>Starting Over: Rexx As Enhanced Shell Scripting</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;I can hardly believe that it has been over a year since my last posting. I spent 8 months in Missouri, working six days a week, ten to twelve-plus hours per day. Since Rexx is not allowed in my employer's work environment, that meant little or no time to even look at the language. On top of that, I'm very much a beginner with this language. This blog is sort of a way of recording my journey and showing others how to get somewhere with it. And, of course, the resources to pick up the language are sparse and getting sparser.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Even so, I haven't done all that I could to learn the language. My earlier attempts used Regina Rexx--in part, because it is available in the Ubuntu repositories--which actually follows the standard well enough so that most of the examples you'll find in books will work. The problem I found there is that the language itself is rather thin in some areas. This is understandable, because the language was designed from the beginning as glue, to take the available tools that already exist and to chain them together into something that provides desired functionality.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;As a cross-platform language, I really wanted something that was more WORA ("write once, run anywhere"). But I found that calling out to the environment necessarily involves platform-specific functionality that has to be rewritten whenever the platform changes. So this isn't the language I wanted, but I think it can still be useful, so let's try and find some uses for it, shall we?&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Assumptions&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;In order for this to work, I have to make some assumptions. So I'm going to assume that you're using a similar environment to mine:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;   &lt;li&gt;Operating system: Gnu+Linux, in particular, I'm running Xubuntu 9.10 64-bit. I'll probably be converting over to ArchLinux in a month or two. Whether you're on a Ubuntu-family OS, Mint, gNewSense, Arch, Debian, Mepis, Fedora, Mandriva, PCLinuxOS, or Suse, it should be pretty much the same.&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;The &lt;a target='_blank' href='http://netpbm.sourceforge.net/'&gt;NetPBM&lt;/a&gt; image toolkit package. This is available for various Unix-like operating systems, and also for Windows. It should be available through your distribution's packaging system or from &lt;a target='_blank' href='http://sourceforge.net/projects/netpbm/files/'&gt;SourceForge&lt;/a&gt;. The documentation is &lt;a target='_blank' href='http://netpbm.sourceforge.net/doc/'&gt;online&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;&lt;a target='_blank' href='http://www.oorexx.org/'&gt;ooRexx&lt;/a&gt;, the IBM-derived, object-oriented, open source version of the Rexx language. The current version is 4.0, available from your distribution's packaging system or from &lt;a target='_blank' href='http://sourceforge.net/projects/oorexx/'&gt;SourceForge&lt;/a&gt; The &lt;span style='font-family: monospace;'&gt;oorexx&lt;/span&gt; and &lt;span style='font-family: monospace;'&gt;oorexx-docs&lt;/span&gt; downloads are on &lt;a target='_blank' href='http://sourceforge.net/projects/oorexx/files/'&gt;this page&lt;/a&gt;. This could potentially work with Regina Rexx or another version, but this is what I'm using.&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;Your $PATH variable is set properly, so that the above software list is available on your path.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Task 1: E-Mail Protection&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;As we all know, there are software "bots" that scan the Web, looking for e-mail addresses to add to the spam targeting lists. Unless you like the flood of "male enhancement" and other spam and scam messages, your best bet is to find another way to put your e-mail address online.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Using NetPBM at the command line, we could do something like this: &lt;br /&gt;&lt;span style='background-color: lightblue; font-size: large;'&gt;&lt;code&gt;pbmtext "yourname@example.com" | pnmtopng &amp;gt;emailimage.png&lt;/code&gt;&lt;/span&gt;. But unless you use this often, you'll spend more time on NetPBM's doc site than you wish.&lt;/p&gt;&lt;br /&gt;&lt;div style='background-color: lightblue; font-size: large;'&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/rexx&lt;br /&gt;/* emailimage.rex - protect someone's e-mail from some spambots */&lt;br /&gt;/* copyright - none */&lt;br /&gt;/* sends pbmtext "yourname@example.com" | pnmtopng &amp;gt;emailimage.png to shell */&lt;br /&gt;&lt;br /&gt;say "Please enter your e-mail address."&lt;br /&gt;parse pull addr&lt;br /&gt;say "Please enter a name for the file."&lt;br /&gt;parse pull flnm&lt;br /&gt;&lt;br /&gt;outstring = "pbmtext " addr " | pnmtopng &amp;gt;" flnm ||".png"&lt;br /&gt;outstring&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;You should have a PNG file in the directory where you ran this script. You can upload it to a web site or find another place to use it. There are some other options which could be set. If you'd like to know more, read the docs for NetPBM.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I am hoping that this is the first of many little things that can help make your life a little easier. I don't currently own any Windows machines, so these examples might not work for Windows users. In particular, on non-Unix platforms, the first line (#!/usr/bin/rexx) should be removed.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class='scribefire-powered'&gt;Powered by &lt;a href='http://www.scribefire.com/'&gt;ScribeFire&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-6828275019993808498?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/OpenSourceRexxBlog?a=pG5_FoGkcc8:7fy4AV-LKkg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/OpenSourceRexxBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/OpenSourceRexxBlog?a=pG5_FoGkcc8:7fy4AV-LKkg:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/OpenSourceRexxBlog?i=pG5_FoGkcc8:7fy4AV-LKkg:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/pG5_FoGkcc8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/6828275019993808498/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2010/03/starting-over-rexx-as-enhanced-shell.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/6828275019993808498?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/6828275019993808498?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/pG5_FoGkcc8/starting-over-rexx-as-enhanced-shell.html" title="Starting Over: Rexx As Enhanced Shell Scripting" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2010/03/starting-over-rexx-as-enhanced-shell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcGRH4-fip7ImA9WxBbE04.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-6279779776123085553</id><published>2010-03-11T11:00:00.000-08:00</published><updated>2010-03-11T11:00:25.056-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-11T11:00:25.056-08:00</app:edited><title>Like Rexx? Consider Following Cosmogrammaticus</title><content type="html">If you're interested in the Rexx language, I would encourage you to follow Cosmogrammaticus: &lt;a href="http://cosmosgrammaticus.blogspot.com/"&gt;http://cosmosgrammaticus.blogspot.com/&lt;/a&gt; . He seems to be the person who is working on the Mac version of &lt;a href="http://www.oorexx.org/"&gt;ooRexx&lt;/a&gt;. (NOTE: The site seems to be down right now--issues with their name server.)&lt;br /&gt;
&lt;br /&gt;
I'm still interested in the language, but I'm very much a beginner with it, and finding that learning resources are slim. In addition, there are many times when I want to do something both on Linux and Windows, but most of the time (since Rexx does a lot of sending commands to the external environment), I wind up having to use platform-specific tools.&lt;br /&gt;
&lt;br /&gt;
So I would encourage you to add Cosmogrammaticus to Google Reader, RSS Owl, or RSS Bandit. He doesn't publish often, but when he does, it is deeper stuff than I write.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-6279779776123085553?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/OpenSourceRexxBlog?a=VlbpsYbAj-c:2GBW3qr9WMM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/OpenSourceRexxBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/OpenSourceRexxBlog?a=VlbpsYbAj-c:2GBW3qr9WMM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/OpenSourceRexxBlog?i=VlbpsYbAj-c:2GBW3qr9WMM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/VlbpsYbAj-c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/6279779776123085553/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2010/03/like-rexx-consider-following.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/6279779776123085553?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/6279779776123085553?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/VlbpsYbAj-c/like-rexx-consider-following.html" title="Like Rexx? Consider Following Cosmogrammaticus" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2010/03/like-rexx-consider-following.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcMRXk8eSp7ImA9WxVQFUk.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-6118919397350928099</id><published>2009-02-01T18:48:00.000-08:00</published><updated>2009-02-01T18:51:24.771-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-01T18:51:24.771-08:00</app:edited><title>NetREXX Going Open Source</title><content type="html">I guess I hadn't been to the &lt;a href="http://www.rexxla.org/"&gt;Rexx Language Ass'n's front page&lt;/a&gt; in a while. IBM announced in April 2008 that they wanted to open source NetRexx. RexxLA has been negotiating it with IBM. I'm looking forward to the announcement. Maybe NetRexx will begin to move closer to OORexx, toward a more or less unified object oriented version of the language.&lt;br /&gt;&lt;br /&gt;That is &lt;span style="font-style: italic;"&gt;great&lt;/span&gt; news!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-6118919397350928099?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=xwH8JWuI"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=BdFA9C0C"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=BdFA9C0C" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/T_UUZdT3hrk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/6118919397350928099/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2009/02/netrexx-going-open-source.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/6118919397350928099?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/6118919397350928099?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/T_UUZdT3hrk/netrexx-going-open-source.html" title="NetREXX Going Open Source" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2009/02/netrexx-going-open-source.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MESXs-fSp7ImA9WxdbE04.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-3410020937725364488</id><published>2008-08-09T18:23:00.001-07:00</published><updated>2008-08-09T18:23:28.555-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-09T18:23:28.555-07:00</app:edited><title>New Awakening, Thanks To OORexx</title><content type="html">&lt;h3 style="text-align: center; font-size: larger; font-weight: bolder;"&gt;Objects!&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In the past several months, I stopped posting much here. In part, it is because of my employment schedule. And in part, it is because many of the things I wanted to do with REXX required platform-specific calls to the system shell. If you are interested in doing things more or less cross-platform, this is a major killer. Additionally, there is no variety of Rexx on the acceptable software list for my employer, so I have little opportunity to do anything practical with it.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;On my main "road dog" laptop, which now runs Ubuntu Linux, &lt;a href="http://regina-rexx.sourceforge.net/" rel="external" target="_blank" title="Regina Rexx Interpreter" style="color: rgb(255, 0, 0);"&gt;Regina Rexx&lt;/a&gt; was installed from the Ubuntu repositories. I have since removed it and installed Open Object Rexx. My intention is to utilize only &lt;a href="http://www.oorexx.org/" rel="external" target="_blank" title="Open Object Rexx" style="color: rgb(255, 0, 0);"&gt;OORexx&lt;/a&gt; (and possibly &lt;a href="http://www-306.ibm.com/software/awdtools/netrexx/" rel="external" target="_blank" title="NetRexx Product Overview" style="color: rgb(255, 0, 0);"&gt;NetRexx&lt;/a&gt;, even though it appears to be abandoned) from here on out, because of additional functionality built into the language that is &lt;em&gt;not&lt;/em&gt; found in Regina or other standard Rexx interpreters. I want to emphasize that it is &lt;em&gt;not&lt;/em&gt; an indictment of Regina or other standard Rexx interpreters, but merely a reflection of my desire for &lt;abbr title="Write Once, Run Anywhere"&gt;WORA&lt;/abbr&gt; cross-platform scripts.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;One place where some version of Rexx might be useful is as a drop-in replacement for the somewhat ambiguously named &lt;a href="http://www.kixtart.org/" rel="external" target="_blank" title="Home of KiXtart" style="color: rgb(255, 0, 0);"&gt;KiXtart&lt;/a&gt;, a scripting language for Windows. However, most of my use of KiX is in automating software installation &amp;amp; configuration. KiX has support for editing the Windows registry, and is also a small, movable executable. For example, I might use KiX on a CD of software updates, as a kind of batch script on steroids. I am not yet seeing a case for building such a CD with Rexx instead, even if it was allowable in my workplace.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;One area where I have some amount of interest is file format transformations. In the workplace, it is common for one person to send data in MSOffice 2007 formats, while most others use MSOffice 2003 formats, and some use OpenDocument Format(ODF) or WordPerfect Office format. Occasionally, I even run into data in MSWorks format. There are also JPEG, GIF, PNG, SVG, and other image/graphics formats that one might want to transform between. There is little likelihood of my writing a full-featured transformation engine, whether in Rexx or in &amp;lt;insert shiny new language here&amp;gt;, but I do hope to do some minor transformations and to demonstrate them for others who are (like me) just starting on their Rexx journey.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This change has been a long time coming, but it was inspired by a situation I faced two years ago and again last year. A number of people that I dealt with had a common situation: they had a fairly large number of photographs taken over a period of several days that were dumped into their "My Pictures" folder. Inside that folder, they needed to find photos for particular dates or locations in order to associate those photos with content (reports, articles) they were writing. I found it particularly difficult even to find out how to obtain that information in Rexx, while I found it within the same day once I started researching how to accomplish the task in KiX. The biggest issue with KiX was that the solution as implemented was Windows-specific, and some of the need came from Linux users.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Actually, I installed and configured DigiKam for my Linux users, so that photo uploads are automatically placed in date-coded directories. Every couple of months, I manually move these into a &lt;code&gt;~/year/month&lt;/code&gt; hierarchy. (I am planning to write a script to do it and use &lt;code&gt;cron&lt;/code&gt; to run it monthly.)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Anyway, consider this a rebirth of interest in this blog and its subject matter. One of my interests is finding ways to use Rexx to automate repetitive tasks in a small business environment, alongside Python, Ruby, &lt;a href="http://www.rebol.com/" rel="external" target="_blank"&gt;REBOL&lt;/a&gt;, and so on. The &lt;a href="http://www.oorexx.org/docs/" rel="external" target="_blank"&gt;docs&lt;/a&gt; are becoming my friends. Also recommended: &lt;a href="http://www.amazon.com/gp/offer-listing/0137806515/ref=dp_olp_1/102-9914874-7996945" rel="external" target="_blank"&gt;The Rexx Language&lt;/a&gt; (TRL).&lt;/p&gt;&lt;div class="flockcredit" style="text-align: right; color: #CCC; font-size: x-small;"&gt;Blogged with the &lt;a href="http://www.flock.com/blogged-with-flock" style="color: #999; font-weight: bold;" target="_new" title="Flock Browser"&gt;Flock Browser&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-3410020937725364488?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=7Xw7zC5o"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=rTuGpgLT"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=rTuGpgLT" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/dXQGVOxOYCo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/3410020937725364488/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2008/08/new-awakening-thanks-to-oorexx.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/3410020937725364488?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/3410020937725364488?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/dXQGVOxOYCo/new-awakening-thanks-to-oorexx.html" title="New Awakening, Thanks To OORexx" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2008/08/new-awakening-thanks-to-oorexx.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IFRX88eip7ImA9WxZWFk4.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-187936666535456443</id><published>2008-03-15T18:38:00.001-07:00</published><updated>2008-03-15T18:38:34.172-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-15T18:38:34.172-07:00</app:edited><title>Love The One You're With</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;There is an old song by that name, with the message that you cannot always have your own way, so make do with what is available.&lt;br/&gt;&lt;br/&gt;In a lot of Windows environments, there is no way to use &lt;a href='http://regina-rexx.sourceforge.net/' target='_blank'&gt;Regina REXX&lt;/a&gt; or &lt;a href='http://www.oorexx.org/' target='_blank'&gt;OOREXX&lt;/a&gt;, because they are not installed. Instead, you may have to use &lt;a href='http://www.kixtart.org/' target='_blank'&gt;KiXtart&lt;/a&gt; or &lt;a href='http://msdn2.microsoft.com/en-us/library/ms950396.aspx' target='_blank'&gt;VBScript&lt;/a&gt;. If your environment does use &lt;a href='http://java.sun.com/' target='_blank'&gt;Java&lt;/a&gt;, try &lt;a href='http://www-306.ibm.com/software/awdtools/netrexx/' target='_blank'&gt;NetRexx&lt;/a&gt; as a way to use the &lt;a href='http://www.rexxla.org/' target='_blank'&gt;REXX&lt;/a&gt;-like syntax you like in a package that is approved by the organization.&lt;br/&gt;&lt;br/&gt;Too often, we beat our heads against the wall, trying to convince our upline supervisors that they should allow us to us something that we are already familiar with instead of the organization's approved toolset. I want you to know that you are very rarely going to convince management to listen to the employees.&lt;br/&gt;&lt;br/&gt;Instead, try to find ways to leverage your existing knowledge and skills with the approved toolset. Perhaps someone should re-implement NetRexx in .Net (C#) as a way to bring it into that environment also.&lt;br/&gt;&lt;br/&gt;This is a continuation of the ideas in "&lt;a href='http://rexxblog.blogspot.com/2008/01/use-what-you-can.html'&gt;Use What You Can&lt;/a&gt;".&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-187936666535456443?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=zNRSlK3k"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=Qgot9lkP"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=Qgot9lkP" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/yRJzN8tJjVs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/187936666535456443/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2008/03/love-one-you-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/187936666535456443?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/187936666535456443?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/yRJzN8tJjVs/love-one-you-with.html" title="Love The One You&amp;#39;re With" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2008/03/love-one-you-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MHQn05eip7ImA9WxZSF0g.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-1263460830384653246</id><published>2008-01-30T19:37:00.000-08:00</published><updated>2008-01-30T19:50:33.322-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-30T19:50:33.322-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="netrexx" /><title>Use What You Can</title><content type="html">Many times, we will have a preferred toolset, but be unable to utilize some or all of those tools in our employment environments. You may be thinking, "&lt;a href="http://lampjr.wordpress.com/2007/12/20/what-can-i-use/"&gt;What can I use in that situation?&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;The answer is clear: use what you can. You may have to use &lt;a href="http://www-306.ibm.com/software/awdtools/netrexx/"&gt;NetRexx&lt;/a&gt;, if other REXX versions are not on your company's approved list (but &lt;a href="http://java.sun.com/"&gt;Java&lt;/a&gt; is). Unfortunately, it looks like it has not been maintained for a while. Hopefully, its Java 1.2 ("Java 2") compatible output will still work correctly under Java 1.5/Java 1.6/Java 1.7 ("Java 5"/"Java 6"/"Java 7"), which is likely to be what you have in your environment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-1263460830384653246?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=cjtAr4a4"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=BZCfWvqn"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=BZCfWvqn" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/KatL4nLaQbI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/1263460830384653246/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2008/01/use-what-you-can.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/1263460830384653246?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/1263460830384653246?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/KatL4nLaQbI/use-what-you-can.html" title="Use What You Can" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2008/01/use-what-you-can.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEMQ3o6fip7ImA9WB9WFEk.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-7495816627190349240</id><published>2007-11-18T20:13:00.000-08:00</published><updated>2007-11-18T20:31:22.416-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-18T20:31:22.416-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blogging" /><title>Still Doing It</title><content type="html">Well, I never did &lt;a href="http://rexxblog.blogspot.com/2007/07/get-creation-or-modification-date-of.html"&gt;get the REXX version of that script done&lt;/a&gt;. The &lt;a href="http://www.kixtart.org/"&gt;KiXtart&lt;/a&gt; version does over 95% of what I needed to accomplish, so it is good enough. Where I may try to find more time for a REXX version is at home, where I have a non-Windows computer that is also the photo machine.&lt;br /&gt;&lt;br /&gt;I have been mostly running around in circles--work was crazy for a while and home always is--but what little bit of energy I have had has been directed toward Ruby and Python (specifically &lt;a href="http://www.jython.org/Project/index.html"&gt;Jython&lt;/a&gt; and &lt;a href="http://jruby.codehaus.org/"&gt;JRuby&lt;/a&gt;) and a little bit of Smalltalk (&lt;a href="http://www.squeak.org/"&gt;Squeak&lt;/a&gt;, &lt;a href="http://smalltalk.gnu.org/"&gt;GNU&lt;/a&gt;, and &lt;a href="http://www.cincomsmalltalk.com/userblogs/cincom/blogView"&gt;VisualWorks&lt;/a&gt;), with an occasional effort on &lt;a href="http://lampjr.wordpress.com/2007/08/09/use-kixtart-to-launch-installers/"&gt;a KiX script&lt;/a&gt; or &lt;a href="http://lampjr.wordpress.com/2007/10/23/kixtart-file-not-copied/"&gt;two&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you follow many blogs, you know that this is the normal occurrence--the blog's author has his or her own life outside of the Web, so there are some long periods with little or no activity. &lt;a href="http://www.diveintomark.org/"&gt;Some&lt;/a&gt; even quit blogging entirely for a while.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-7495816627190349240?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=9C7nTlKp"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=v6wcoQVE"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=v6wcoQVE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/__XA_FAFOeY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/7495816627190349240/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/11/still-doing-it.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/7495816627190349240?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/7495816627190349240?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/__XA_FAFOeY/still-doing-it.html" title="Still Doing It" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/11/still-doing-it.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAARHg8eSp7ImA9WB5QFk0.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-656607439862347174</id><published>2007-07-04T19:49:00.001-07:00</published><updated>2007-07-04T19:49:05.671-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-04T19:49:05.671-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><category scheme="http://www.blogger.com/atom/ns#" term="file date" /><title>Get Creation Or Modification Date Of A File</title><content type="html">After quite a long search, I finally found some standard Rexx functionality I've been looking for.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cosmosgrammaticus.blogspot.com/"&gt;Cosmogrammaticus&lt;/a&gt; mentioned before the lack of marketing for Rexx, and I've been thinking that it really shows in &lt;a href="http://cosmosgrammaticus.blogspot.com/2006/12/movement-of-thousand-hard-working-rexx.html"&gt;the lack of documentation and tutorials that are out there in easily-found places&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Anyway, in my main and alternate workplaces, there has been a continuing cry for a quick tool to sort JPEGs by date.&amp;nbsp; In both places, there are photos uploaded from HP cameras that need to be easily found by the date they were taken.&amp;nbsp; In some cases, a selection of these photos is inserted into a word processor or spreadsheet file (Word, Excel, OpenOffice Writer, OpenOffice Calc).&amp;nbsp; In other cases, a selection of these photos is sent alongside the word processor or spreadsheet file as e-mail attachments.&amp;nbsp; The common case is that there are a fairly large number of photos (but only a subset is actually used) with specific dates being tied to specific events or locations that are the subject of the accompanying documents.&lt;br /&gt;&lt;br /&gt;In an all-Windows environment, I finally implemented &lt;a href="http://lampjr.wordpress.com/2007/06/10/kix-sorting-files-by-date/"&gt;a KiXtart version of this functionality&lt;/a&gt;.&amp;nbsp; This article is the basis for doing something similar with Rexx.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/env rexx&lt;br /&gt;/* If not using Linux or Unix, delete these first two lines. */&lt;br /&gt;/* filedate.rex: displays the file creation or modification date */&lt;br /&gt;&lt;br /&gt;parse arg targetfile&lt;br /&gt;if targetfile = "" then do&lt;br /&gt;   call usage&lt;br /&gt;end&lt;br /&gt;else do&lt;br /&gt;   filedate = stream(targetfile, 'c', 'QUERY TIMESTAMP')&lt;br /&gt;   say "The file" targetfile " was last modified " filedate&lt;br /&gt;   /* See http://www.rexxla.org/About_Rexx/mfc/datec.html */&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;/* trap execution so error message does not show */&lt;br /&gt;exit&lt;br /&gt;&lt;br /&gt;usage:&lt;br /&gt;say "Usage: rexx filedate.rex filename"&lt;br /&gt;return&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I was quite surprised to find this, because I've searched through my books and searched online tutorials for a few months looking for this.  Then, suddenly, here it is right in front of my eyes.&amp;nbsp; To use this, open a terminal and type &lt;code&gt;rexx filedate.rex &amp;lt;filename&amp;gt;&lt;/code&gt; and it will display the date for that file.  Replace the filename in angle brackets with the file you are interested in (skip the angle brackets, too).&lt;br /&gt;&lt;br /&gt;This is the kind of thing that we want to be able to whip up fairly quickly in response to the needs of our users.&lt;br /&gt;&lt;br /&gt;Depending on the schedule and events, I should get a usable version of the sort-JPEGs-by-date script up shortly.&lt;p style="text-align: right; font-size: 8px"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-656607439862347174?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=etpteKja"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=Oyvah08S"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=Oyvah08S" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/oUSOUCS-_9g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/656607439862347174/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/07/get-creation-or-modification-date-of.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/656607439862347174?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/656607439862347174?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/oUSOUCS-_9g/get-creation-or-modification-date-of.html" title="Get Creation Or Modification Date Of A File" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/07/get-creation-or-modification-date-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ABR305fCp7ImA9WBFUF0Q.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-8397978512971655919</id><published>2007-04-28T12:59:00.000-07:00</published><updated>2007-04-28T14:29:16.324-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-04-28T14:29:16.324-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="feeds" /><category scheme="http://www.blogger.com/atom/ns#" term="blogging" /><title>I'm Working On It ...</title><content type="html">Just to let you know, I have not completely abandoned this blog.  Although there is a good chance that I might move its contents to my own domain soon, I have not yet made that decision.&lt;br /&gt;&lt;br /&gt;There are a couple of postings that are in the composition stage, but which might take a while to complete.  Get &lt;a href="http://feeds.feedburner.com/OpenSourceRexxBlog"&gt;the feed&lt;/a&gt; from Feedburner if you want to catch them when they are up. This way, you'll still catch them if I move the blog off of Blogger.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-8397978512971655919?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=gHgjIN6b"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=ZirBFtU1"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=ZirBFtU1" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/GMEoT-AwBfU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/8397978512971655919/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/04/im-working-on-it.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/8397978512971655919?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/8397978512971655919?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/GMEoT-AwBfU/im-working-on-it.html" title="I'm Working On It ..." /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/04/im-working-on-it.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFQns4fyp7ImA9WBFQFUU.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-3800607752400287622</id><published>2007-03-10T18:14:00.001-08:00</published><updated>2007-03-10T18:36:53.537-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-10T18:36:53.537-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><category scheme="http://www.blogger.com/atom/ns#" term="file-handling" /><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><title>Finally, Files</title><content type="html">&lt;p&gt;I know. It has been a long time.&lt;/p&gt;  &lt;p&gt;Let's move quickly on to files.  This information is available in Down To Earth REXX, by Bill Schindler.&lt;br/&gt; &lt;/p&gt;  &lt;p&gt;Some new keywords:&lt;/p&gt;  &lt;ul&gt; &lt;li&gt;DIRECTORY() -- used for retrieving the current directory and for changing to another directory. Will return a value, which will litter the screen if you do not have a variable to hold it.&lt;br/&gt; &lt;/li&gt; &lt;li&gt;LINEIN() -- used to read one line from a file or from the standard input stream if a filename is not specified. Returns the data (contents) of that line.&lt;br/&gt; &lt;/li&gt; &lt;li&gt;LINEOUT() -- used to write one line to a file or to the standard output stream if a filename is not specified. Returns a code indicating success or failure of the write, which will litter the screen if you do not have a variable to hold it.&lt;br/&gt; &lt;/li&gt; &lt;li&gt;CHARIN() -- used to read one character from a file or from the standard input stream if a filename is not specified. Returns the data (content) of that character. I am not certain that REXX implementations are Unicode-aware. This means that it may be possible that CHARIN() gets only a portion of a multi-byte character.&lt;br/&gt; &lt;/li&gt; &lt;li&gt;CHAROUT() -- used to write one character to a file or to the standard output stream if a filename is not specified. Returns a code indicating the success or failure of the write, which will litter the screen if you do not have a variable to hold it. As with CHARIN(), I am not certain whether CHAROUT() is able to handle multi-byte characters.&lt;br/&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Like most computer languages, REXX views input and output as sequences of bytes or characters flowing in or out of the system. These are what are called &lt;i&gt;streams&lt;/i&gt;. The standard output stream is usually directed to the screen or console. The standard input stream is usually derived from the keyboard. Either stream can be &lt;i&gt;redirected&lt;/i&gt; to or from another location, such as a file.&lt;br/&gt; &lt;/p&gt;  &lt;p&gt;These are your basic functions for dealing with files. A simple example:&lt;br/&gt; &lt;/p&gt;  &lt;p style="font-family: monospace;"&gt;&lt;CODE&gt;#!/usr/bin/rexx&lt;br/&gt; /* If not using Unix or Linux, remove these first two lines. */&lt;br/&gt; /* filetest1a.rex: Just a simple demonstration of using files. */&lt;br/&gt; /* We take a user-entered name and save it to a file. */&lt;br/&gt; cur_dir = DIRECTORY()&lt;br/&gt; new_dir = DIRECTORY('./data/')&lt;br/&gt; &lt;br/&gt; SAY 'Enter a name: '&lt;br/&gt; PULL aname /* NOTE: Will capitalize the name. */&lt;br/&gt; rc = LINEOUT('afile.txt', aname)&lt;br/&gt; /* Notice: we did not have to "declare" a file or a filetype.&lt;br/&gt;  * Nor did we have to worry about "file handles".&lt;br/&gt;  * With REXX, you usually can write to the file and it will be created if&lt;br/&gt;  * it does not exist.&lt;br/&gt;  */&lt;br/&gt; SAY 'We stored the name' aname 'in file afile.txt.'&lt;br/&gt; newdir = DIRECTORY(cur_dir)&lt;br/&gt; EXIT&lt;/CODE&gt;&lt;/p&gt;  &lt;br/&gt; &lt;p&gt;This example accepts some information from the user and stores it in a file.  If you use this, be aware that it expects there to be a subdirectory named 'data'. This example could easily be made better: the line &lt;CODE&gt;rc = LINEOUT('afile.txt', aname)&lt;/CODE&gt; appends the information to  the file if it already exists. In this case, the companion script &lt;strong&gt;only reads the first line of the file&lt;/strong&gt;, so we should change it to &lt;CODE&gt;rc = LINEOUT('afile.txt', aname, 1)&lt;/CODE&gt; &lt;br/&gt; &lt;/p&gt;  &lt;p&gt;Like the *OUT() functions above, DIRECTORY() returns either the current directory or a return code, depending on how you use it. It is advisable to place that value in a variable, so that the screen does not fill with error or diagnostic messages.&lt;/p&gt;  &lt;p style="font-family: monospace;"&gt;&lt;CODE&gt;#!/usr/bin/rexx&lt;br/&gt; /* If not using Unix or Linux, remove these first two lines. */&lt;br/&gt; /* filetest1b.rex: Just a simple demonstration of using files. */&lt;br/&gt; cur_dir = DIRECTORY()&lt;br/&gt; new_dir = DIRECTORY('./data/')&lt;br/&gt; &lt;br/&gt; aname = LINEIN('afile.txt')&lt;br/&gt; SAY 'Name stored in file afile.txt:' aname&lt;br/&gt; new_dir = DIRECTORY(cur_dir)    &lt;br/&gt; EXIT&lt;/CODE&gt;&lt;/p&gt;  &lt;p&gt;This is the companion to the first script. We change into the data subdirectory, read the first line of a file, and display that line on the screen. I want to mention that both of these were written on Linux.  The line that says &lt;CODE&gt;new_dir = DIRECTORY('./data/')&lt;/CODE&gt; might need to have the slashes changed into the system &lt;i&gt;path separator&lt;/i&gt; for your operating system, such as backslashes on Windows.&lt;/p&gt;  &lt;p&gt;These are trivial and useless examples, but they exist so that you can follow along at home, building your own working and useful projects out of these pieces.&lt;br/&gt; &lt;/p&gt;  &lt;!-- technorati tags begin --&gt;&lt;p style="font-size:10px;text-align:right;"&gt;technorati tags:&lt;a href="http://technorati.com/tag/REXX" rel="tag"&gt;REXX&lt;/a&gt;, &lt;a href="http://technorati.com/tag/file-handling" rel="tag"&gt;file-handling&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;p style="text-align: right; font-size: 8px"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-3800607752400287622?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=2ivPO4B9"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=0E2AWEua"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=0E2AWEua" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/ppvi1D2kHSg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/3800607752400287622/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/03/finally-files.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/3800607752400287622?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/3800607752400287622?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/ppvi1D2kHSg/finally-files.html" title="Finally, Files" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/03/finally-files.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4BSHsyfCp7ImA9WBFQFE8.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-5979293495788878814</id><published>2007-03-08T23:05:00.001-08:00</published><updated>2007-03-08T23:05:59.594-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-08T23:05:59.594-08:00</app:edited><title>Linux Zone Features REXX Text Processing</title><content type="html">&lt;p&gt;&lt;br /&gt;This article is not new, but I wanted to mention it anyway.  &lt;a target='_blank' title='Text processing in REXX' href='http://gnosis.cx/publish/programming/rexx.html'&gt;http://gnosis.cx/publish/programming/rexx.html&lt;/a&gt;  discusses using REXX's built-in string processing functions to help perform text processing.  This could be used, for example, to pull information from one or more text files to create summary reports.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The example that comes to mind is of a VOIP switch (which routes telephone calls across the Internet in order to give the company more control over its costs and reliability and quality of service).  Many of them have a serial cable that enables them to give logging information to a computer.  Using some software to receive this data stream and produce a daily log file, one could have a REXX script that goes through that file each day to produce a report of incoming versus outgoing, long versus short, call totals, and call average.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;One could probably do something like this using standard Unix utilities like sed and awk, or probably even easier in REXX or Perl or Python or Ruby. &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;We are about to cover some file-handling, and then we'll want to try and develop a simple text-file processing script in REXX. &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div style='font-size:88%' id='wtmb_tags'&gt;&lt;p&gt;Tags: &lt;a rel='tag' href='http://technorati.com/tag/REXX'&gt;REXX&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-5979293495788878814?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=JAwbTydp"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=sfbtjj2g"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=sfbtjj2g" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/oAvHb94TA08" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/5979293495788878814/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/03/linux-zone-features-rexx-text.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/5979293495788878814?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/5979293495788878814?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/oAvHb94TA08/linux-zone-features-rexx-text.html" title="Linux Zone Features REXX Text Processing" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/03/linux-zone-features-rexx-text.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UASHs7fSp7ImA9WBFSFEw.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-8811113841735352442</id><published>2007-02-13T18:13:00.001-08:00</published><updated>2007-02-13T18:14:09.505-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-02-13T18:14:09.505-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><title>Keyboard Input</title><content type="html">&lt;p&gt;Like most programming and scripting languages, REXX looks at input and output as &lt;i&gt;streams&lt;/i&gt;, or sequences of characters coming in or going out of the script.  Input can be things like typing at a keyboard, reading a file, or downloading from a remote server.  Output can be things like displaying on the screen, or saving to a file, or even uploading to a remote server or client.&lt;/p&gt;  &lt;p&gt;The traditional model for a simple program is INPUT, PROCESS, OUTPUT.  We talked about &lt;a target="_blank" href="http://rexxblog.blogspot.com/2007/01/screen-output-in-rexx.html"&gt;screen output&lt;/a&gt; already.  Today we are discussing keyboard input.&lt;/p&gt;  &lt;p&gt;In REXX, we can use:&lt;/p&gt;  &lt;ul&gt; &lt;li&gt;PULL - takes user-entered data up to the first ENTER character.  This input is converted to all upper case.  Remember that REXX started on mainframes back when most data was upper case. It is then assigned to a variable.&lt;/li&gt; &lt;li&gt;PARSE PULL - same as PULL, except it leaves things in the original case.&lt;/li&gt; &lt;/ul&gt; &lt;code&gt;#!/usr/bin/rexx&lt;br /&gt;/* If not using Linux or Unix, remove these top two lines. */&lt;br /&gt;/* pull-example.rex : simply shows how pull works. */&lt;br /&gt;SAY "What is your name?"&lt;br /&gt;PULL username&lt;br /&gt;SAY "What is your address?"&lt;br /&gt;PARSE PULL whereulive&lt;br /&gt;SAY "Your name is" username&lt;br /&gt;SAY "Your address is" whereulive&lt;br /&gt;EXIT&lt;br /&gt;&lt;/code&gt;&lt;p&gt;If you type this in and save it as "pull-example.rex", you can test these things out.  You will see that your name will always be fully-capitalized, while your address will keep the same upper and lower case that you enter.&lt;/p&gt;  &lt;p&gt;In this case, we did no processing, merely spit the data back out at the user.  We did not even make sure our data was clean (no unexpected input that could have negative effects on what our scripts do).&lt;/p&gt;  &lt;p&gt;I encourage you to experiment with keyboard input and screen output in your REXX scripts.  Be aware that you will soon tire of having to enter the same data repeatedly.  This means that it is time for us to cover files soon. &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Until next time, remember to practice REXX daily and you will soon find yourself figuring out how to do things you never thought possible.&lt;br /&gt;&lt;/p&gt;  &lt;!-- technorati tags begin --&gt;&lt;p style="font-size: 10px; text-align: right;"&gt;technorati tags:&lt;a href="http://technorati.com/tag/REXX" rel="tag"&gt;REXX&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;p style="text-align: right; font-size: 8px;"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-8811113841735352442?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=LDwXFBS9"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=CEp8GCZI"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=CEp8GCZI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/vGgxyo2ZoPg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/8811113841735352442/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/02/keyboard-input.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/8811113841735352442?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/8811113841735352442?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/vGgxyo2ZoPg/keyboard-input.html" title="Keyboard Input" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/02/keyboard-input.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8CQH8zfyp7ImA9WBFTEU4.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-1815520817574916534</id><published>2007-02-11T20:04:00.000-08:00</published><updated>2007-01-29T22:17:41.187-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-29T22:17:41.187-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><title>Time Off</title><content type="html">I am posting a little less frequently right now.  There are a few reasons.  I have a total of four blogs, two on Blogger, two on WordPress.  Since the dashboard on WordPress is several orders of magnitude better than what is available with Blogger, I tend to spend more time and energy over there, even to the point of considering moving these two over there.&lt;br /&gt;&lt;br /&gt;Also, I am running into some tasks with REXX that I haven't yet learned to perform.  For example, I wanted to take a directory of JPEGs and sort them by date, creating a new subdirectory for each date and putting the photos in the appropriate directory.  However, I have not yet found how to get the date with REXX.  Creating the directories would generally take a call to the operating system.&lt;br /&gt;&lt;br /&gt;On the other hand, with &lt;a href="http://lampjr.wordpress.com/" target="_blank" title="my LAMPJR blog"&gt;REBOL&lt;/a&gt;, it appears to be much simpler.  I have not yet found out how to get the date information in REBOL either, but if I do, there will be another project around the house that goes to another language (Perl, Java, Python, REBOL, Squeak SmallTalk, Pascal, ...) because I didn't have time to figure out how to do it with REXX.&lt;br /&gt;&lt;br /&gt;I am not giving up on REXX.  I have already committed myself to finish some things that I have started.  However, I may be less active for a month or two.  I'll still post as I learn more, but I'm busy trying to learn REXX, REBOL, Squeak, and Italian at the same time.  I also want to move on to learning more about Open Object REXX.  I feel that it is likely to have more built-in functionality that I'm having trouble finding in standard REXX.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-1815520817574916534?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=8JnSaYny"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=Du7HAtKh"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=Du7HAtKh" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/Mtgva8K4s5I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/1815520817574916534/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/02/time-off.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/1815520817574916534?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/1815520817574916534?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/Mtgva8K4s5I/time-off.html" title="Time Off" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/02/time-off.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8CQHw4eip7ImA9WBFTEU4.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-2015923602536859461</id><published>2007-01-29T22:02:00.001-08:00</published><updated>2007-01-29T22:17:41.232-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-29T22:17:41.232-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="environment variables" /><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><category scheme="http://www.blogger.com/atom/ns#" term="system commands" /><title>REXX &amp; System Commands</title><content type="html">&lt;p&gt;Chapter 6 of &lt;i&gt;Down To Earth REXX&lt;/i&gt;, by Bill Schindler, discusses executing system (OS/2 in this case) commands from your REXX scripts.  Essentially, REXX passes anything it does not understand to the operating system's command interpreter.  However, it is possible to confuse the REXX interpreter or to have it send the command in a manner that confuses the shell (command.exe, cmd.exe, bash, sh, csh, or whatever).  In order to prevent this, he recommends that all commands be enclosed in quotation marks, either "double quotes" or 'single quotes'.&lt;/p&gt;  &lt;p&gt;This is a good book, even if it is focused on OS/2.  I would recommend its &lt;a href="http://www.amazon.com/Down-Earth-Rexx-Software-Guides/dp/0967759005/sr=8-1/qid=1170135066/ref=sr_1_1/002-9181568-3196005?ie=UTF8&amp;amp;s=books" target="_blank"&gt;purchase&lt;/a&gt;.  I do not have an Amazon store, so I don't get any money off of it, but the book is solid.&lt;/p&gt;  &lt;p&gt;In chapter 6, there are a few ways to access system information:&lt;/p&gt;  &lt;ul&gt; &lt;li&gt;DIRECTORY(): returns the current working directory; to change directories, use DIRECTORY(&lt;i&gt;'dirname&lt;/i&gt;'), where dirname is the name of the desired directory.&lt;/li&gt; &lt;li&gt;SETLOCAL: saves the current directory and some environment settings. I thought it was an OS/2-only thing, but it works (sometimes) in Linux also.&lt;/li&gt; &lt;li&gt;ENDLOCAL: returns to the latest values saved by SETLOCAL.  &lt;br/&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;I was struggling with one REXX script, where I kept trying to get it to use a data file in a separate directory.  &lt;CODE&gt;'cd ./data'&lt;/CODE&gt; would not work reliably.  Now I know why: there is a way built into REXX to do this.&lt;/p&gt;  &lt;p&gt;One thing that  you probably do not want to do (in real life, as opposed to teaching yourself how to use REXX) is use REXX to convert existing batch files &amp;amp; shell scripts, unless you are adding some functionality to them.  Unix / Linux shell scripts, for example, have a great number of tools that they can access directly, where REXX would be likely to call the shell to execute the same tool and possibly require a work-around to get the results back into your script.  Batch files (DOS, OS/2, or Windows), on the other hand, are much less powerful.  REXX may indeed be a viable tool to replace some batch files, although it might be better to use &lt;a href="http://www.kixtart.org/index.asp" target="_blank"&gt;KiXtart&lt;/a&gt; for this.  KiXtart documentation is available from &lt;a href="http://www.scriptlogic.com/kixtart/" target="_blank"&gt;ScriptLogic&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Stay tuned.  There is more to come... :-)&lt;br/&gt; &lt;/p&gt;  &lt;!-- technorati tags begin --&gt;&lt;p style="font-size:10px;text-align:right;"&gt;technorati tags:&lt;a href="http://technorati.com/tag/REXX" rel="tag"&gt;REXX&lt;/a&gt;, &lt;a href="http://technorati.com/tag/books" rel="tag"&gt;books&lt;/a&gt;, &lt;a href="http://technorati.com/tag/scripting" rel="tag"&gt;scripting&lt;/a&gt;, &lt;a href="http://technorati.com/tag/system%2Bcommands" rel="tag"&gt;system+commands&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;p style="text-align: right; font-size: 8px"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-2015923602536859461?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=MWJQRcNe"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=7DacSP4Y"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=7DacSP4Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/AUUwLOSU_hU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/2015923602536859461/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/01/rexx-system-commands.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/2015923602536859461?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/2015923602536859461?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/AUUwLOSU_hU/rexx-system-commands.html" title="REXX &amp;amp; System Commands" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/01/rexx-system-commands.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIMRXg6cSp7ImA9WBFTEU4.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-420825481233900286</id><published>2007-01-29T21:22:00.000-08:00</published><updated>2007-01-29T21:23:04.619-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-29T21:23:04.619-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><category scheme="http://www.blogger.com/atom/ns#" term="ODF" /><title>REXX Plux XML and ODF</title><content type="html">Using REXX With The Free OpenOffice.org Office Applications Suite And With XML Files&lt;br /&gt;&lt;br /&gt;We are going to do a lot of basic stuff before this actually gets posted, but I'm starting on this now, in December of 2006, so that I have a clear objective in hand.&lt;br /&gt;&lt;br /&gt;Essentially, whether you are using Regina REXX or Open Object REXX, you will want to get the following (this assumes that you are using Windows, but we will also do this with Linux):&lt;br /&gt;&lt;br /&gt;* REXX interpreter&lt;br /&gt;* RexxXML, from http://home.interlog.com/~ptjm/rexxxml100.zip&lt;br /&gt;* RexxTrans from http://sourceforge.net/project/showfiles.php?group_id=30841&lt;br /&gt;* The following packages:&lt;br /&gt;   http://www.zlatkovic.com/pub/libxml/libxml2-2.6.26.win32.zip&lt;br /&gt;   http://www.zlatkovic.com/pub/libxml/libxslt-1.1.17.win32.zip&lt;br /&gt;   http://www.zlatkovic.com/pub/libxml/iconv-1.9.2.win32.zip&lt;br /&gt;   http://www.zlatkovic.com/pub/libxml/zlib-1.2.3.win32.zip &lt;br /&gt;&lt;br /&gt;All of the DLLs from these packages need to be in a directory in your PATH.  What I did was log in with administrator rights and create a directory C:\lib\ and put them there, then right-click on My Computer on your desktop, select Properties and find the page where it has a button labelled "Environment Variables".  Add that directory to the end of the PATH variable, separating it with a semi-colon (;) from the preceding PATH segment.&lt;br /&gt;&lt;br /&gt;For some of the other things we will attempt, I would suggest that you download this PDF: http://wi.wu-wien.ac.at/rgf/diplomarbeiten/Seminararbeiten/2006s_wu/20060628_BSF4RexxSnippets_version_4.pdf and the code examples for the PDF: http://wi.wu-wien.ac.at/rgf/diplomarbeiten/Seminararbeiten/2006s_wu/20060628_BSF4RexxSnippets_code.zip&lt;br /&gt;&lt;br /&gt;By the way, I got this information from a post by Salvador Parra Camacho, http://groups.google.co.uk/group/comp.lang.rexx/browse_thread/thread/515489f2e835fe70/563f17db4f438fe5 .  There is a wealth of information available on the Web, with some additional information sometimes available on other parts of the Internet (e.g., Usenet Newsgroups and the occasional gopher site).&lt;br /&gt;&lt;br /&gt;If you are using Linux (or another Unix-like operating system), you should be able to get zlib, libxml2, and libxslt from your distribution repositories, if they are not already present.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-420825481233900286?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=VCbYE5Lk"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=NxB6NUFe"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=NxB6NUFe" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/wlooiCPNGjw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/420825481233900286/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2006/12/rexx-plux-xml-and-odf.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/420825481233900286?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/420825481233900286?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/wlooiCPNGjw/rexx-plux-xml-and-odf.html" title="REXX Plux XML and ODF" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2006/12/rexx-plux-xml-and-odf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EDRn0zeCp7ImA9WBBaGUk.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-7010851546897833051</id><published>2007-01-27T16:54:00.001-08:00</published><updated>2007-01-27T16:54:37.380-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-27T16:54:37.380-08:00</app:edited><title>REXX Expressions &amp;amp; Operators</title><content type="html">&lt;p&gt;We need to &lt;strong&gt;do something&lt;/strong&gt; with our REXX scripts. The way we do this is with &lt;a href="http://www.kilowattsoftware.com/tutorial/rexx/Expression.htm" target="_blank"&gt;expressions&lt;/a&gt; and &lt;a href="http://www.kilowattsoftware.com/tutorial/rexx/OperatorPrecedence.htm" target="_blank"&gt;operators&lt;/a&gt;. For example, we frequently need the script to remember a value for later reuse.  In algebra, we might say a = 7.   In REXX, we do almost the same thing: dishesWashed = 7.&lt;/p&gt;  &lt;p&gt;These examples were both &lt;i&gt;variable assignment&lt;/i&gt;.  We took a value and said we wanted to store it in a &lt;i&gt;variable&lt;/i&gt;.  A variable is named that because its value can vary. In each case above, the variable holds a value of 7.  One difference between variables in algebra and variables in REXX is REXX variables work out to being code-names for particular spots in the computer's memory.  We never have to know that the variable banana is found at the corner of Main Street and I Avenue--the computer takes care of all that for us.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.kilowattsoftware.com/tutorial/rexx/" target="_blank"&gt;The Kilowatt Software REXX tutorial's&lt;/a&gt; page on expressions has some examples and discussion that is helpful.  When you are learning REXX, I suggest that you start out by having the tutorial site open while you work.  This is what I have been doing.&lt;/p&gt;  &lt;p&gt;In algebra, operator precedence is frequently described by using "My Dear Aunt Sally".  This is a memory aid to teach you that multiplication goes before division (actually, they are of equal precedence), followed by addition and subtraction (again, addition and subtraction are actually of equal precedence).  In REXX, the algebraic precedence is only part of the full precedence chain.&lt;/p&gt;  &lt;p&gt;Kilowatt's tutorial tells us that "prefix operators" (such as + [positive], - [negative] and the two ways of entering the NOT operator ¬ and \), are followed by the power (exponent) operator, followed by multiplication and division, followed by addition and subtraction, followed by concatenation (taking two pieces of data and forming one long text string out of them), followed by comparison, followed by the AND operator, followed by the OR operators.  All this means is that if an expression contains more than one of these operators, the work will be performed by doing the highest precedence operations first (from left to right), then dropping to the next level of precedence.  Parentheses [( and )] can be used to change the order, since whatever is inside of parentheses goes before any of the operators.&lt;/p&gt;  &lt;p&gt;I do not know if I made it clear.  Just remember, when you took algebra, there was a certain order that you did operations in, so that consistent results could be obtained.  REXX's operations follow a similar order, for the same reason.  If they didn't do this, we could have different results to an expression, depending on whether we were using &lt;a href="http://www.oorexx.org/" target="_blank"&gt;Open Object REXX&lt;/a&gt;, &lt;a href="http://regina-rexx.sourceforge.net/" target="_blank"&gt;Regina&lt;/a&gt;, or &lt;a href="http://www.kilowattsoftware.com/rooPage.htm" target="_blank"&gt;ROO&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I encourage you to walk through this tutorial, trying out different ways to use expressions and operators.  Use &lt;a target="_blank" href="http://rexxblog.blogspot.com/2007/01/screen-output-in-rexx.html"&gt;the SAY instruction&lt;/a&gt; to see what your results are.&lt;br/&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-7010851546897833051?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=GJp1vnVe"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=u79m03DN"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=u79m03DN" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/9FuwaIr21Dw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/7010851546897833051/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/01/rexx-expressions-operators.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/7010851546897833051?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/7010851546897833051?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/9FuwaIr21Dw/rexx-expressions-operators.html" title="REXX Expressions &amp;amp;amp; Operators" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/01/rexx-expressions-operators.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EFSH0yeyp7ImA9WBBaFkQ.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-2078036818364508661</id><published>2007-01-24T20:32:00.000-08:00</published><updated>2007-01-24T20:33:39.393-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-24T20:33:39.393-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><title>Screen Output In REXX</title><content type="html">&lt;h3&gt;Screen Output&lt;/h3&gt;&lt;br /&gt;&lt;h4&gt;The SAY Instruction&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;Your REXX script will usually display some sort of output on the screen. &amp;nbsp;For that purpose, REXX provides the &lt;code&gt;SAY&lt;/code&gt; instruction. &amp;nbsp;Like other REXX instructions, &lt;code&gt;SAY&lt;/code&gt; can be written in either upper or lower case or any mixture of the two. &amp;nbsp;Both because of the mainframe heritage of this language and because of readability (it makes it easier to see the instructions).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;An example:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* REXX Example: say-example.rex*/&lt;br /&gt;/* Display values */&lt;br /&gt;SAY "I love purple dinosaurs."&lt;br /&gt;SAY 99&lt;br /&gt;arthur = "Banana flavored yoghurt with chocolate sprinkes is my favorite food."&lt;br /&gt;SAY arthur&lt;br /&gt;EXIT&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Save that as say-example.rex. &amp;nbsp;Then open a command window and navigate to the directory where you saved it. &amp;nbsp;Enter &lt;code&gt;rexx say-example.rex&lt;/code&gt; to see the output.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;I love purple dinosaurs.&lt;br /&gt;99&lt;br /&gt;Banana flavored yoghurt with chocolate sprinkes is my favorite food.&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;REXX treats all data as strings of characters, which makes it very simple to display something on the screen with REXX. &amp;nbsp;On the third line, we have a literal string (meaning that we literally told it what to use). &amp;nbsp;The next line is a literal string as well, even though it is really a number.  The next two lines have a variable that is assigned a string, and then we use &lt;code&gt;SAY&lt;/code&gt; to display &lt;em&gt;the contents of the variable&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For more information about the &lt;code&gt;SAY&lt;/code&gt; instruction, take a look at &lt;a href="http://www.kilowattsoftware.com/tutorial/rexx/Say.htm" target="_blank" title="say tutorial"&gt;the Kilowatt tutorial&amp;apos;s page on the &lt;code&gt;SAY&lt;/code&gt; instruction.&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-2078036818364508661?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=edHx3dmg"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=5aY2Jf9w"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=5aY2Jf9w" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/A7n_KzZOz7A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/2078036818364508661/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/01/screen-output-in-rexx.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/2078036818364508661?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/2078036818364508661?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/A7n_KzZOz7A/screen-output-in-rexx.html" title="Screen Output In REXX" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/01/screen-output-in-rexx.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUFR3w_fCp7ImA9WBBaFk8.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-1474764502855888624</id><published>2007-01-23T23:11:00.000-08:00</published><updated>2007-01-23T23:20:16.244-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-23T23:20:16.244-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><category scheme="http://www.blogger.com/atom/ns#" term="rot-13" /><category scheme="http://www.blogger.com/atom/ns#" term="translate" /><title>Simple Example</title><content type="html">&lt;code&gt;&lt;br /&gt;#!/usr/bin/rexx&lt;br /&gt;/* If you are not using Unix or Linux, delete these first two lines */&lt;br /&gt;/* rot-13.rex : kid-strength obfuscation */&lt;br /&gt;/* based on a book example */&lt;br /&gt;&lt;br /&gt;SAY "Enter a word or phrase to transform:"&lt;br /&gt;PULL unencr&lt;br /&gt;&lt;br /&gt;preTrans =  'ABCDEFGHIJKLMNOPQRSTUVWXYZ'&lt;br /&gt;postTrans = 'NOPQRSTUVWXYZABCDEFGHIJKLM'&lt;br /&gt;&lt;br /&gt;SAY 'Here it is in ROT-13:' TRANSLATE( unencr, preTrans, postTrans)&lt;br /&gt;&lt;br /&gt;EXIT&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;p&gt;This simple example does kid-strength obfuscation. &amp;nbsp;Don't use it for anything serious. &amp;nbsp;Enjoy it!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The &lt;tt&gt;SAY&lt;/tt&gt; instruction displays a message on the screen. &amp;nbsp;&lt;tt&gt;PULL&lt;/tt&gt; takes input from the keyboard and changes it to uppercase. &amp;nbsp;&lt;tt&gt;unencr&lt;/tt&gt;, &lt;tt&gt;preTrans&lt;/tt&gt;, and &lt;tt&gt;postTrans&lt;/tt&gt; are &lt;em&gt;variables&lt;/em&gt;, which are used to hold information or values in the computer&amp;apos;s memory, pretty much like in Algebra class. &amp;nbsp;Finally, &lt;tt&gt;TRANSLATE()&lt;/tt&gt; is a text string transformation function. &amp;nbsp;It takes a text string (one or more text characters), and substitutes anything in it that is found in &lt;tt&gt;preTrans&lt;/tt&gt; with the corresponding character in &lt;tt&gt;postTrans&lt;/tt&gt;. &amp;nbsp;These names are not magical, so you can use different names.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Some of my earlier posts tell where you can obtain REXX for your platform, in case you do not have it installed already.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-1474764502855888624?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=e6aoPzCt"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=CICSve96"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=CICSve96" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/YJqCNqa7h14" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/1474764502855888624/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/01/simple-example.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/1474764502855888624?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/1474764502855888624?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/YJqCNqa7h14/simple-example.html" title="Simple Example" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/01/simple-example.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ANRHc6fyp7ImA9WBBbE08.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-8601213541856259454</id><published>2007-01-08T22:54:00.000-08:00</published><updated>2007-01-08T22:56:35.917-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-08T22:56:35.917-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><title>Variables In REXX</title><content type="html">&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;&lt;br /&gt;  &lt;style type="text/css"&gt;&lt;br /&gt;   &lt;!--&lt;br /&gt;#toc,&lt;br /&gt;.toc,&lt;br /&gt;.mw-warning {&lt;br /&gt; border: 1px solid #aaa;&lt;br /&gt; background-color: #f9f9f9;&lt;br /&gt; padding: 5px;&lt;br /&gt; font-size: 95%;&lt;br /&gt;}&lt;br /&gt;#toc h2,&lt;br /&gt;.toc h2 {&lt;br /&gt; display: inline;&lt;br /&gt; border: none;&lt;br /&gt; padding: 0;&lt;br /&gt; font-size: 100%;&lt;br /&gt; font-weight: bold;&lt;br /&gt;}&lt;br /&gt;#toc #toctitle,&lt;br /&gt;.toc #toctitle,&lt;br /&gt;#toc .toctitle,&lt;br /&gt;.toc .toctitle {&lt;br /&gt; text-align: center;&lt;br /&gt;}&lt;br /&gt;#toc ul,&lt;br /&gt;.toc ul {&lt;br /&gt; list-style-type: none;&lt;br /&gt; list-style-image: none;&lt;br /&gt; margin-left: 0;&lt;br /&gt; padding-left: 0;&lt;br /&gt; text-align: left;&lt;br /&gt;}&lt;br /&gt;#toc ul ul,&lt;br /&gt;.toc ul ul {&lt;br /&gt; margin: 0 0 0 2em;&lt;br /&gt;}&lt;br /&gt;#toc .toctoggle,&lt;br /&gt;.toc .toctoggle {&lt;br /&gt; font-size: 94%;&lt;br /&gt;}@media print, projection, embossed {&lt;br /&gt; body {&lt;br /&gt;  padding-top:1in;&lt;br /&gt;  padding-bottom:1in;&lt;br /&gt;  padding-left:1in;&lt;br /&gt;  padding-right:1in;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;body {&lt;br /&gt; font-family:'Times New Roman';&lt;br /&gt; color:#000000;&lt;br /&gt; widows:2;&lt;br /&gt; font-style:normal;&lt;br /&gt; text-indent:0in;&lt;br /&gt; font-variant:normal;&lt;br /&gt; font-size:12pt;&lt;br /&gt; text-decoration:none;&lt;br /&gt; font-weight:normal;&lt;br /&gt; text-align:left;&lt;br /&gt;}&lt;br /&gt;table {&lt;br /&gt;}&lt;br /&gt;td {&lt;br /&gt; border-collapse:collapse;&lt;br /&gt; text-align:left;&lt;br /&gt; vertical-align:top;&lt;br /&gt;}&lt;br /&gt;p, h1, h2, h3, li {&lt;br /&gt; color:#000000;&lt;br /&gt; font-family:'Times New Roman';&lt;br /&gt; font-size:12pt;&lt;br /&gt; text-align:left;&lt;br /&gt; vertical-align:normal;&lt;br /&gt;}&lt;br /&gt;h2 {&lt;br /&gt; font-family:'Arial';&lt;br /&gt; font-size:14pt;&lt;br /&gt; font-weight:bold;&lt;br /&gt; margin-bottom:3pt;&lt;br /&gt; margin-top:22pt;&lt;br /&gt; page-break-after:avoid;&lt;br /&gt;}&lt;br /&gt;h3 {&lt;br /&gt; font-family:'Arial';&lt;br /&gt; font-weight:bold;&lt;br /&gt; margin-bottom:3pt;&lt;br /&gt; margin-top:22pt;&lt;br /&gt; page-break-after:avoid;&lt;br /&gt;}&lt;br /&gt;     --&gt;&lt;br /&gt;  &lt;/style&gt;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;  &lt;div&gt;&lt;br /&gt;   &lt;h2 id="AbiTOC0__" style="text-align:center"&gt;Variables In REXX&lt;/h2&gt;&lt;br /&gt;   &lt;h3 id="AbiTOC1__"&gt;Variable Names&lt;/h3&gt;&lt;br /&gt;   &lt;p&gt;&lt;span xml:lang="en-US" lang="en-US"&gt;Since REXX allows the use of multiple-character names for variables, all variables should have names that describe their use and purpose. &amp;nbsp;In &lt;/span&gt;&lt;span style="font-style:italic" xml:lang="en-US" lang="en-US"&gt;Down To Earth REXX&lt;/span&gt;&lt;span xml:lang="en-US" lang="en-US"&gt;, Bill Schindler writes, "Variable names like &lt;/span&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;x1&lt;/span&gt;&lt;span xml:lang="en-US" lang="en-US"&gt; and &lt;/span&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;cc&lt;/span&gt;&lt;span xml:lang="en-US" lang="en-US"&gt; are easy to type, but hard to understand."&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span style="font-style:italic"&gt;Characters Allowed In Variable Names&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;ul&gt;&lt;br /&gt;    &lt;li&gt;&lt;span xml:lang="en-US" lang="en-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;span xml:lang="en-US" lang="en-US"&gt;Letters A to Z, upper or lower case, can be used in any position within a variable name.&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;&lt;span xml:lang="en-US" lang="en-US"&gt; Numerals 0 to 9 can be used in any position except for the first character within a variable name.&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;&lt;span xml:lang="en-US" lang="en-US"&gt;&amp;nbsp;Special characters _ (underscore), ! (exclamation mark),&amp;nbsp;and ?&amp;nbsp;(question mark) can be used in any position within a variable name, but should not be used as the first character of a variable name.&lt;/span&gt;    &lt;/li&gt;&lt;br /&gt;   &lt;/ul&gt;&lt;br /&gt;   &lt;p&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span style="font-style:italic" xml:lang="en-US" lang="en-US"&gt;REXX Keywords&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span xml:lang="en-US" lang="en-US"&gt;REXX keywords may be used as variable names. &amp;nbsp;The interpreter is usually able to tell whether you mean the keyword or the variable by the way you use it. &amp;nbsp;However, this is confusing and likely to cause programming errors, so it should be avoided.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;/p&gt;&lt;br /&gt;   &lt;h3 id="AbiTOC2__"&gt;Datatypes&lt;/h3&gt;&lt;br /&gt;   &lt;p&gt;&lt;span xml:lang="en-US" lang="en-US"&gt;REXX variables really have one main datatype, the character string. &amp;nbsp;However, based on the content of the variable, REXX can use the value differently. &amp;nbsp;The &lt;/span&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;datatype()&lt;/span&gt;&lt;span xml:lang="en-US" lang="en-US"&gt; function allows us to see whether a value can be used the way we wish. &amp;nbsp;One way to use datatype is this:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;PARSE ARG myVariable .&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;IF&amp;nbsp;DATATYPE(myVariable) = 'NUM' THEN DO&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* whatever we are going to do here */&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;END&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span xml:lang="en-US" lang="en-US"&gt;One good thing about this single type is that we can do things like this:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;var1 = "1"&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;var2 = "2"&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;var3 = var1 || var2&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;var4 = var1 + var2&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;SAY var3&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span style="font-family:'Courier New'" xml:lang="en-US" lang="en-US"&gt;SAY var4&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;/p&gt;&lt;br /&gt;   &lt;h3 id="AbiTOC3__"&gt;Compound Variables&lt;/h3&gt;&lt;br /&gt;   &lt;p&gt;&lt;span xml:lang="en-US" lang="en-US"&gt;Classic REXX does not have traditional arrays, hashes, dictionaries, lists, or associative arrays. &amp;nbsp;Instead, REXX compound variables are a totally different concept, that is often hard to wrap your mind around. &amp;nbsp;A REXX compound consists of a stem (which is a variable name with a period at the end) and a leaf or tail (a variable name that is appended to the stem). &amp;nbsp;It allows REXX to combine much of the functionality of the above structures into one single type.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;span xml:lang="en-US" lang="en-US"&gt;The book mentioned above, together with Howard Fosdick's book and Michael Cowlishaw's book are a good way to start out on the REXX road.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;   &lt;p&gt;&lt;/p&gt;&lt;br /&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-8601213541856259454?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=BwpOZ0cV"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=OmQndqp8"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=OmQndqp8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/BiLI7hWh1DY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/8601213541856259454/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/01/variables-in-rexx.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/8601213541856259454?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/8601213541856259454?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/BiLI7hWh1DY/variables-in-rexx.html" title="Variables In REXX" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/01/variables-in-rexx.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUBQ3s6fSp7ImA9WBBbEUg.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-8146333555839553294</id><published>2007-01-06T21:57:00.000-08:00</published><updated>2007-01-06T22:44:12.515-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-06T22:44:12.515-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><category scheme="http://www.blogger.com/atom/ns#" term="advocacy" /><title>REXX Experience and Advocacy</title><content type="html">&lt;p&gt;&lt;a href="http://cosmosgrammaticus.blogspot.com/2006/12/movement-of-thousand-hard-working-rexx.html" target="_blank" title="OOREXX and NetRexx struggling for recognition"&gt;Cosmogrammticus.rexx&lt;/a&gt; discusses how REXX is unappreciated, but at least the OO and Net variants actually have superceded some things, such as stem variables and requiring the use of &amp;apos;expose&amp;apos; to enable variables to pass to procedures. &amp;nbsp;I am still new to the whole REXX language, but I am already starting to see where some might get the idea that REXX is obsolete.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Is REXX obsolete? &amp;nbsp;I wouldn&amp;apos;t say that. &amp;nbsp;Instead, I would say that it offers unique capabilities that can come in handy in certain situations. &amp;nbsp;Having said this, I also recognize that I am still new to the whole REXX thing, while GR most likely has decades of experience with it. &amp;nbsp;I will definitely keep my eyes on his blog.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Unlimited Numeric Precision, Correct handling of decimal numbers, Trace, Parse. Macro support for applications. Metaprogramming, meta classes, builtin Concurrency.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Did you see all the features that REXX has that many of the other dynamic &amp;quot;scripting&amp;quot; languages lack? &amp;nbsp;I&amp;apos;ll be adding &lt;a href="http://cosmosgrammaticus.blogspot.com/index.html" target="_blank" title="Grammaticus.Rexx"&gt;him&lt;/a&gt; to my Blogroll.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-8146333555839553294?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=dbPFzGVC"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=wPSFh6GJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=wPSFh6GJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/hHGEKsxtQdw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/8146333555839553294/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/01/rexx-experience-and-advocacy.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/8146333555839553294?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/8146333555839553294?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/hHGEKsxtQdw/rexx-experience-and-advocacy.html" title="REXX Experience and Advocacy" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/01/rexx-experience-and-advocacy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYEQX87eSp7ImA9WBBUGU4.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-1963460670988206815</id><published>2007-01-04T10:11:00.000-08:00</published><updated>2007-01-04T10:41:40.101-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-04T10:41:40.101-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><category scheme="http://www.blogger.com/atom/ns#" term="Regina" /><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="OOREXX" /><title>Begin At The Beginning</title><content type="html">The traditional beginner's program in any programming language is the "hello, world!" program.  We will start with that one:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/rexx&lt;br /&gt;/* If you are not using Linux or Unix, delete the first line */&lt;br /&gt;/* hello.rex:  A traditional "hello, world" program for REXX */&lt;br /&gt;&lt;br /&gt;SAY "Hello, world!"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Let me point out that many of these will be done in a Linux environment, where the first line above will use features that are not present in DOS, OS/2, Windows, or other environments.  Therefore, if you are not using Linux or Unix, remove the line that begins with &amp;apos;#!/usr/bin/rexx&amp;apos;. &amp;nbsp;If your REXX interpreter is in a different location, change the line to reflect its location on your system. &amp;nbsp;(I believe Regina installs to &lt;code&gt;/bin/rexx&lt;/code&gt; and &lt;code&gt;/bin/regina&lt;/code&gt;.) &amp;nbsp;You can launch the above script like this: &lt;code&gt;rexx hello.rex&lt;/code&gt;, using a command window and changing into the directory where your script is stored, assuming that your system can find REXX.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This can be pretty boring, so let&amp;apos;s add a little something to it:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/rexx&lt;br /&gt;/* If you are not using Linux or Unix, delete the first line */&lt;br /&gt;/* hello2.rex:  A traditional "hello, world" program for REXX */&lt;br /&gt;arg username .&lt;br /&gt;&lt;br /&gt;IF username = "" THEN&lt;br /&gt;DO&lt;br /&gt;   username = "O Mysterious One Who Did Not Tell Me Your Name"&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;SAY "Hello, world!"&lt;br /&gt;SAY "Hello," username"."&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can launch this one the same way as the first one: &lt;code&gt;rexx hello2.rex&lt;/code&gt;. &amp;nbsp;Your second try, do it this way: &lt;code&gt;rexx hello2.rex Eduardo&lt;/code&gt;. &amp;nbsp;Try it out!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, it turns out that this one used a variable, which it filled with something you typed on the command line. &amp;nbsp;We will cover command line arguments in a future installment, but here is an example of how variables work:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/rexx&lt;br /&gt;/* Be sure to remove the first line if you are not using Linux or Unix. */&lt;br /&gt;/* varexample.rex: Some examples of what a variable is like in REXX. */&lt;br /&gt;&lt;br /&gt;/* Undeclared variables have a default value: the variable name in &lt;br /&gt;   UPPERCASE                                                        */&lt;br /&gt;SAY "Uninitialized variable 'uninitialized' has the value:" uninitialized&lt;br /&gt;&lt;br /&gt;numeric = 1&lt;br /&gt;SAY "Numeric variable initialized with 'numeric = 1' has the value:" numeric&lt;br /&gt;SAY&lt;br /&gt;&lt;br /&gt;textstring = "Do you see this?"&lt;br /&gt;SAY "Text string variable initialized with ""textstring = 'Do you see this?'"""&lt;br /&gt;SAY&lt;br /&gt;&lt;br /&gt;SAY "Uninitialized compound variable 'stem1.tail' has the value:" stem1.tail&lt;br /&gt;SAY&lt;br /&gt;&lt;br /&gt;stem2. = "Eduardo"&lt;br /&gt;SAY "Initializing 'stem2.' to 'Eduardo' gives a default value, so stem2.tail =" stem2.tail&lt;br /&gt;stem2.tail = 4&lt;br /&gt;SAY "Unless we give a value to stem2.tail: 'stem2.tail = 4', so stem2.tail =" stem2.tail&lt;br /&gt;SAY&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With this start and the Kilowatt Software tutorial mentioned in the &lt;a href="http://rexxblog.blogspot.com/2006/12/resources-for-learning-rexx.html" target="_blank" title="REXX resources"&gt;Resources&lt;/a&gt; article, plus the &lt;a href="http://www.rexxla.org/About_Rexx/rexxtut.html" target="_blank" title="tutorial"&gt;SHARE tutorial&lt;/a&gt;, you can begin to try out different things in REXX. &amp;nbsp;On OS/2, REXX scripts generally use the *.cmd name. &amp;nbsp;You can associate that extension in Windows, or you can just name your scripts with *.rex. &amp;nbsp;If you use *.cmd with any other language, leave it alone.&lt;br /&gt; Until next time, &lt;em&gt;arrividerla&lt;/em&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-1963460670988206815?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=e9mqoQzK"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=3GMcDfPi"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=3GMcDfPi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/PtY_Z0WPbeA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/1963460670988206815/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/01/begin-at-beginning.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/1963460670988206815?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/1963460670988206815?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/PtY_Z0WPbeA/begin-at-beginning.html" title="Begin At The Beginning" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/01/begin-at-beginning.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8NRn0yeip7ImA9WBBUGEo.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-6780229366467430892</id><published>2007-01-03T17:24:00.000-08:00</published><updated>2007-01-03T17:41:37.392-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-03T17:41:37.392-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><category scheme="http://www.blogger.com/atom/ns#" term="VMWare" /><category scheme="http://www.blogger.com/atom/ns#" term="Qemu" /><title>REXX in Virtual Machines</title><content type="html">&lt;p&gt;As I stated in &lt;a href="http://lnxwalt.blogspot.com/2007/01/qemu-and-vmware-further-information.html" target="_blank" title="qemu and vmware"&gt;this article&lt;/a&gt; in &lt;span style="font-style:italic;"&gt;Free and Open&lt;/span&gt;, I am building a couple of virtual machines for some of our upcoming learning activities. &amp;nbsp;It might be a good thing for you to follow along, as you may want to do something similar. &amp;nbsp;It makes you more able to try things out if you know that you won&amp;apos;t ruin what you have by trying it.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;My Gentoo Linux machine has Regina REXX installed from their repositories. &amp;nbsp;The Fedora Core 6 VMs (once they are completed) will have Open Object REXX 3.1 installed, as that is available from Fedora&amp;apos;s repositories.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-6780229366467430892?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=IHQ2xWh7"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=UUoviHcn"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=UUoviHcn" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/OTXArhV9Bb4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/6780229366467430892/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2007/01/rexx-in-virtual-machines.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/6780229366467430892?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/6780229366467430892?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/OTXArhV9Bb4/rexx-in-virtual-machines.html" title="REXX in Virtual Machines" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2007/01/rexx-in-virtual-machines.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUBRX0zcSp7ImA9WBBUFkw.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-2269344372445811011</id><published>2006-12-31T10:42:00.000-08:00</published><updated>2006-12-31T18:24:14.389-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-12-31T18:24:14.389-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SourceForge" /><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><category scheme="http://www.blogger.com/atom/ns#" term="resource list" /><title>REXX Tools on SourceForge</title><content type="html">&lt;p&gt;Over the past few months, as I have looked into the REXX language, I have looked over the &lt;a href="http://www.google.com/search?hl=en&amp;q=site%3Asourceforge.net+rexx&amp;amp;btnG=Google+Search" target="_blank" title="Google search for REXX on SourceForge.net"&gt;REXX tools on SourceForge&lt;/a&gt;.  I intend to go through the list this year, trying each one out, and showing how we can use them to help smaller businesses do their work better, faster, and easier.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For those who use Ubuntu Linux, I believe the Regina REXX interpreter is available from your repositories.  For Gentoo users, Regina REXX is available, but the latest version is 3.1, instead of the 3.3 that you can get if you go directly to the site.  For Fedora users, Open Object REXX (which is &lt;em&gt;not&lt;/em&gt; a SourceForge project) is available from your Extras repositories.  Thus, you can start out with REXX without having to do anything unfamiliar like type in&lt;code&gt;./configure &amp;&amp;amp; make &amp;&amp;amp; make install&lt;/code&gt; in a command window.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For users of some operating systems (BeOS comes to mind, which means that all of the BeOS clones such as Haiku should also be like this, and also OS/2), there is a REXX interpreter built in, as an integral part of the system.  I was going to check and see if NetBSD has it, but I run it inside a virtual machine, and I decided that I am going to create a new one from scratch for an article on &lt;a href="http://lnxwalt.blogspot.com/" target="_blank" title="W^L+'s tech blog"&gt;Free and Open&lt;/a&gt;, my tech blog.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://regina-rexx.sourceforge.net/" target="_blank" title="Regina REXX interpreter"&gt;Regina REXX cross-platform interpreter&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://rexxsql.sourceforge.net/index.html" target="_blank" title="REXX SQL database interface"&gt;REXX/SQL&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://hessling-editor.sourceforge.net/index.html" target="_blank" title="THE"&gt;The Hessling Editor&lt;/a&gt; - a text editor that supports REXX macros&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://rexxcurl.sourceforge.net/index.html" target="_blank" title="REXX cURL library"&gt;REXX/CURL&lt;/a&gt; - access to URL-addressable resources&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://rexxgd.sourceforge.net/index.html"&gt;REXX/gd&lt;/a&gt; - a wrapper that allows creation of images in REXX&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://rexxtrans.sourceforge.net/" target="_blank" title="common API for REXX interpreters"&gt;REXX/Trans&lt;/a&gt; - which I do not think I will be covering for a while&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://rexxdw.sourceforge.net/index.html" target="_blank" title="REXX + Dynamic Windows"&gt;REXX/DW&lt;/a&gt; - a GUI library for REXX (Win32, OS/2, GTK+)&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://rexxtk.sourceforge.net/index.html" target="_blank" title="interface with tk library"&gt;REXX/tk&lt;/a&gt; - another GUI library for REXX&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://rexxcurses.sourceforge.net/index.html"&gt;REXX/curses&lt;/a&gt; - &lt;a href="http://pdcurses.sourceforge.net/index.html" target="_blank" title="public curses commandline GUI library"&gt;curses&lt;/a&gt; (commandline GUI) interface&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://rxsock.sourceforge.net/index.html" target="_blank" title="network sockets library"&gt;Rxsock&lt;/a&gt; - TCP/IP sockets library&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://rexxwrapper.sourceforge.net/index.html" target="_blank" title="prepares REXX program for distribution"&gt;REXX/Wrapper&lt;/a&gt; - wraps REXX source code into an executable&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;That is not to say that we will get to all of these or become proficient in all of them over the course of the next year, but we will try to become acquainted with some of them enough to use them intelligently.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Since we are really targeting beginners at using REXX, I would love to hear some tips and pointers that will help a new user get up to speed quickly with REXX. &amp;nbsp;So go ahead and leave comments.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-2269344372445811011?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=h35uznDM"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=rT869DQK"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=rT869DQK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/yMAc90Ibq_Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/2269344372445811011/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2006/12/rexx-tools-on-sourceforge.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/2269344372445811011?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/2269344372445811011?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/yMAc90Ibq_Q/rexx-tools-on-sourceforge.html" title="REXX Tools on SourceForge" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2006/12/rexx-tools-on-sourceforge.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYDRXc6fSp7ImA9WBBUEkU.&quot;"><id>tag:blogger.com,1999:blog-7613420514180550623.post-1303914973093882879</id><published>2006-12-27T20:34:00.000-08:00</published><updated>2006-12-27T21:02:54.915-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-12-27T21:02:54.915-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="REXX" /><title>Why REXX?</title><content type="html">&lt;p&gt;There are plenty of other languages out there. &amp;nbsp;General and special purpose programming languages, markup languages, and the lighter-weight programming languages that we call scripting languages. &amp;nbsp;Why not choose one of those languages?&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To some degree, any programming or scripting language might meet our goals. &amp;nbsp;I firmly believe in the &lt;em&gt;plumber principle&lt;/em&gt;: If a plumber comes to fix your toilet and he has only one tool, no matter how wonderful that tool may be, send him away and call a different plumber. &amp;nbsp;A good plumber will have a wide variety of different kinds and sizes of tools, so that he is equipped to perform most of the tasks he may be called upon to perform. &amp;nbsp;Can you imagine a plumber fixing your toilet with a hammer? &amp;nbsp;Well neither should a programmer solve your problems with only one tool, no matter how wonderful it is.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I tend to choose tools that will work on multiple platforms, such as REXX, REBOL, Python, Ruby, Perl, C, C++, and Pascal. &amp;nbsp;I have even looked into &lt;a href="http://www.xbasic.org/" target="_blank" title="XBasic home page"&gt;XBasic&lt;/a&gt; from time to time. &amp;nbsp;REXX is a fairly easy language to learn and use, having only a few keywords to learn, and resembling BASIC in its syntax. &amp;nbsp;REXX is descended, I've read, from &lt;a href="http://en.wikipedia.org/wiki/Pl/1" target="_blank" title="Programming language one"&gt;PL/1&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;REXX is still actively developed and growing, with several zero-price and commercial interpreters available. &amp;nbsp;As a &amp;quot;glue&amp;quot; language, it is designed to work well as a macro language for applications.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;But I guess when you come down to it, a language is a personal choice, and must be made based on personal criteria. &amp;nbsp;I would love to learn all computer languages, just as I would love to learn all human languages. &amp;nbsp;Since I cannot do either, I must learn the ones that are easiest for me first, so that I can then go on to tackle the more difficult ones. &amp;nbsp;Besides, if you read this far, you really should go and get &lt;a href="http://regina-rexx.sourceforge.net/" target="_blank" title="Regina home page"&gt;Regina REXX&lt;/a&gt; or &lt;a href="http://www.oorexx.org/"&gt;Open Object REXX&lt;/a&gt; and a couple of books and give it a go.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7613420514180550623-1303914973093882879?l=rexxblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=xXVvz8ki"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?a=sBcPEZbT"&gt;&lt;img src="http://feeds.feedburner.com/~f/OpenSourceRexxBlog?i=sBcPEZbT" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/OpenSourceRexxBlog/~4/dwAN9VqG2E0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://rexxblog.blogspot.com/feeds/1303914973093882879/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://rexxblog.blogspot.com/2006/12/why-rexx.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/1303914973093882879?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7613420514180550623/posts/default/1303914973093882879?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OpenSourceRexxBlog/~3/dwAN9VqG2E0/why-rexx.html" title="Why REXX?" /><author><name>W^L+</name><uri>http://www.blogger.com/profile/11167356770771381026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://rexxblog.blogspot.com/2006/12/why-rexx.html</feedburner:origLink></entry></feed>

