Pragmatic: hardheaded – hardnosed; A name given to me by Dr. Brian Marks :-)

In other words: A willingness to use a pry-bar, if necessary, to obtain the desired results.

How many Rexx programmers does it take to change a light bulb? Find Out

NOTE: Many of the WMI scripts hosted here may work only on WinXP SP2
Keep the Car. Get OpenOffice.org

     This mini-web page is not much, just a place to share some sample Rexx programs and ActiveX dlls I have created. Everything here has been tested on the Windows versions of Object Rexx 2.1.3 and ooRexx 3.0.1. I do not require any verification to download any of these files; however, I would suggest that if you download one or more of these files, to send me an email so I can keep you up to date with any enhancements. (Click my picture to email me)

  2008Symposium.zip  Size: 53679428 bytes
Here is what I have from the 2008 RexxLA Symposium - including pictures. I discovered later that the presentations under Rick's folder may not be what was actually presented in '08, but it's all I have.

  ArcheryTimer.zip  Size: 2532477 bytes
Last Update: March 10, 2009. This is the "much talked about" Pragmatic Archery Timer :-). Version 1.1. This program runs "stand along" and does not require any other installation. Simply download this zip file and unzip it in a folder of it's own. There will be a file named ReadMeFirst.pdf that gets unzipped. Do what it says.

  BrowseForFolder.zip  Size: 959 bytes
Last Update: June 3, 2005
This is another of the Windows builtin dialogs (see OpenFileDialog.zip on this page) that only allows the return of a folder name to the calling script. The enclosed script documents how this dialog can be customized.

  Bulk_Rename.zip  Size: 1381 bytes
To those of us that have digital cameras, we know what a pain it can be to rename a large group of files so that pics taken on different days can reside in the same folder.
In this zip file is a routine that will rename all files in a selected folder with a prefix. The prefix can either be the date of the file & an underscore or you can specify what you would like to have as an extension.
Example:
dsc0001.jpg would become 20051128_dsc0001.jpg if you selected to use the date prefix AND the file date was 20051128.
dsc0001.jpg would become Thanksgiving_dsc0001.jpg if you selected to specify a prefix of "Thanksgiving_"
REMEMBER: This will rename ALL the files in the folder, so you might do well to have a "holding" location to download your camera into.
Tested on WinXP SP2 & Win2K

  CngPrt.zip  Size: 701 bytes
Last Update: April 26, 2005 This small Windows ooRexx utililty will allow you to determine/change your default printer without going through the control panel. Great little app to have on your quick launch bar.

  ELPDateTime.zip  Size: 3853 bytes
Last Update: November 29, 2005
This ooRexx script is designed to be used as a ::Requires file. Its purpose is to verify date and time values. There are 4 routines in this script.

DateType - Returns .true or .false when passed a date value and a valid ooRexx date type.

RxIsDate - Returns a string value when passed a date value and a valid ooRexx date type. Returns a 1 (.true) if the value matches the type; otherwise, the string will contain a message indicating what is invalid.

TimeType - Returns .true or .false when passed a time value and a valid ooRexx time type.

RxIsTime - Returns a string value when passed a time value and a valid ooRexx time type. Returns a 1 (.true) if the value matches the type; otherwise, the string will contain a message indicating what is invalid.

Also included in this zip file is a Windows ooRexx script (test_ELPDateTime.rex) to test each function.

  Excel_Automation000_000.zip  Size: 216912 bytes
Last Update: May 12 2005
PDF of The RexxLA 2005 International Symposium session on automating Excel with ooRexx.

PLEASE NOTE: The following demonstrations are in no way meant to force "my" coding style on anyone else. Just like editors, everyone has their own style (right or wrong). NOR, are these demonstrations an attempt to show the "best" way to build an OBJECT ORIENTED PROGRAM.

They are meant to demonstrate how to automate Excel in as simple a format as I can devise. If you want to combine methods in external classes and ::require them, help yourself.

They're loaded with comments and will soon be loaded with popup dialogs between every major event. These dialogs are for the purpose of slowing everything down. There will be a variable in every program called "slowdown" and it will be set to .true. If you don't want the dialog popups, simply set slowdown = .false.

