Oregon Progress Users Group (ORPUG) Info
Photos from Exchange 2005.
I've been working with Progress most of my professional career. I think it is a fantastic database with a great language, and have enjoyed the projects I've worked on. My Progress experience started with version 5 back in 1989. Since then I have joined and eventually ran our Oregon Progress Users Group (which is no longer active), written a few articles for our newsletter and for Progressions technical journal, been to a few conferences, been active on the PEG, and worked as a consultant/contractor at many different places around Portland, Oregon.
Others have created websites to share some of the stuff they've done, so I thought I'd do that too. Right now there isn't much here, but I hope to keep it growing over time. Feel free to use any of these - no charge! All I ask is that you let others know where you got them (don't say it's your own stuff please), and if you make improvements, please let me know what they are. I make no claims to being the best Progress Programmer and am always happy to learn new things. :)
So here's some of the things I have here so far.
| ws-schema | 11/30/07 | In our last ORPUG meeting I showed an example using WebSpeed and AJAX. This is the code I used. Click the link for more details and screen snapshots. Summary: Display all tables in the database alphabetically, click a table name to display the details, click a field name to display all the tables that have that field (this is the AJAX part), click a table in that list to display the details for that table. |
| metaphone.p | ?? | I found this a long time ago, like 1994 or something. It's another phonetic program like soundex, but better. I used this in a program I wrote many years ago that was a mini-kbase. You would enter a problem and do a search. If nothing was found or what was found wasn't right, it would add the problem to the database. When you found the solution, you could update the problem with the solution. I ran the entire text of the problem through metaphone.p and saved it in the database. When the user entered a problem to search for, I ran the text entered through metaphone.p and compared the results to kbases in the database returning the top 5 solutions found. It actually worked very well. |
| Counting Records | 1/05 | I asked on the PEG once what the fastest way was to count records. There are many ways to do this, but the fastest (as of today) using the 4GL is this: DEF QUERY qry FOR customer FIELDS () SCROLLING.
OPEN QUERY qry PRESELECT
EACH customer NO-LOCK.
DISPLAY NUM-RESULTS("qry").
|
| DateTime Datatype | 2002 | Can't remember exactly when I wrote this, I think it was in late 2002 or early 2003.
Progress OE10 now has a DateTime datatype which is GREAT! But before this we had to roll our own. Here is an article I wrote for Progressions on how to do this. Took me awhile to figure this out, but once I did it's pretty easy and very useful! hope you find it useful too.
|
| Excel How To Reading data from Excel |
12/04 | I looked all over the place for how to read an excel spreadsheet from Progress, but couldn't find anything that very simply said, "Step 1, Step 2, etc". Finally I searched the kbase and found my answer. So here's some very simple code that shows you how to read/write data from/to Excel. Oh, and this has been tested on Win2K & WinXP, Office 2000, I have heard there are issues with older versions of Excel.
There is also this very nice resource by Global-Shared. It has
a lot of tips, but not the simple step-by-step code I was looking
for. Still, lots of good things here:
|
|
Link is to the article I wrote for Progressions. |
2/16/04 | Fix the case of words (like peoples names) so they are in the form uppercase first letter, lowercase the rest of the word.
Recently we were dumping data from one database into another. It was decided every name for users, employees, customers, vendors, etc, would have the first letter in uppercase, the rest of the word in lowercase. At first this seemed easy, then I realized we had issues where people put a hyphen in a company name, like FIRST-INTERSTATE. My program uses NUM-ENTRIES(vWord," "), with a space as the separator between words. For hyphenated words, this wouldn't work, it would end up First-interstate. Then some used a period instead of a hyphen, or a slash (both / and \). This was actually a fun little project, something different from what I'm usually doing (writing reports). It's still not perfect. If you have a company called ABC Inc., this program will change it to Abc Inc. which isn't quite right. I'm not sure how to handle this, almost like I'd need some kind of gramatical checking routine. But it does work probably 95% of the time, or more, and means there's a lot less to fix. Hope you enjoy it!
|
|
- htmldict.w |
5/13/05 | HTML Dictionary.
Someone out there wrote a nice program to create web page versions of the schema, so instead of running the data dictionary reports, you could look them up on the web. It was really nice and I used it a lot! Thanks to whoever you are! This is my version that is basically a reproduction of the data dictionary report you get from the database administration screen, same data, same format, but hopefully in a nice format. I've added one other thing: A link next to each field that takes you to a page showing you every table that has that field name in it. The only problem with this is sometimes people will call a field Emp-ID in one table, and Emp-Num in another. It's the same data, but different field names and my program doesn't catch this. I'm sure this also won't work very well for MFG/PRO. :( Unzip the two programs to some directory either in your propath or put that directory in your propath. Run htmldict.w. In the works is an enhancement working with the xrefdb below. It will add another link next to each field that takes you to a page showing all of the programs that use this field. Of course this has issues with dynamic queries and stuff like that, but I figure something is better than nothing. Someday I will finish this. Hope this is helpful to someone, and as usual, let me know if you have any questions, comments, and please if you enhance it, I'd love to see what you did. If nothing else, this is a good way to see how the meta-schema tables relate to each other.
|
|
xrefdb.zip (ya, I know, the link doesn't work. I'll get it posted soon...) |
XREF Database.
The idea here is to load the XREF data from COMPILE program.p XREF into a table so you can search that data. Probably one of the most common uses for this is to find all programs that have a particular table in them because you have changed the schema on that table and need to re-compile all of those programs. This data is also useful for finding out which indexes are being used, and where no index is being used or the whole table is being searched. I started trying to figure out how to parse this and what fields I'd need in the database, then decided to go another way. I load almost all of the XREF data into one field with a word index on it. Now you can quickly and easily search that text. I tried this with about 10 programs - loading the xref data and doing some searches (using CONTAINS) - and it worked GREAT! But that's as far as I have gotten so far, creating the table and the xref load program. One of these days I'll add some screens for searching for data, some standard reports, and hook it up to my html dictionary program above.
|
|
| 2 dim Array | 1996 | Progress does not have 2 dimensional arrays. There are many ways to do this in Progress, here's how I did it. |