If the Last Update is greater than May 11, 2005 the applications in the zip file will have been modified to include the dialog popups.

Now, I know someone will comeback and ask "why didn't you put your dialog in a class file and require it?". Like I said before, if you want to, help yourself. I'm trying as best I know how to make each of these demonstrations a "stand-alone" program. The only exception to this is the demostrations that require a WorkBook or text file be created with a previous application.


  Excel_Automation001_005.zip  Size: 9766 bytes
Last Update: May 12 2005
Excel automation demonstrations 001-005 - Includes "slowdown" option.
001 - Demonstrates the creation of an Excel WorkBook in ooRexx.
002 - Demonstrates the reading of an existing Excel WorkBook in ooRexx.
003 - Demonstrates the sorting of an existing Excel WorkBook in ooRexx using 1 column as the sort control.
004 - Demonstrates the sorting of an existing Excel WorkBook in ooRexx using 2 columns as the sort control.
005 - Demonstrates the sorting of an existing Excel WorkBook in ooRexx using 3 columns as the sort control.

  Excel_Automation006_011.zip  Size: 9529 bytes
Last Update: May 12 2005
Excel automation demonstrations 006-011 - Includes "slowdown" option.
006 - Demonstrates the creation of several plain text files for use in the following demonstrations.
007 - Demonstrates the loading of a ; delimited file into Excel reading each line in the text file, parsing it, then loading into Excel.
008 - Demonstrates the loading of a , delimited file into Excel reading each line in the text file, parsing it, then loading into Excel.
009 - Demonstrates the opening of a ; delimited file in Excel and letting Excel do the parsing and loading of cells.
010 - Demonstrates the opening of a , delimited file in Excel and letting Excel do the parsing and loading of cells.
011 - Demonstrates the opening of a ^ delimited file in Excel and letting Excel do the parsing and loading of cells
This differs from the 2 pervious in that the ^ is not a common delimiter recognized by Excel.

  Excel_Automation012_014.zip  Size: 4978 bytes
Last Update: May 12 2005 - Includes "slowdown" option
Excel automation demonstrations 012-014.
012 - Demonstrates the creation of an Excel WorkBook and the creation of "relative" formulas..
013 - Opens the WorkBook created in 012 and inserts a row and a column - additional proof that the formulas are "relative".
014 - Opens the WorkBook created in 012 and examines the contents of three cells, indicating if the cell is empty, contains a value, or contains a formula.

  Excel_Automation015_016.zip  Size: 4519 bytes
Last Update: May 17 2005 - Includes "slowdown" option
Excel automation demonstrations 015-016.
015 - Demonstrates some of the methods to use when working with a WorkBook with multiple WorkSheets.
016 - Demonstrates how to get by the biggest "gotcha" in automating Excel - the Copy method

  Excel_Automation017_018.zip  Size: 5443 bytes
Last Update: May 13 2005 - Includes "slowdown" option
Excel automation demonstrations 017-018.
017 - In this demonstration we will create yet another workbook and insert random numbers.
We will then add some column heading and a title, to which we will format in various different ways.
Create 2 different charts
Rename each of the charts
Rename Sheet1
Rearrange the order of the sheets
This demonstration also includes several of the VBA macros that were translated

018 - In this demonstration we will read data from the Workbook created in RxXL_Automation_017 and dynamically place it in cells in our new workbook using links.

  Excel_Automation019_019a.zip  Size: 2983 bytes
Last Update: May 31 2006 - Includes "slowdown" option
Excel automation demonstrations 017-018.
019 - In this demonstration we will create yet another workbook and insert random numbers.
We will then add hide/unhide individual & multiple columns/rows.

019a - Same code as 019, but all comments and "slowdown" code has been removed.

  Excel_Automation020_021.zip  Size: 4045 bytes
Last Update: June 26, 2006 - Includes "slowdown" option
Excel automation demonstrations 020-021.
020 - In this demonstration a workbook will be created with one worksheet. Code will then demonstrate renaming this worksheet, adding/renaming a worksheet BEFORE the original one, & adding/renaming a worksheet AFTER the original one.

020a - Same code as 020, but all comments and "slowdown" code has been removed.

021 - Very simple code that will return the Default File Path for the user's specific Excel installation

  Excel_Automation900_900.zip  Size: 851 bytes
Last Update: May 10 2005
Excel automation demonstrations 900-900.
900 - Demonstrates a simple sub-routine that loads all Excel constants into global variables. Would be useful in an application that needed numerous constants.

  Excel_Automation901_901.zip  Size: 973 bytes
Last Update: May 10 2005
Excel automation demonstrations 901-901.
901 - Little utility to KILL all Excel processes

  File_Events.zip  Size: 1077 bytes
Last Update: June 2, 2005
This ooRexx script will monitor a pre-defined folder for file events such as the arrival of a new file or the deletion of an existing file. Be sure to edit this file and change the monitored folder. To test this application, run it at a command prompt. At another command prompt use something like notepad.exe to create a new text file in the folder being monitored. Within 5 seconds your script should detect the creation of the file.

  Find_All_Extensions.zip  Size: 673 bytes
Last Update: June 2, 2005
This ooRexx script will search an entire drive for all files with the specified extension. NOTE: The time of execution will depend on the size of your HD and the number of files on it. It may take several minutes to execute.

  gkm.zip  Size: 1602 bytes
Last Update: June 2, 2005
OK, you asked for it - here it is. This ooRexx script will retrieve all methods, attributes(properties), and constants from an ActiveX/OLE server application such as Excel. It is nothing fancy and not code that I am especially "proud" of. Execute this script with one command line argument (the full name of the application), such as:
c:\rexx gkm excel.application
This application will create a text file in the current folder named methods.txt.

  InvokeVerb.zip  Size: 701 bytes
Last Update: June 2, 2005
Be sure you understand what this script does before executing it. The script will search a specified folder and execute the verb against that file. If you specify a folder that has 200 files in it and execute the "Print" verb, guess what is going to happen? You're going to get 200 printouts. So what are the verbs that can be executed? They will vary depending on the file type, but would normally include, "Print", "Edit", & "Run".

  MSWordShortcuts.zip  Size: 15473 bytes
Last Update: June 3,2005
This little ooRexx script will create a Word document that lists all the keyboard shortcuts provided by MSWord (There are over 6 pages of them). If you're a heavy Word user and don't like having to navigate with the mouse, this might interest you. Be patient when you run this program - it takes several minutes to run and will appear at times to not be doing anything, but never fear, it is working all the time. You will only need to run this once to create your document and it will be good until you update to a newer version of Word. Just in case you're not patient enough to run the application, I've also included in this zip file the end product for MicroSoft Word 2002 (10.2627.2625).

  NetworkDisconnect.zip  Size: 668 bytes
Last Update: June 2, 2005
This is a trival little ooRexx script that will simply alert you if your network cable was unplugged (on either end).

  OfficeVersion.zip  Size: 660 bytes
Last Update: June 2, 2005
There may come a time when you wish to distribute your ooRexx Microsoft Office automation application and you need to know what version of Office (or Office products) is installed on the system. This ooRexx script will return the current version of Office.

  ooRexxTry.zip  Size: 21776 bytes
Last Update: November 29, 2007
ooRexxTry Version 1.0 is a small application written in ooRexx 3.2 and should run on any Windows system that has ooRexx 3.2 or higher installed. ooRexxTry uses ooDialog to allow execution of ooRexx code - similiar to rexxtry.rex. There are 2 files in the zip archive 1) ooRexxTry.rex & 2) ooRexxTry.pdf - both these files MUST be in the same folder. See pdf file for version control information.

  OpenFileDialog.zip  Size: 988 bytes
Last Update: June 2, 2005
OK, so you've created your super ooRexx script with a complete GUI interface, but you need to include a fileopen dialog. Well you could write your own, or with the code in this script, you can use the one provided by Windows. See comments in the script for details on how to specify what files are presented in the dialog and what folder to start in.

  PrinterObject2.zip  Size: 26140 bytes
Last Update: April 26, 2005 This zip files includes the RxVB.PrinterObject - an ActiveX dll that provides full print capabilities to any scripting language that supports ActiveX/OLE. This is version 2.0 and is fully compatible with any previous versions offered here or emailed directly. Since this is a dll, it must be registered with regsvr32.exe. Place the entire contents of this zip file in a new folder and run regsvr32.exe from that folder.

  RexxScriptName.zip  Size: 731 bytes
Last Update: June 2, 2005
Ever look in your task manager and see rexx.exe or rexxhide.exe and have no idea what script is actually being run? This ooRexx script will return the script name for every instance of rexx.exe or rexxhide.exe found in the task list. (Note: this works just as well for cscript.exe and wscript.exe).

  Rexx_Tools.zip  Size: 72873 bytes
Last Update: April 9, 2005 This zip file includes a PDF document created by Howard Fosdick, (author of Rexx Programmer's Reference) that lists 100 Free Rexx Tools.

  Screen_Dumps.zip  Size: 221563 bytes
This .zip file contains a few of the GUI applications created with ooRexx and BSF4Rexx.

button_demo:
Demonstrates several widgets available through the Java classes.

dropdownmenu:
Demonstrates dropdown menu(s) along with a sub-menu

multifileopendialog:
Builtin file open dialog - this image shows the multi file version. This can
easily be changed to single file or can be set at a file "save" dialog.

password:
Shows a password input box with a non modal dialog showing that the entry was
invalid

registration:
A practical application with buttons, check boxes, combo boxes, and a scrolling
text area. The data input with this GUI is used when printing Symposium attendee
badges.

tabbedpane:
Another "menu type" demo that shows using tabbed panes. The tabs can be plain
text, an icon, or a combination. Each tab can create a different item in the
frame, such as a panel, textarea, etc.

tooltips:
Tool tips (that appear on mouse hover) can be added to a GUI. This image shows
a multiline tooltip produced by including HTML in the text of the tool tip.

More to come later.

  StartMenu_Pin.zip  Size: 1279 bytes
Last Update: June 2, 2005
You've got your WinXP ooRexx application all ready for distribution and have included the procedures for installing ooRexx, your application, and associating the .rex extension with either rexx.exe or rexxhide.exe (how to do that will be in a later example here). Now all that is left to make your application easy to execute is adding it to the WinXP "Start" menu. Well you could script the addition of a program group, etc. and place your application there, but you know your user is going to want fast access to your application. So let's "pin" it to the WinXP Start Menu. (If you're not sure what a pinned application is, click the Start button on your WinXP system - on the left you will see two groups of applications. The bottom group changes dependant upon how often you use an application - the top group are applications that are pinned.)
There are 2 ooRexx scripts in this zip file one will pin calc.exe to your Start menu and the other will UnPin calc.exe. Of course you can change calc.exe to your application.

  Sym2005.zip  Size: 213469 bytes
Last Update: April 26, 2005 This zip file contains the highlights of the RexxLA 2005 International Rexx Symposium in PDF format. Many thanks to Pam Taylor and René Jansen for creating this document. Additional information on the Symposium can be found by clicking the RexxLA logo above.

  SystemChassisType.zip  Size: 1007 bytes
Last Update: June 2, 2005
Ever need to know what type chassis your ooRexx application is running on? (Probably not) But just in case you ever do need to, here's an ooRexx script that will return the chassis type to you. And don't ask me what the difference is in a "Laptop" vs. a "Notebook" - I have no idea :-).

  testmutex.zip  Size: 5313 bytes
Last Update 12/16/2002 This ActiveX dll can be used to create a Mutex. The purpose of this mutex may be to prevent additional copies of a script from being executed on the same system at the same time. A Windows Scripting Host program (testmutex.wsf) is included that demonstrates it's use in Object Rexx, VBScript, and JScript. The code in the VBScript section can be cut and pasted to a .vbs file if desired. This ActiveX dll was created in VB6 and requires the VB6 runtime files. Don't forget to register this dll with regsvr32.exe.

  TimeZone.zip  Size: 1544 bytes
Last Update: January 9, 2006
This ooRexx script will return information of the timezone and GMT bias for your local system. This script will only run under Windows and has been tested on Win2K & WinXP.

Bias: Current bias for local time translation. The bias is the difference between Universal Time Coordinate (UTC) and local time. All translations between UTC and local time are based on the following formula: UTC = local time - bias. This property is required.

Caption: Short description of the CIM_Setting object—a one-line string.

DaylightBias: Bias value to be used during local time translations that occur during daylight saving time. This property is ignored if a value for the DaylightDay property is not supplied. The value of this property is added to the Bias property to form the bias used during daylight time. In most time zones, the value of this property is -60.

DayLightDay: DayLightDayOfWeek of the DayLightMonth when the transition from standard time to daylight savings time occurs on an operating system. If the transition day (DayLightDayOfWeek) occurs on a Sunday then the value "1" indicates the first Sunday of the DayLightMonth, "2" indicates the second Sunday and so on. The value "5" indicates the last DayLightDayOfWeek in the month.

DaylightDayOfWeek: Day of the week when the transition from standard time to daylight saving time occurs on an operating system. 0 = Sunday 1 = Monday etc.

DaylightHour: Hour of the day when the transition from standard time to daylight saving time occurs on an operating system.

DaylightMillisecond: Millisecond of the DaylightSecond when the transition from standard time to daylight saving time occurs on an operating system.

DaylightMinute: Minute of the DaylightHour when the transition from standard time to daylight saving time occurs on an operating system.

DaylightMonth: Month when the transition from standard time to daylight saving time occurs on an operating system. 1 = January 2 = February 3 = March etc.

DaylightName: Time zone being represented when daylight saving time is in effect.

DaylightSecond: Second of the DaylightMinute when the transition from standard time to daylight saving time occurs on an operating system.

DaylightYear: Year when daylight saving time is in effect. This property is not required.

Description: Description of the CIM_Setting object.

StandardBias: Bias value to use when daylight saving time is not in effect. This property is ignored if a value for StandardDay is not supplied. The value of this property is added to the Bias property to form the bias during standard time.

StandardDay: StandardDayOfWeek of the StandardMonth when the transition from daylight saving time to standard time occurs on an operating system. If the transition day (StandardDayOfWeek) occurs on a Sunday then the value "1" indicates the first Sunday of the StandardMonth, "2" indicates the second Sunday and so on. The value "5" indicates the last StandardDayOfWeek in the month.

StandardDayOfWeek: Day of the week when the transition from daylight saving time to standard time occurs on an operating system. 0 = Sunday 1 = Monday etc.

StandardHour: Hour of the day when the transition from daylight saving time to standard time occurs on an operating system.

StandardMillisecond: Millisecond of the StandardSecond when the transition from daylight saving time to standard time occurs on an operating system.

StandardMinute: Minute of the StandardDay when the transition from daylight saving time to standard time occurs on an operating system.

StandardMonth: Month when the transition from daylight saving time to standard time occurs on an operating system. 1 = January 2 = February 3 = March etc.

StandardName: Name of the time zone being represented when standard time is in effect.

StandardSecond: Second of the StandardMinute when the transition from daylight saving time to standard time occurs on an operating system.

StandardYear: Year when standard time is in effect. This property is not required.

  WMI_Drives.zip  Size: 2104 bytes
Last Update: May 2, 2005 This is a collection of 3 different ooRexx examples of using WMI to enumerate 1) physical drives, 2) logical drives, & 3) drive types.

  WMI_Startup.zip  Size: 677 bytes
Last Update: May 2, 2005 This utililty will find and list all Computer Startup Commands. May be useful in detecting the registry key that causes "mal-ware" to be loaded.

  Word2pdf.zip  Size: 513 bytes
Last Update: May 9, 2005 Convert a Microsoft Word document to PDF "and" perserve the hyper-links. Note: You must have Adobe Acrobat installed - not just the reader. In Word: In the top menu choose "Adobe PDF" "Change Conversion Settings" "Settings" tick "Add links to Adobe PDF" tick "Add bookmarks to Adobe PDF". Close the Adobe PDF selection Click the "Convert to Adobe PDF" button (if you don't see the button go to View > Toolbar > PDFMaker). In Acrobat: Edit Preferences "Convert to PDF" "Microsoft Office" "Edit Settings" tick "Add bookmarks and links to PDF file". Then File "Create PDF" "From File" Select your document. Save the newly created file.