PL/I for OpenVMS and Tru64
1.Welcome
2.What's New?
2.1Announcements
2.3Power has been restored...
2.4A New RSS Feed, Open Source and more...
2.5NetRexx, SIG Tapes and a Few Extra Changes...
2.6PL/I Support for Eclipse IDE
2.7Project Euler
2.8WSIT and J2VMS: A Comparative Analysis
2.9Robot Find Kitten For PL/I
2.10OpenVMS Technical Journal Article
2.11Java Integration Toolkit Release
2.12Translated Support for Alpha PL/I Images
2.13New tools, an RSS feed and much more...
2.14A New Home for MX and MMK
2.15Another Correction to PLI$STARLET.TLB
2.16Field Test Release of Translated Support
2.17Correction to PLI$STARLET.TLB
2.18New Website for Kednos
2.19No Itanium GEM for Kednos
2.20New PL/I Kit for OpenVMS Alpha
2.21Tim's Blog
2.21.1This is the program that doesn't end...Further Reading
2.21.2The VMS/L&T SIG Collection needs YOU!
2.21.3Jabbing the JIB...
2.21.4DOS file attributes on OpenVMSSoftware
2.21.5Serving Mercurial repositories from OpenVMS
2.21.6TECO has now entered the realm of the internetLinks
2.21.7Improvements in VWcmsPatch
2.21.8A BLISS-ful family treeReferences,  Acknowlegements
2.21.9Images from launch of Soyuz TMA-17Links,  Acknowlegements
2.21.10Running Java Software on OpenVMSMaven on OpenVMS
2.21.28Iridium Flares
3.DocumentationKednos PL/I for OpenVMS,  Kednos PL/I for Tru64 UNIX,  Integration Products,  Open Source
3.1Articles
4.IntegrationOverview,  Examples
4.1SDLOverview,  Software,  Documentation,  Licensing & Support
4.2JavaOverview,  Software,  Documentation,  Licensing & Support,  Examples
4.3XMLOverview,  Software,  Documentation,  Licensing & Support,  Examples
5.Sales & SupportSales,  Support
6.HobbyistOverview,  Public Access,  Emulated/Simulated Systems,  Links
7.Kits
8.Examples
10.ResourcesPL/I Software,  Mailing Lists & Newsgroups,  Games
10.1Project EulerProblems,  Links
10.2Editors
10.3Code ManagementConcurrent Version System,  Code Management System,  Mercurial,  Subversion
10.4Benchmarks
10.5RexxOverview,  NetRexx,  Links
10.6SIG CollectionOverview,  Archive,  Distribution,  Contribute
11.Open SourceOverview,  Projects,  Downloading Source Code
11.1CluckOverview,  Software,  Documentation,  Source,  Support
11.2MXOverview,  The Future,  Documentation,  Software,  Support,  Links
11.3MMKOverview,  Documentation,  Software,  Source Code,  Support,  Other Make Utilities
11.5The Halls Of ZKOverview,  The Future,  Documentation,  Software,  Source Code,  Support
11.5.1Walkthough
12.Contact
13.Site Map

1.  Welcome

Our main focus is providing PL/I compilers and supporting PL/I programming environments. The environments include:

  • OpenVMS VAX and OpenVMS Alpha on native and emulated hardware;
  • OpenVMS I64 Translated Image Environment;
  • clusters of all these; and
  • Tru64 UNIX (formerly Digital UNIX and OSF/1) on Alpha.

As part of this support function we procure and deploy systems for our customers and will assist in filling associated staffing requirements.

PL/I is a powerful high-level programming language that is a superior alternative to using Fortran for Scientific applications, Cobol for Commercial applications and C or Bliss for Systems programming. Enjoy using the King of Programming Languages and don't worry about buffer overrun exploits.

Why should you use PL/I?   Find out!    How does PL/I compare to C?

From this site you may download both documentation and kits for the PL/I compiler for OpenVMS for both Alpha and VAX. As well as PL/I Run-Time Library kits for OpenVMS VAX, Alpha and I64. Also, you may download the kits for the PL/I compiler for Tru64.

 *For an etymology of Kednos see the Perseus Project. Wikipedia Affiliate Button

2.  What's New?

To receive announcements of new PL/I products and significant updates, then subscribe to the PL/I Announcement Mailing List here .To keep abreast of all announcements and website updates, then subscribe to the Kednos RSS feed .

Power has been restored...Monday, 19 October 2009 19:39  (10 months ago)After being off the virtual map for a few days, thanks to some storm damage, Kednos is back and a few things have happened to the Kednos website. First there is a new blog by Tim Sneddon, aptly titled Tim's Blog. The first of many topics, This is the program  
A New RSS Feed, Open Source and more...Thursday, 01 October 2009  (11 months ago)The pages for MMK and MX have been moved into the new Open Source section. Although this is only just being set up, these products are being migrated to a Mercurial repository to further community envolvement. A new section called Code Management has also been  
NetRexx, SIG Tapes and a Few Extra Changes...Tuesday, 25 August 2009  (1 year ago)A new Articles section has been set up under Documentation. This is now the home for all articles submitted to the OpenVMS Technical Journal (and possibly others). There are also some new additions to the Project Euler page. There is now a new page for documenting  
PL/I Support for Eclipse IDEMonday, 15 June 2009  (1 year ago)The Editors sections has been updated to included the newly released Eclipse IDE support for PL/I. Thanks go to William Fenalson for this.  
Project EulerFriday, 12 June 2009  (1 year ago)There have been a few changes to the website. There is a new section detailing PL/I based solutions to the mathematical problems found at Project Euler. The Documentation page has been reworked to be a bit neater and more helpful.  
WSIT and J2VMS: A Comparative AnalysisWednesday, 03 June 2009  (1 year ago)The next issue of the OpenVMS Technical Journal is just around the corner. Tim Sneddon has written an article comparing HP's Web Services Toolkit and Kednos' Java-to-VMS Toolkit. An advanced copy of this article is available here.  
Robot Find Kitten For PL/IMonday, 02 February 2009  (1 year ago)Some more small changes. The Contact page has been updated (even includes a Google map too). The Resources page now includes details of some PL/I and OpenVMS support forums as well as a Games setion for those looking to waste some time. The Sales & Support  
OpenVMS Technical Journal ArticleWednesday, 28 January 2009  (1 year ago)The latest issue of the OpenVMS Technical Journal, V12, has been published by HP. It contains an article by Tim Sneddon called Calling OpenVMS native routines from Java. It covers the Phone Book example of using the language integration tools to call native  
Java Integration Toolkit ReleaseFriday, 23 January 2009  (1 year ago)Kednos is proud to announce the release of the Integration toolkit. Currently focusing on Java, this toolkit provides a collection of tools for making it easier to interface Java and native OpenVMS routines and data structures. The official release announcement  
Translated Support for Alpha PL/I ImagesWednesday, 14 January 2009  (1 year ago)The production release of the Native IPF PL/I Run-Time Library for Translated Images has been announced. This announcement can be read here. Follow this link to go download kits and view the release notes. In other PL/I related news, Ebhard Sturm has just had  
New tools, an RSS feed and much more...Friday, 19 December 2008  (1 year ago)Much has changed on the Kednos website since the last update. The largest change is the new Integration section which covers utilities and libraries for making integration between different languages easier. Most of these tools are also useful to non-PL/I developers  
A New Home for MX and MMKTuesday, 14 October 2008  (1 year ago)The company MadGoat Software has come to an end and Matt Madison (the owner) has released the Mail Exchange (MX) product as open source. Kednos has set up a new home for MX (and soon MMK, the MadGoat Make utility) here. The MX mailing list has also been revived  
Another Correction to PLI$STARLET.TLBTuesday, 08 July 2008  (2 years ago)It has been brought to our attention that the definition of the TPU$INITIALIZE routine is incorrect. An updated copy of the definition can be found here. Once you have downloaded the file, the text library PLI$STARLET.TLB can be updated using a command similar  
Field Test Release of Translated SupportMonday, 23 June 2008  (2 years ago)Kednos has made a field test release of it's PL/I Run-Time Library to support executing translated OpenVMS Alpha PL/I images on OpenVMS I64. Click here to see the announcement. Click here to read the release notes and download a kit.  
New Website for KednosWednesday, 27 June 2007  (3 years ago)Kednos has a new site. Bear with us while we iron out any wrinkles  
No Itanium GEM for KednosWednesday, 18 April 2007  (3 years ago)PL/I on Itanium. OpenVMS Engineering has decided for unintelligible reasons to not provide Kednos with an update GEM compiler backend which supports Itanium. The one we currently use supports only Alpha. But there is hope. If you compile and link on Alpha you  
Correction to PLI$STARLET.TLBThursday, 15 March 2007  (3 years ago)Unfortunately when creating the current compiler kit the starlet library ended up with a faulty version of PLI_FILE_DISPLAY.PLI. You may obtain a correct copy at ftp://ftp.kednos.com/pub/axp/updates/pli_file_display.pli, and you should replace the one you have  
New PL/I Kit for OpenVMS AlphaThursday, 18 January 2007  (3 years ago)A new kit is available which resolves a number of outstanding issues for the Alpha compiler. Please refer to the release notes for more information.  

2.1  Announcements

Date Announcement
23 Jan 2009 Kednos Java Integration Toolkit. PDF
14 Jan 2009 Production release of Kednos' PL/I Itanium Solution. PDF
23 Jun 2008 Field test release of Kednos Native IPF PL/I Run-Time Library for Translated Images. PDF

 

2.3  Power has been restored...

Monday, 19 October 2009 19:39

After being off the virtual map for a few days, thanks to some storm damage, Kednos is back and a few things have happened to the Kednos website.

First there is a new blog by Tim Sneddon, aptly titled Tim's Blog.  The first of many topics, This is the program that doesn't end... has just been posted.  Look out for plenty more interesting topics covering a whole range of computer related subjects.

Secondly, The Halls Of ZK finally has a new home.  The new source code and executables for OpenVMS VAX, Alpha and I64 can be downloaded from here.

Lastly, there have been the usual spelling corrections, updates to links, etc. that you would normally expect.

2.4  A New RSS Feed, Open Source and more...

Thursday, 01 October 2009

The pages for MMK and MX have been moved into the new Open Source section.  Although this is only just being set up, these products are being migrated to a Mercurial repository to further community envolvement.  A new section called Code Management has also been setup.  This page contains details of code management systems available to OpenVMS developers.  Some new links have also been added to the Resources page.

There has also been a number of changes to the Hobbyist pages also.  The license registartion process has been brought into line with the current website design, as well as a host of new information specifically for hobbyists.

The previous RSS feed has since been replace by the new RSS functionality offered as part of Mark Daniel's VWcms website management software.

Lastly, the MMK page has been enhanced to include GNU make binaries for OpenVMS VAX, Alpha and I64 under the section Other Make Utilities.

2.5  NetRexx, SIG Tapes and a Few Extra Changes...

Tuesday, 25 August 2009

A new Articles section has been set up under Documentation.  This is now the home for all articles submitted to the OpenVMS Technical Journal (and possibly others).  There are also some new additions to the Project Euler page.

There is now a new page for documenting Rexx activity on OpenVMS.  The NetRexx interpreter/compiler from IBM has been ported to OpenVMS and is available here.

Lastly, the VMS SIG and L&T tape archives now have a new home at the DECUSLibrary.COMpendium.  To make new submissions for the next release, please visit the new SIG Tapes page under the Resources section.

2.6  PL/I Support for Eclipse IDE

Monday, 15 June 2009

The Editors sections has been updated to included the newly released Eclipse IDE support for PL/I.  Thanks go to William Fenalson for this.

2.7  Project Euler

Friday, 12 June 2009

There have been a few changes to the website.  There is a new section detailing PL/I based solutions to the mathematical problems found at Project Euler.  The Documentation page has been reworked to be a bit neater and more helpful.

2.8  WSIT and J2VMS: A Comparative Analysis

Wednesday, 03 June 2009

The next issue of the OpenVMS Technical Journal is just around the corner.  Tim Sneddon has written an article comparing HP's Web Services Toolkit and Kednos' Java-to-VMS Toolkit.  An advanced copy of this article is available here.

2.9  Robot Find Kitten For PL/I

Monday, 02 February 2009

Some more small changes. The Contact page has been updated (even includes a Google map too). The Resources page now includes details of some PL/I and OpenVMS support forums as well as a Games setion for those looking to waste some time. The Sales & Support page has also been expanded.

2.10  OpenVMS Technical Journal Article

Wednesday, 28 January 2009

The latest issue of the OpenVMS Technical Journal, V12, has been published by HP. It contains an article by Tim Sneddon called Calling OpenVMS native routines from Java. It covers the Phone Book example of using the language integration tools to call native routines from Java.

Also, the RSS topics now have real titles rather than the date they were posted.

2.11  Java Integration Toolkit Release

Friday, 23 January 2009

Kednos is proud to announce the release of the Integration toolkit. Currently focusing on Java, this toolkit provides a collection of tools for making it easier to interface Java and native OpenVMS routines and data structures. The official release announcement is available here. Kits, documentation, etc. can be found over at the Integration page.

If you are an MMK user you may also note that the MMK page does not seem to be complete. This is because it was published prematurely. A new kit will be available very soon. Watch this space for further information.

2.12  Translated Support for Alpha PL/I Images

Wednesday, 14 January 2009

The production release of the Native IPF PL/I Run-Time Library for Translated Images has been announced. This announcement can be read here. Follow this link to go download kits and view the release notes.

In other PL/I related news, Ebhard Sturm has just had his book "The New PL/I" (ISBN: 978-3-8348-072607) published in English. For further information, visit his publisher's website here. He is also the author of an article that compares C and PL/I, a link to which can be found on the Welcome page.

2.13  New tools, an RSS feed and much more...

Friday, 19 December 2008

Much has changed on the Kednos website since the last update. The largest change is the new Integration section which covers utilities and libraries for making integration between different languages easier. Most of these tools are also useful to non-PL/I developers as well. The current set of tools are specifically directed at Java integration. However, other tools are expected to be included in the future.

Next are updates to the Resources section. Under this section there is now an Editors page that provides links to PL/I friendly editors and development environments. There is now a growing Benchmarks page also. This has a collection of publicly available benchmarks that have been re-coded in PL/I. There is a small collection of results which, hopefully with customer participation, will grow also. Lastly, there is also the MMK website. Like MX, Kednos has picked up the MMK utility and given it a new home here.

For those seeking to keep up to date with what happens at Kednos there is now an RSS feed that will be kept in line with the What's New? page. It can be subscribed to above. There is also a new PL/I Announcement Mailing List to keep PL/I customers posted on PL/I-specific updates. It can also be subscribed to above.

2.14  A New Home for MX and MMK

Tuesday, 14 October 2008

The company MadGoat Software has come to an end and Matt Madison (the owner) has released the Mail Exchange (MX) product as open source. Kednos has set up a new home for MX (and soon MMK, the MadGoat Make utility) here. The MX mailing list has also been revived (including archives). Details on joining can be found at the new MX page.

2.15  Another Correction to PLI$STARLET.TLB

Tuesday, 08 July 2008

It has been brought to our attention that the definition of the TPU$INITIALIZE routine is incorrect. An updated copy of the definition can be found here. Once you have downloaded the file, the text library PLI$STARLET.TLB can be updated using a command similar to the following:

$ LIBRARY/REPLACE SYS$LIBRARY:PLI$STARLET.TLB ddcu:[...]TPU$INITIALIZE.PLI

Please note that this change will not effect existing code. This fix will be included in the next compiler release for both VAX and Alpha.

2.16  Field Test Release of Translated Support

Monday, 23 June 2008

Kednos has made a field test release of it's PL/I Run-Time Library to support executing translated OpenVMS Alpha PL/I images on OpenVMS I64. Click here to see the announcement. Click here to read the release notes and download a kit.

2.17  Correction to PLI$STARLET.TLB

Thursday, 15 March 2007

Unfortunately when creating the current compiler kit the starlet library ended up with a faulty version of PLI_FILE_DISPLAY.PLI. You may obtain a correct copy at ftp://ftp.kednos.com/pub/axp/updates/pli_file_display.pli, and you should replace the one you have in your current pli$starlet.tlb with this one if you are having problems using DISPLAY. The next release of the compiler will remedy this problem

2.18  New Website for Kednos

Wednesday, 27 June 2007

Kednos has a new site. Bear with us while we iron out any wrinkles

2.19  No Itanium GEM for Kednos

Wednesday, 18 April 2007

PL/I on Itanium. OpenVMS Engineering has decided for unintelligible reasons to not provide Kednos with an update GEM compiler backend which supports Itanium. The one we currently use supports only Alpha. But there is hope. If you compile and link on Alpha you may use the AEST tool to create an Itanium executable. We provide the shared PL/I runtime library native on Itanium. We realize that this is a bit cumbersome, but, it gets you there. Complain to Mark Hurd.

2.20  New PL/I Kit for OpenVMS Alpha

Thursday, 18 January 2007

A new kit is available which resolves a number of outstanding issues for the Alpha compiler. Please refer to the release notes for more information.

2.21  Tim's Blog

 

Blog Roll

Tag Cloud

Contact

Do you have comments, feedback,
suggestions, complaints or flames?
Then please feel free to pass them
on here.

[Valid RSS]

 

Hi,

I'm Tim Sneddon and this is my blog.  I work at Kednos as a Senior Software Specialist.  In this capacity I've been involved in just about everything from website maintenance to system management and compiler development.  Once upon a time I worked for Reynolds & Reynolds (now Pentana Solutions) in Australia and the various incarnations of Infomedia's Business Systems Division.

You can expect to see a number of topics covered here.  There will be plenty of OpenVMS, PL/I, BLISS, Linux, LLVM, C and many others (maybe even some Itanium assembly and TECO too).  I'll try and keep up a level of "human" posts too.

This blog isn't my only literary outlet.  I have also contributed articles (and continue to do so) to the OpenVMS Technical Journal.  If you're just interested in my articles, you can read them here.

If you're wondering what exactly goes on around the office then you can check out the webcam and see for yourself.

Lastly, this blog (as well as the entire Kednos website) has been developed using Mark Daniel's (the man behind WASD) VWcms.

Running Java Software on OpenVMSThursday, 08 April 2010 01:38  (5 months ago)Things have been pretty quiet on my blog for the last few months. Of course, this doesn't mean things have been quiet with me. On the contrary, the blog has been neglected because I have been quite busy. So, here is the first of many posts covering the things  [more]
Images from launch of Soyuz TMA-17Monday, 21 December 2009 21:51  (8 months ago)Yesterday, at 21:52 UTC I had the pleasure of watch the Soyuz TMA-17 spacecraft lauch from Baikonour Cosmodrome in Kazakhstan. This is the first time I have watched a Soyuz launch. It is also the second time I have watched a space craft launch via the streaming  [more]
A BLISS-ful family treeSunday, 13 December 2009 21:52  (8 months ago)A while back there were some posts on comp.os.vms regarding the history of Digital Equipment Corporation like, "Dave Cutler, Prism, DEC, Microsoft, etc." This particular post covered most of the DEC userland mythology. As usual though it is more than a little  [more]
Improvements in VWcmsSunday, 22 November 2009 23:26  (9 months ago)This blog, and in fact the entire Kednos website, is maintained using the web content management system, VWcms (pronounced vee-dub). VWcms is a software packaged developed and maintained by Mark Daniel, the author of the WASD web server software. The software  [more]
TECO has now entered the realm of the internetThursday, 19 November 2009 20:18  (9 months ago)So it's Friday and I feel like doing something a little fun although not really that useful. Yesterday I made a crack about getting TECO running in a Common Gateway Interface environment. Well, that's exactly what I decided to do. What follows is a set of basic  [more]
Serving Mercurial repositories from OpenVMSMonday, 16 November 2009 08:51  (9 months ago)I have just completed configuring the Mercurial repositories that hold the open source software served by Kednos. It is now possible to use the hg client to fetch and build MMK (The Halls Of ZK and MX will follow very soon) from http://hg.kednos.com. The following  [more]
DOS file attributes on OpenVMSMonday, 02 November 2009 05:10  (10 months ago)A few years ago, four according to the source, I was asked if it was possible to set the DOS file attributes on an OpenVMS file that existed on an Advanced Server (aka Pathworks) share. I wasn't sure, but it took only a minute or so to check it out. Sure enough  [more]
Jabbing the JIB...Monday, 26 October 2009 07:43  (10 months ago)Recently there was a post to comp.os.vms, JIB Jab. It asked of a way, from DCL, to determine the name of a process' job logical name table. I posted (and submitted to dcl.openvms.org) the following procedure as a solution: $ set noon $ on warning then goto  [more]
The VMS/L&T SIG Collection needs YOU!Friday, 23 October 2009 08:56  (10 months ago)I have announced (even tweeted) a call for submissions for the next VMS/L&T SIG Collection. That's right. It's a collection now, not a tape. The last release was all the way back in Spring (for those in the Northern Hemisphere) 2007. A lot has happened since  [more]
This is the program that doesn't end...Monday, 19 October 2009 20:19  (10 months ago)Does anyone remember that song, The Song That Never Ends? I remember it from the end credits of Lamb Chop's Play Along when I was a kid. That was the first thing I thought of when I heard of a quine. Although, a quine is a whole lot easier to tolerate! Of course  [more]

2.21.1  This is the program that doesn't end...

Monday, 19 October 2009 20:19

Does anyone remember that song, The Song That Never Ends?  I remember it from the end credits of Lamb Chop's Play Along  when I was a kid.  That was the first thing I thought of when I heard of a quine.  Although, a quine is a whole lot easier to tolerate!

Of course, once I heard about these programs I started looking round for quines in my favourite languages.  Of course there are plenty written in C.  However, I was only able to come up with this one for PL/I.  Unfortunately, according to the comments it will only compile using the OS PL/I V2.3.0 compiler with certain options set.  Whatever the requirements, it wouldn't compile on OpenVMS.  It also, erroneously, claims to be the smallest possible PL/I quine.  So, in the spirit of innovation (at least that's what I'm going to call it), here is my contribution.

q:proc;dcl s char(94)init('q:proc;dcl s char(94)init();put list(substr(s,1,26)||byte(39)||s||byte(39)||substr(s,27));end;');put list(substr(s,1,26)||byte(39)||s||byte(39)||substr(s,27));end;

It will compile straight out of the box using the Kednos PL/I compiler on VAX and Alpha.  It may compile using other PL/I compilers.  The BYTE built-in function is an extension to the ANSI General Purpose Subset (ANSI X3.74-1987 (R1998)) so it may not work everywhere.  Although the documentation for the IBM compilers indicates they support it.

The following is an expanded version to make it easier to understand what is going on.  I should point out that this next sample is not a quine, it's just easier to read than the muddle of characters above.

q: proc;
    dcl s char(94) init('q:proc;'
                     || 'dcl s char(94) init(); '
                     || 'put list(substr(s, 1, 26) || byte(39) || s || byte(39) || substr(s, 27));'
                     || 'end;');
    put list(substr(s, 1, 26) || byte(39) || s || byte(39) || substr(s, 27));
end;

It works by storing most of the program as an initial value to the character string s.  The only thing missing from this initial value is s itself and its surrounding quotes, which are inserted during execution with the concatenated input to PUT LIST.

Ahh, don't ya just love a good ol' fashioned waste of time?

Further Reading

For more mind-numbing quine madness have a look at these pages.

2.21.2  The VMS/L&T SIG Collection needs YOU!

Friday, 23 October 2009 08:56

I have announced (even tweeted) a call for submissions for the next VMS/L&T SIG Collection.  That's right.  It's a collection now, not a tape.  The last release was all the way back in Spring (for those in the Northern Hemisphere) 2007. A lot has happened since then.  The collection has a new maintainer (me) and the historical archives have moved to the new DECUSLIBrary.COMpendium.

The current plan is to have all submissions in by January 1st, 2010 with the "VMS/L&T SIG Collection 2009 H2" distribution ready for shipping by February 1st, 2010.  I do intend to have the collections released half-yearly.  Hopefully this release will make up for all those that have been missed.

If you are interested in contributing, please head on over to the SIG Collection page and make a submission.  You don't even have to be the author.  If you see something useful drop me a line and I'll chase up the author and handle the packaging requirements.

If you don't have any software to give and you still want to contribute, then maybe consider becoming a distribution point.  The physical media is distributed by tree.  So, the maintainer sends out a bunch of masters which are then copied and distributed to local (or at least semi-local) recipients.  Although, in this day and age of broadband internet I imagine there won't be too many people looking for physical media.

To give you an idea of what to expect in the 2009 H2 release, the following packages have already been fetched for inclusion.

Please post more suggestions, whether it be below or at the SIG Collection page.

2.21.3  Jabbing the JIB...

Monday, 26 October 2009 07:43

Recently there was a post to comp.os.vms, JIB Jab.  It asked of a way, from DCL, to determine the name of a process' job logical name table.  I posted (and submitted to dcl.openvms.org) the following procedure as a solution:

$ set noon
$ on warning then goto bail_out
$ on control_y then goto bail_out
$
$ say = "write sys$output"
$
$ p1 = f$edit(p1,"TRIM,UNCOMMENT,COLLAPSE,UNCOMMENT")
$ if (p1 .eqs. "") then p1 = f$getjpi("","PID")
$
$ pipe say "show process/id=''p1'" -
     | analyze/system -
     | search sys$pipe "JIB" -
     | ( read sys$pipe result ; -
         define/job/nolog pipe_result &result )
$
$ jibadr = f$element(5," ",f$edit(f$trnlnm("PIPE_RESULT"),"COMPRESS,TRIM"))
$
$ say "The job table for process ''p1' is LNM$JOB_''jibadr'"
$
$bail_out:
$ exitt 1

The procedure accepts the process id to look up in P1.  If no process id is specified then, like all process related queries, it default to the current process.

This procedure works because a process' job logical name table is constructed from the string 'LNM$JOB_' and the 32-bit hexadecimal representation of the Job Information Block (JIB) address.  The JIB of a process is accessible via the ANALYZE/SYSTEM utility and its SHOW PROCESS command.  The output from SHOW PROCESS looks something like the following snippet:

Process index: 02CA   Name: Tim at FTA40      Extended PID: 20404ECA
--------------------------------------------------------------------
Process status:          020C0001  RES,PHDRES,HIBER,INTER
        status2:         00000001  QUANTUM_RESCHED

PCB address              8227CEC0    JIB address              824817C0
PHD address              8462E000    Swapfile disk address    00000000
KTB vector address       8227D1B0    HWPCB address   FFFFFFFF.8462E080

By searching for the string 'JIB' the address is extracted and the job logical name table is determined.  The following test demonstrates the procedure works correctly.

$ @GETJIB
The job table for process 2040500B is LNM$JOB_82483040
$ SHOW LOGICAL/JOB ASDF*

(LNM$JOB_82483040)
%S, no translation for logical name ASDF*

2.21.4  DOS file attributes on OpenVMS

Monday, 02 November 2009 05:10

A few years ago, four according to the source, I was asked if it was possible to set the DOS file attributes on an OpenVMS file that existed on an Advanced Server (aka Pathworks) share.  I wasn't sure, but it took only a minute or so to check it out.  Sure enough, from Windows Explorer it was easy enough done.  A right-click and a couple left-clicks later and it was confirmed.  Then came the real reason for the question, "Can we do it from VMS?"  The story goes that, apparently a manufacturer required that a previous employer's software output data files to a Windows share.  The manufacturer in question then used their own special tool to open the files and process the data.  However, in order to be compliant with their requirements we needed to set the readonly attribute on the data files.  Given the possibilities of ACLs and everything else available to Windows users it seemed crazy, but that wasn't the point.  So, to solve this problem I came up with an OpenVMS version of the ATTRIB utility.

I started with looking at the output from a DIRECTORY/FULL of the file I had tested with and came up with something like the following output:

Directory USER$:[TSNEDDON.SOURCE.ATTRIB.NEW]

TEST.TXT;1                    File ID:  (142221,34,0)
Size:            0/0          Owner:    [VMSUSER,TSNEDDON]
Created:    18-OCT-2009 22:45:19.94
Revised:    18-OCT-2009 22:45:19.94 (1)
Expires:    <None specified>
Backup:     <No backup recorded>
Effective:  <None specified>
Recording:  <None specified>
Accessed:   <None specified>
Attributes: <None specified>
Modified:   <None specified>
Linkcount:  1
File organization:  Sequential
Shelved state:      Online
Caching attribute:  Writethrough
File attributes:    Allocation: 0, Extend: 0, Global buffer count: 0
                    No version limit
Record format:      Variable length, maximum 0 bytes, longest 0 bytes
Record attributes:  Carriage return carriage control
RMS attributes:     None
Journaling enabled: None
File protection:    System:RE, Owner:RWED, Group:RE, World:RE
Access Cntrl List:  Suppressed 1 PATHWORKS ACE
Client attributes:  Read-Only, System, Hidden

Total of 1 file, 0/0 blocks.

As you can see, the 'Client attributes' field lists the DOS file attributes.  So I started looking at the source listings for the DIRECTORY command.  In particular the source module [DIR]DISPLAY.B32 and the routines DIR$GET_CLIENT_ATTRIB and DIR$SHOW_CLIENT_ATTRIB.  Together, these routines have knowledge of the Pathworks ACE that holds the DOS file attributes as they are responsible for the output of the field 'Client attributes' in the listing above.

Unfortunately I could not locate a routine to write these attributes and nothing public that could read them.  So I searched through the source listings and eventually came up with the SDL module [F11X]PWACLDEF.SDL.  This had more than enough information for me to work with.  So, coupled with this module and the listings for DIRECTORY I wrote an OpenVMS ATTRIB utility.  The complete source code and executable for all architectures are here.

Advanced Server stores the attributes as one of many Pathworks ACEs.  These are suppressed (as shown above) in later version of the directory command, but a dump of the data can still be retrieved using either the SHOW ACL (obsolete) or SHOW SECURITY commands, like so:

freja_FTA9> SHOW SECURITY TEST.TXT

USER$:[TSNEDDON.SOURCE.ATTRIB.NEW]TEST.TXT;1 object of class FILE
     Owner: [VMSUSER,TSNEDDON]
     Protection: (System: RWED, Owner: RWED, Group, World)
     Access Control List:
          (UNKNOWN=%X80,SIZE=%D46,FLAGS=%X0000,ACCESS=%X00006900,DATA=
          %X00000008,%X00000000,%X0000041E,%X00000007,%X00000000,%X00000000,
          %X00000000,%X3B530000,%X3B53059B,%X00000971)

The type of %X80 (128) is equal to PWRK$C_PATHWORKS_ACE indicating the ACE is a for Pathworks.  The first word of the fourth longword (%X00000007) in the data contains the bitmask indicating which DOS attributes are active. 

ATTRIB acts almost exactly like the DOS/Windows equivalent.  It even supports the undocumented ',' operator.  The HELP reported by the /? qualifier is shown below.

Displays or changes Pathworks file attributes.

ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] [filespec[,...]]

  +   Sets an attribute.
  -   Clears an attribue.
  R   Read-only file attribute.
  A   Archive file attribute.
  S   System file attribute.
  H   Hidden file attribute.
  filespec[,...]
      Specifies a file or files for attrib to process.
      There is no support for the /S and /D qualifiers.  These
      can be performed using OpenVMS syntax.

  ,   Specifying the comma immediately after the command
      will cause all attributes to be cleared from all
      files in the following filespec

However, I don't imagine that there will be too much use for this utility these days.  The Advanced Server product has been placed into maintenance mode and will not be ported to the Integrity platform.  Unfortunately the licensing arrangement between Microsoft, HP and AT&T fell apart and so the next step in keeping up with the ever evolving WIndows network on OpenVMS is the HP Common Internet File System (CIFS) product.  It is an officially supported port of the open source Samba software.

Software

The ATTRIB utility and complete (BLISS) source code can be downloaded below:

Fell free to use it to your heart's content.  Maybe even post something below and let me know how you got on.

2.21.5  Serving Mercurial repositories from OpenVMS

Monday, 16 November 2009 08:51

I have just completed configuring the Mercurial repositories that hold the open source software served by Kednos.  It is now possible to use the hg client to fetch and build MMK (The Halls Of ZK and MX will follow very soon) from http://hg.kednos.com.  The following demonstrates a successful clone of the MMK repository.

$ hg clone http://hg.kednos.com/mmk
destination directory: mmk
requesting all changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 44 changes to 44 files
updating working directory
44 files updated, 0 files merged, 0 files removed, 0 files unresolved

So, how did I get this all set up?  Well that is the topic of this post.  I have spent a bit of time tinkering around, reading the Mercurial documentation as well as some snippets of configuration files here and there.  The first part was installing Mercurial.  Mercurial has been ported by Jean-François Piéronne as part of his efforts in porting Python to OpenVMS.  The Mercurial distribution is included on the Python logical disk and is not available as a PCSI (or other) kit.  I chose to move the Mercurial distribution to our own physical disks and used the following commands to do so:

$ LD CONNECT <python-ld>
%I, Allocated device is $7$LDA5:
$ MOUNT/OVERRIDE=IDENTIFICATION LDA5:
$ BACKUP LDA5:[Mercurial...]*.* ddcu:[dir...]

As I said, this step is not necessary and entirely up to the user, I just like it this way.  I then tweaked my login procedure to include the following commands to ensure I always have the relevant foreign symbols configured:

$ IF (F$SEARCH("PYTHON_ROOT:[VMS]SETUP.COM") .NES. "") THEN -
    @PYTHON_ROOT:[VMS]SETUP
$ IF (F$SEARCH("MERCURIAL_ROOT:[VMS]SETUP.COM") .NES. "") THEN -
    @MERCURIAL_ROOT:[VMS]SETUP

Once Mercurial had been installed and was running correctly, I began work on setting up the webpage that can be seen at http://hg.kednos.com.  To serve the Mercurial repository we use (as we do for all our web facing needs) WASD.  After some searching round on the 'net I found a couple snippets of WASD configuration file here and here.  So, using these as a base I began to fiddle around with our setup.

Firstly, I needed somewhere to store the CGI procedure that handles all incoming connections as well as the repositories.  I created the logical MERCURIAL_HOME.  Although it seems to be the norm to use the abbreviation "hg" I found that to be troublesome in our setup as we also use Hunter Goatley's HGFTP for all our FTP needs.  So, I created a directory and copied/created the relevant files and created the first repository like so:

$ CREATE/DIRECTORY ddcu:[MERCURIAL]
$ DEFINE/SYSTEM/EXECUTIVE_MODE/TRANSLATION_ATTRIBUTES=CONCEALED -
   MERCURIAL_HOME ddcu:[MERCURIAL.]    ! Don't forget to put this one in SYLOGICALS.COM too.
$ SET DEFAULT MERCURIAL_HOME:[000000]
$ COPY MERCURIAL_ROOT:[VMS]HGCGIPLUS.COM MERCURIAL_HOME:[000000]
$ CREATE LOGIN.COM
$ EXITT 1^Z
$ CREATE HGWEB.CONFIG
[web]
style = gitweb

[paths]
mmk = mmk^Z
$ hg init mmk
$ CREATE [.mmk.^.hg]hgrc.
[web]
style = gitweb
description = MMK Make Utility
contact = Tim E. Sneddon <tsneddon@kednos.com>
name = mmk
allow_archive = gz zip bz2^Z

I ended up tweaking our version of hgcgiplus.com as we have a number of different version of OpenVMS running in our cluster.  As a result of that we have three different PYRTE images.  So, after a number of seemingly random HTTP 502 errors and some tinkering with WASD's WATCH facility I finally recalled what had been done for MoinMoin ( we used it before VWcms) and added in the pre-amble that picks up the correct image.

So, with all the files in the right place and a fresh repository waiting to be filled I began configuring WASD.  First up was the configuration of the service.  I added the following two lines to HTTPD$SERVICE.

[[http://hg.kednos.com]]
[[https://hg.kednos.com]]

That was no trouble, so now it's time to add the mapping rules to HTTPD$MAP, like so.

[[hg.kednos.com]]
pass /static/* /mercurial_root/mercurial/templates/static/*
pass /mmk/static/* /mercurial_root/mercurial/templates/static/*
pass /*/-/* /ht_root/runtime/*/* cache=perm
pass /ht_root/runtime/* /ht_root/runtime/*
script+ * /mercurial_home/hgcgiplus* \
    map=once ods=5 script=syntax=unix script=query=none \
    script=as=mercurial throttle=1,,,30 \
    script=param=PYRTE=/WSGI=BUFFER

This is a little more involved.  The first couple lines ensure that all the static data references, like images and CSS for the template, are available.  The next is a special rule added for the purpose of  showing the Mercurial FastCGI procedure for this post.  The next two lines ensures that the HTTP error message help pages all work correctly.  Lastly, the line that allows everything to run.

The final rule ensures that everything not matched by the preceding pass rules is treated as a query string to be processed by Mercurial.  All path names are translated to the POSIX/UNIX format.  According to the WASD PyRTE documentation the final line causes a 4x improvement in speed.

The final step in the configuration is to set up the MERCURIAL user that the hgcgiplus.com script executes under.  I simply copied the HTTP$NOBODY user that is created as part of the WASD installation.  I used the following commands:

UAF> COPY HTTP$NOBODY MERCURIAL/OWNER="Mercurial Server"/UIC=[ggg,uuu]

With the MERCURIAL user created the protections can be set on the hgcgiplus.com procedure, like so:

$ SET SECURITY/ACL=((IDENTIFIER=WASD_HTTP_NOBODY,ACCESS=READ+EXECUTE), -
                    (IDENTIFIER=*,ACCESS=NONE)) -
              /OWNER=MERCURIAL MERCURIAL_HOME:[000000]HGCGIPLUS.COM

Now that everything is configured I told WASD to re-read its configuration and show me what I had created.

$ HTTPD == "$HT_EXE:HTTPD"
$ HTTPD/DO=DCL=PURGE/CLUSTER
$ HTTP/DO=MAP/CLUSTER

Voila!  Now we have a working Mercurial repository.  For the moment it is pull only.  All modifications to the repository are handled locally.  In the not to distant future I intend to get the push functionality up and running.  When I do so, I'll post about that and how to configure the security necessary when providing the push facility.

Now, wouldn't it be wonderful if it had been that easy?  Of course this is the shortened version with everything in the correct order and neatly written out.  I spent a while playing  around trying to get things working changing configurations, putting them back again and so on.  Hopefully everything above will save somone the hassle of figuring it out for themselves also.

Did I miss anything?  Post a comment below and let me know.

2.21.6  TECO has now entered the realm of the internet

Thursday, 19 November 2009 20:18

So it's Friday and I feel like doing something a little fun although not really that useful.  Yesterday I made a crack about getting TECO running in a Common Gateway Interface environment.  Well, that's exactly what I decided to do.  What follows is a set of basic instructions for getting your favourite editor/language up and running as a CGI handler on OpenVMS using the WASD web server.

First things first.  The HTTPD$CONFIG file needs a tweak to add support for the TECO interpreter.  The snippet below shows how to tell WASD what to do when it encounters a file ending in .TEC.

[DclScriptRunTime]
.TEC EDIT/TECO/NOCOMMAND/EXECUTE=

It is sufficient to simply use the command $ HTTPD/DO=RESTART to make this active.  Now, drop a procedure (like TECO_RULES.TEC) in CGI-BIN:[000000] and point your browser at the right address.  In the case of this example it is http://www.kednos.com/cgi-bin/teco_rules.tec.

Seems easy, eh?  Well, there are just a couple things that need to be mentioned.  To fetch the CGI variables it is necessary to use the SYM built-in function.  For example, to fetch the REQUEST_METHOD you would use:

@:EG%SYM WWW_REQUEST_METHOD%

This will leave the value of the REQUEST_METHOD in the file buffer register *.

For POST requests it is necessary to retrieve the POST data from the HTTP$INPUT stream.  This can be opened and read just like a regular file using ER and the various Yank commands. 

The last thing to remember is that TECO CGI procedures, just like regular MUNG'd procedures, have some simple requirements.  The procedure must close the indirect input (like so, @EI%%) and terminate the file with ^C^C<ESC><ESC>.  In the case of the second ^C (as with the <ESC>s) it must be a literal ASCII 0x03.

So far there are no plans for a TECORTE to support persistent scripting, but who knows...? :-)

Links

The following links may prove useful to anyone interested in writing some CGI TECO.

2.21.7  Improvements in VWcms

Sunday, 22 November 2009 23:26

This blog, and in fact the entire Kednos website, is maintained using the web content management system, VWcms (pronounced vee-dub).  VWcms is a software packaged developed and maintained by Mark Daniel, the author of the WASD web server software.  The software is of an excellent standard and Mark's support has always been great.

Recently I was putting together an upcoming blog entry that makes rather extensive use of the $$IF$$ substiution control directive.  VWcms seemed to have a problem with executing the code snippet below correctly.  According to the manual this snippet should test for the pressence of the CGI variable TEST and succeed if it was not present, which it didn't seem to be doing.  So, out of interest as to how VWcms works I decided to have a go at investigating and fixing it myself.

$$IF$!cgi=WWW_FORM_TEST$$
    <some_html/>
$$ELSE$$
    <other_html/>
$$ENDIF$$

After some fiddling around I discovered that the value for the CGI variable TEST would default to an empty string.  So, even when the variable was not present in the URL it would always appear as if it had, just without a value.  I corrected this and it is now possible to test for the presence of a CGI variable as decribed by the documentation.

While fiddling around in this code I decided that it might be a good idea to add support for some other operators to the "cgi=" parameter.  In the official release it is only possible to specify "=" which actually performs a substring match rather than a test for equality.  For example, the following piece of code will match when INDEX is both "1" and "11".

$$IF$cgi=WWW_FORM_INDEX=11$$
    <matched/>
$$ENDIF$$

I have altered this behaviour for my patch.  Although I have not noticed any erratic results there may be something lurking in the depths and your mileage may vary.  However, it is now possible to compare the CGI variable value with a static string using the following operators:

Operator Description Syntax
= Equality $$IF$cgi=WWW_FORM_INDEX=10$$
== Symonym for "=" $$IF$cgi=WWW_FORM_INDEX==10$$
<> Inequality $$IF$cgi=WWW_FORM_INDEX<>10$$
< Less than $$IF$cgi=WWW_FORM_INDEX<9$$
> Greater than $$IF$cgi=WWW_FORM_INDEX>11$$
<= Less than or equal to $$IF$cgi=WWW_FORM_INDEX<=9$$
>= Greater than or equal to $$IF$cgi=WWW_FORM_INDEX>=11$$
<=> Substring match.  This is the original functionality of the "=" operator. It locates the specified substring in the CGI variable's value. $$IF$cgi=WWW_FORM_INDEX<=>11$$

*All comparisons are case insensitive.

Lastly, on Mark's suggestion I also applied a call to CgiLibHtmlDeEntify() to the code that matches the login= and rss= tests also.  This call ensures that all "entified" text (i.e. &lt; and others) is converted to regular text.

Patch

I have constructed a patch based on the V0.94 release of VWcms.

  • VWcms software patch DIF

This patch was created using the DCL command DIFFERENCES/SLP.  Use the following command to apply it:

$ EDIT/SUM HT_ROOT:[SRC.VWCMS]TEMPLATE.C/UPDATE=ddcu:[dir]TEMPLATE.DIF

 

2.21.8  A BLISS-ful family tree

Sunday, 13 December 2009 21:52

A while back there were some posts on comp.os.vms regarding the history of Digital Equipment Corporation like, "Dave Cutler, Prism, DEC, Microsoft, etc."  This particular post covered most of the DEC userland mythology.  As usual though it is more than a little Lite on the facts.  Thankfully, this post has nothing to do with PRISM, Dave Cutler or all the other conspiracy theories.

My gripe was with some comments regarding the history of BLISS.  Those of you that know me will probably know that I have a sad, warped affection for the BLISS language.  So, after responding to that particular post I decided to knock up a family tree/timeline of BLISS.  It is much the same design as the UNIX family tree that can be found in "The Design and Implementation of the 4.4BSD Operating System".

The timeline does not show product version releases, just when the first version of that particular compiler became available.  To find out what each variant did, what it targeted and where it ran, hover over the name with the mouse cursor.

BLISS-10
BLISS-10 is the original BLISS compiler created at CMU by Wulf, et. al.  This compiler generated native PDP-10 objects from the BLISS-10 language.
BLISS-605
BLISS-605 was a compiler for the Honeywell 6000.  This was essentially BLISS-10 with a special linker that converted the TOPS-10 object to GCOS format.
BLISS-11
BLISS-11 is the subject of "The Design of an Optimizing Compiler". The BLISS-11 compiler was a cross-compiler that ran on the PDP-10 and produced PDP-11 objects.
BLISS-32
BLISS-32 targeted the Common BLISS language to the (at the time) new VAX-11 architecture.  It was originally a cross-compiler hosted on the PDP-10 that generated VAX objects.  A native variant was soon developed.  This was the first Common BLISS compiler that generated object code.
BLISS-36C
BLISS-36C is a compiler that accepts Common BLISS and produces BLISS-10 source which is then compiled by the BLISS-10 compiler to generate object.
BLISS-16C
BLISS-16C is a Common BLISS cross-compiler hosted on the PDP-10 that generated BLISS-11 source and then invoked the BLISS-11 compiler to generate PDP-11 objects.
BLISS-36
BLISS-36 is a Common BLISS compiler that generates PDP-10 object code natively.
BLISS-16
BLISS-16 is a Common BLISS compiler that was hosted on both the PDP-10 and VAX-11 systems producing PDP-11 object code.  It did not receive much attention on the PDP-10 and enjoyed most use on the VAX-11 which also supported the PDP-11 compatability mode.
Micro-BLISS
Micro-BLISS was an attempt to create a PDP-11 native BLISS-16 compiler. Although it did work, unfortunately the PDP-11 did not offer the address space necessary and many features were left out. This compiler did not enjoy much use.
BLISS-32P
BLISS-32P was a compiler that targeted the cancelled PRISM architecture.  This was also the first GEM-based compiler.  All new BLISS compilers developed following this milestone all used the GEM backend.
BLISS-32M
BLISS-32M targeted the MIPS architecture.  This variant was a VAX hosted cross-compiler.  This compiler did not get a lot of use.  It was created to allow the Ada and FORTRAN compilers to be ported to MIPS.
DECSIM
DECSIM was a special VAX hosted cross-compiler that targeted DECSIM, the Alpha processor simulator.
BLISS-32E
BLISS-32E is a VAX hosted cross-compiler that targets the 32-bit OpenVMS Alpha environment.
BLISS-64E
BLISS-64E is a cross-compiler hosted on OpenVMS VAX that targets the 64-bit OpenVMS Alpha environment
BLISS-32MN
BLISS-32MN was the native variant of the MIPS targeted BLISS-32M cross-compiler
BLISS-64AO
BLISS-64AO was a Tru64 targeted cross-compiler
BLISS-64AW
BLISS-64AW was a Windows NT Alpha targeted 64-bit cross-compiler.
BLISS-32AO
BLISS-32AO was an OpenVMS VAX hosted cross-compiler targeting the Tru64 taso environment.
BLISS-32EN
BLISS-32EN is a native OpenVMS Alpha compiler generating mixed 32/64-bit objects.
BLISS-32AW
BLISS-32AW is an OpenVMS VAX hosted cross-compiler targeting the Windows NT Alpha environment.
BLISS-32IW
BLISS-32IW was an OpenVMS VAX hosted compiler targeting the Intel IA-32 architecture running Windows 95 and NT. This compiler only supported those BLISS features necessary to get a working Windows-based Fortran 90 product.
BLISS-64AON
BLISS-64AON is the native Tru64 variant of the BLISS-64AO cross-compiler.
BLISS-64AWN
BLISS-64AWN was the native Windows NT Alpha variant of the BLISS-64AW.
BLISS-32AON
BLISS-32AON is the Tru64 native variant of the BLISS-32AO cross-compiler.
BLISS-32AWN
BLISS-32AWN is the Windows NT Alpha native variant of the BLISS-32AW cross-compiler.
BLISS-32IWN
BLISS-32IWN is the native Windows variant of the BLISS-32IW cross-compiler.
BLISS-64ANAU
BLISS-64ANAU was a compiler targeting the unreleased Alpha-based Tandem/NonStop systems.
BLISS-64AT
BLISS-64AT was an Alpha Linux compiler used to port the GEM-based FORTRAN 90, C and C++ compilers.
BLISS-64EN
BLISS-64EN is a native OpenVMS Alpha compiler generating clean 64-bit objects.
BLISS-64I
BLISS-64I is an OpenVMS Alpha hosted cross-compiler generating objects for OpenVMS I64.
BLISS-64IN
BLISS-64IN is a native OpenVMS I64 variant of the BLISS-64I cross-compiler.
BLISS-32I
BLISS-32I is an OpenVMS Alpha host cross-compiler generating mixed 32/64 bit objects for OpenVMS I64
BLISS-32IN
BLISS-32IN is a native OpenVMS I64 variant of the BLISS-32I cross-compiler.

References

This article has been composed of information gathered from the BLISS source code library history and the articles listed below.

  1. R. F. Brender, "Generation of BLISSes," in IEEE Transactions on Software Engineering, vol. SE-6, Nov. 1980.
  2. R. F. Brender, "The BLISS Programming Language: A History," Aug. 2000
  3. S. O. Hobbs, "Re: BLISS-16 availability?", posted to comp.os.vms 2nd June 1995
  4. M. K. McKusik, K. Bostic, M. J. Karels, J. S. Quaterman, "The Design and Implementation of the 4.4BSD Operating System". Addison-Wesley, 1996.

Acknowlegements

The BLISS family tree has been developed with the help of the following websites and utilities:

  • A More Accessible Map by Seth Duffey for the layout of the map;
  • Dia on Windows was used to build the tree diagram; and
  • The GIMP was used to size, crop and make the image transparent.

 

2.21.9  Images from launch of Soyuz TMA-17

Monday, 21 December 2009 21:51

Yesterday, at 21:52 UTC I had the pleasure of watch the Soyuz TMA-17 spacecraft lauch from Baikonour Cosmodrome in Kazakhstan.  This is the first time I have watched a Soyuz launch.  It is also the second time I have watched a space craft launch via the streaming video feed offered by NASA TV.  To cap it all off, later that night my eldest son and I watched the International Space Station fly by.  To make the night complete we also caught sight of a shooting star.

It was quite an exciting day for me, as far as space travel goes.

While watching the launch I made a few screen grabs with my SnagIt "camera".  They may not be the best quality (there are loads of high-resolution pictures around the 'net), but they are the only ones I could take (given my Olympus just doesn't have that kind of range).



Lastly, I spent some time looking around for Soyuz TMA-17 flight path information as I was hoping to see it also.  I eventually came across a Java applet at the Russian Mission Control Centre that gave tracking information here.  After some playing around I discovered that it could display other things too, so I setup my own tracking page that enables these here.

Links

The following are a collection of links related to the Soyuz TMA-17 mission.

Acknowlegements

I would like to thank NASA and the Russian Federal Space Agency for their live coverage via NASA TV.  Space enthusiasts are scattered all over the world and while all the noise is usually made in Florida or Baikonour, NASA TV ensures that the rest of the world can hear and see it when it happens.

2.21.10  Running Java Software on OpenVMS

Thursday, 08 April 2010 01:38

Things have been pretty quiet on my blog for the last few months.  Of course, this doesn't mean things have been quiet with me.  On the contrary, the blog has been neglected because I have been quite busy.  So, here is the first of many posts covering the things that have kept me away.

I don't know how many people reading this have ported Java applications to OpenVMS.  However, if you haven't, it's generally a lot easier than you might think.  Over time I have built up a bit of a "method" for getting Java software up and running quickly on OpenVMS.  My biggest quibble with Java applications is that they often need many of the JAVA$* or DECC$* logicals to be configured.  This often disrupts my environment, which I don't like.  The only "POSIX-like" option I have configured in my login is SET PROCESS/PARSE_STYLE=EXTENDED.  I find that this gives me a decent balance between the traditional DCL and just enough features so I can navigate through UNIX software archives without too much hassle.

When porting any software the first thing I do is check out what has been done for other platforms.  Normally if the package is available on both Windows and a UNIX derivative there is enough of a cross-section to see what sort of things might need changing.  Most Java packages are shipped with both a shell script and a batch procedure for running the software.  Initially I tried using a DCL procedure to do the same thing.  It seemed like the logical step to take.  Unfortunately this didn't work out.

While I don't specifically have a problem with DCL itself, it does have one rather large short-coming when attempting to write a procedure to start a Java application.  The arguments, P1-P8 are all uppercased! Even is you have altered the parse style of your session.  The only solution is to either quote everything, like back in the days before many of the current DECC$* feature logicals existed or try and put some smarts into the DCL procedure to guess the case of arguments.  All this is way to much work and potentially dangerous.  All I wanted to be able to type my commands just like they were described in the existing documentation.  So here is my solution...

I use the SPAWN and PIPE commands to configure a usable environment for Java software on OpenVMS.  The biggest reason for using a DCL procedure to start a Java package is that it is often necessary to do some configuration before running the software.  Java commands often end up being quite lengthy too.  So, to counter this I use the PIPE command and the sequential execution operator, or semi-colon (";").  By doing this I am able to run a number of DCL commands from the one PIPE command.  Into this I put the configuration of the environment, as well as the command to start the software.  Here is an example of the DCL symbol I was initially using to start my port of Maven:

$ mvn == "pipe def/u JAVA$DELETE_ALL_VERSIONS 1 ; " -
            + "def/u DECC$FILE_PERMISSION_UNIX 1 ; " -
            + "def/u JAVA$FORK_SUPPORT_CHDIR 1 ; " -
            + "def/u JAVA$FILENAME_CONTROLS 0 ; " -
            + "def/u DECC$ARGV_PARSE_STYLE ENABLE ; " -
            + "def/u DECC$EFS_CASE_PRESERVE ENABLE ; " -
            + "def/u DECC$EFS_CHARSET ENABLE ; " -
            + "java -classpath ""''classpath'"" ''f$trnlnm(""MAVEN_OPTS"")' "
            + "-Dclassworlds.conf=/m2_home/bin/m2.conf " -
            + "-Dmaven.home=/m2_home " -
            + """org.codehaus.classworlds.Launcher""
"

The example above is the method I used for some time to get Java software started on OpenVMS.  This method has two drawbacks.  The first is that it requires the executing process to have its /PARSE_STYLE set to EXTENDED.  This was not something I gave a lot of thought to as I enable the extended parse style at login.  The second I did not discover until I began porting Maven to OpenVMS.  Maven likes to SPAWN sub processes to do much of its work, just like MMK, MMS or GNU Make.  The sub processes could not get the advantages of the feature logicals as they were defined /USER which ensures that the logicals only exists in the context of the Java process and not in the parent or any spawned processes.  To counter this I started using the SPAWN command to kick off the PIPE command.  I could drop the /USER qualifier from the DEFINE commands and the logicals would now carry over to all child processes started by the Java software with the advantage of being kept from the parent also.  Here is the final symbol definition I now use to start Maven:

$ mvn == "spawn/nolog pipe set process/parse=extended ; " -
            + "@sys$manager:java$150_setup ; " -

            + "def JAVA$DELETE_ALL_VERSIONS 1 ; " -
            + "def DECC$FILE_PERMISSION_UNIX 1 ; " -
            + "def JAVA$FORK_SUPPORT_CHDIR 1 ; " -
            + "def JAVA$FILENAME_CONTROLS 0 ; " -
            + "def DECC$ARGV_PARSE_STYLE ENABLE ; " -
            + "def DECC$EFS_CASE_PRESERVE ENABLE ; " -
            + "def DECC$EFS_CHARSET ENABLE ; " -
            + "java -classpath ""''classpath'"" ''f$trnlnm(""MAVEN_OPTS"")' " -
            + "-Dclassworlds.conf=/m2_home/bin/m2.conf " -
            + "-Dmaven.home=/m2_home " -
            + """org.codehaus.classworlds.Launcher"""

An advantage of using the SPAWN command is that it is now no longer necessary for the parent process (the one executing the mvn command) to have extended parse style enabled, or even a Java environment confgured.  So, the basic template is:

$ cmd = "SPAWN/NOLOG PIPE SET PROCESS/PARSE_STYLE=EXTENDED ; " - [1]
            + "@<java-setup-procedure> ; " -                     [2]
            + "DEFINE <JAVA$-or-DECC$-logical> <value> ; " -     [3]
            + "java <java-options-and-program>"                  [4]

  1. Defining the foreign command.  This part should be copied verbatim (well almost).  If the command starts to get big it can often be neccessary to shorten the DCL commands to their absolute minimum.
  2. Insert your preferred Java startup procedure here.  You may want to use some clever DCL in the procedure that defines your command to determine the most recent Java version installed on the system.  I have some code that does this, but I will save that for another post.
  3. Here is where you put your JAVA$*, DECC$* and other environment configuration steps.
  4. Lastly, this is the actual Java command.  Please replace <java-options-and-program> with those most relevant to your application.

It is important to remember that the above symbol works because of Extended DCL which is available on OpenVMS Alpha V7.3-2 and higher and all versions of OpenVMS I64.  Prior to this DCL had the command line limit of 256 characters which would not allow this use of the PIPE command to work.  Thankfully it is not really an issue as most Java software requires a recent version of OpenVMS and there is no Java for OpenVMS VAX.  There are also no issues passing command line arguments as they tack right on to the end of the foreign command.  Do also remember not to enclose the PIPE arguments in parentheses as any extra arguments will not be passed to the Java VM.  The parentheses in a PIPE command server to delimit the commands that will execute in a single process.

Something else you might notice in the example is the definition of JAVA$FILENAME_CONTROLS.  I don't like many of the JAVA$* logicals, but this must be my least favourite.  From what I can tell, this logical hails from a time when Java under OpenVMS ran on ODS-2 disks and UNX-style file names often needed a bit of extra munging.  Fortunately, those days are over.  I find it best to set this logical to 0 and use the DECC$* logicals to define how file names are handled.  Otherwise a lot of unexpected transformations can occur to the file name before it is actually used.

Maven on OpenVMS

At this time I am still working on the port.  It is coming along exceptionally well.  The following are a some of the more important tasks that have been acheived:

  • Successfully ran mvn compile against Scala and Java code modules.
  • Successfully ran mvn clean.
  • Completed extensive work to allow Apache Commons Exec to work correctly on OpenVMS.  These changes have not yet made it back to the source pool though.  This will happen in the very near future.
  • Successfully set up the Scala+Lift basic example app. and executed mvn jetty:run.

There is still much to be done, but a release of a largely working build system is imminent.  To keep up to date with progress you can follow this blog (as you may already do) by signing up to the [RSS feed] as well as follow @tesneddon on Twitter for shorter, more frequent updates.

2.21.28  Iridium Flares

...

 

...only once a day...

 

To subscribe to this service, complete your details in the form below.  A confirmation email will be sent to the specified email address.  Upon confirmation your details will be added to the subscription list and you will receive updates on the Iridium flares occurring in your area.

Twitter User:
Email:
Location: Lat. Lon.
   

 

3.  Documentation

This page is the starting point for accessing documentation for all Kednos software products (including open source products).

If for some reason you are unable to view/download any or all of the Kednos product documentation we can provide physical media kits with all necessary documentation upon request.

All manuals are produced using either DECdocument from Touch Technologies, Inc. or Javadoc from Sun.

Kednos PL/I for OpenVMS

The following documentation is related to all versions of Kednos PL/I for OpenVMS on all supported architectures.

Documentation for HP OpenVMS is available in HTML and PDF format from HP here.

All documentation for all OpenVMS products (including Integration products) can be downloaded below as a single saveset.as a single savset.  It is possible that the BACKUP savset file attributes may be scrambled.  To correct this download the DCL procedure, RESET_BACKUP_SAVSET_ATTRIBUTES.COM and execute it, passing the saveset name as the first parameter.

  • OpenVMS Products Documentation Bundle ZIP|BCK

Kednos PL/I for Tru64 UNIX

The following documentation is related to all versions of Kednos PL/I for Tru64 UNIX (formerly Digital UNIX and OSF/1).

  • Installation Guide HTML
  • User's Manual HTML
  • Reference Manual HTML

Documentation for HP Tru64 UNIX is available in HTML and PDF format from HP here.

Integration Products

The documentation for all integration products can be found on their respective pages.  The links below will take you to the documentation for the relevant product.

Open Source

The documentation for all open source software can also be found on their respective pages.  The links below will take you to the relevant page.

3.1  Articles

 Date  Article
29 Jul 2009 OpenVMS I64 TIE Internals: Emulating Alpha Control Instructions HTML|PDF
 

This article, published in the OpenVMS Technical Journal V13, is intended as the first in a series of articles detailing as finely as possible the internals of the Translated Image Environment for OpenVMS I64.

This particular article covers the emulation of Alpha control instructions. It describes both local and non-local jumps as well as emulated and translated branches.

22 Jun 2009 WSIT and J2VMS: A Comparative Analysis HTML|PDF
 

This article attempts to compare the features of Kednos' Java-to-VMS Toolkit and HP's Web Services Integration Toolkit as a method for calling native OpenVMS routines from a Java environment.

*This article was submitted to the OpenVMS Technical Journal, but rejected on the grounds that this journal does not publish articles comparing products.

 28 Jan 2009 Calling OpenVMS Native Routines From Java HTML|PDF
  This article, published in the OpenVMS Technical Journal V12, is a brief introduction and tutorial on the use of a collection of tools offered by Kednos intended to make it easier for Java and native code to interact. Although Kednos' primary business is PL/I compilers, the tools described in this article can be used to interface Java with any native OpenVMS language that adheres to the common calling standard.

 

4.  Integration

Overview

The following sections provide a range of tools and libraries for integrating PL/I on OpenVMS with other native languages. Although all native languages on OpenVMS adhere to the common calling standard, there are some situations where building up the necessary modules and include files can be a large and drawn out task. The tools offered here attempt to ease this difficulty.

The following tools and libraries are currently available:

  • J2VMS, a interface between the Java Virtual Machine and the native calling standard of OpenVMS,
  • SDLEXT, a collection of Structure Definition Language (SDL) compiler backends that generate output for Java (to be used with J2VMS) and other languages;
  • XMLRTL, a run-time library that provides native SAX, DOM and XML-RPC APIs; and
  • PLI/SDL, a compiler extension for taking PL/I structure and entry declarations and generating SDL modules. This utility is currently in field test and is available to customers by contacting Kednos at sales@kednos.com.

Use the menu on the left hand side to navigate to the language integration you are interested in.

In many situations the tools presented here are as useful to other languages as they are PL/I. For example, the J2VMS Java->OpenVMS interface can be used to call routines and manipulate data structures from any language.

Examples

The following is a growing collection of complete working examples that attempt to properly demonstrate the use of these integration tools.

Phone Book

This example demonstrates the calling of OpenVMS native routines from Java, as well as the manipulation of data structures. The original program is an example PL/I application called PHONE (not to be confused with the OpenVMS PHONE utility). It is a simple progam that presents an example for file I/O and screen management as a phone book.

For the purpose of demonstrating the integration utilities the file access routines were extracted and put into a run-time library. A Java-Swing application was then developed that uses this RTL to access and update the phone book file.

The main objectives were to:

  • move the application to a Java-Swing based frontend,
  • re-use the existing file access routines,
  • avoid any major changes to the original application,
  • allow the original application to continue being used in parallel with the new Java application.

All of these objectives were met and the whole process is demonstrated in the article, Calling Native OpenVMS Routines from Java.

A backup saveset containing the full source for both the PL/I and Java-Swing applications can be downloaded here. The saveset is also available inside a ZIP file here.

PHONE - The original PL/I application
Source:
BUILD_PHONE.COM Build Procedure.
CONSTANTS.PLI Some helpful constants (include file).
DATABASE.PLI Utility routines for working with the phone book file.
ENTRY.PLI Database entry record definition (include file).
KEYS.PLI Keypad constants (include file).
OPERATIONS.PLI Menu operation constants (include file).
PHONE.FDL Phone book database file.
PHONE.PLI Main program.
SCREEN.PLI Screen handling support routines.
Description: The PHONE utility (not to be confused with the OpenVMS PHONE utility) is a simple phone/address book utility that maintains it's data in an indexed file. It originally appeared in the Kednos PL/I for OpenVMS example program library that ships with the compiler.
Build Instructions:

The following build instructions, as well as building the PHONE utility, also build the run-time library necessary to implement the jPhone utility shown below.

$ TYPE BUILD_PHONE.COM
$ PLI PHONE
$ PLI DATABASE
$ PLI SCREEN
$ LINK/SHARE=DATABASE_RTL.EXE,SYS$INPUT/OPTION
SYMBOL_VECTOR = ( -
    OPEN_PHONEBOOK = PROCEDURE, -
    CLOSE_PHONEBOOK = PROCEDURE, -
    GET_A_RECORD = PROCEDURE, -
    GET_A_MONTH_RECORD = PROCEDURE, -
    GET_A_DATE_RECORD = PROCEDURE, -
    WRITE_A_RECORD = PROCEDURE, -
    DELETE_A_RECORD = PROCEDURE -

    )
$ DEFINE/NOLOG DATABASE_RTL SYS$DISK:[]DATABASE_RTL
$ LINK PHONE,SCREEN,SYS$INPUT/OPTIONS
DATABASE_RTL/SHARE
$ IF (F$SEARCH("PHONE.DAT") .EQS. "") THEN CREATE/FDL=PHONE.FDL
$ EXIT 1

$ @BUILD_PHONE.COM

jPhone - The Java/Swing version of PHONE.
Source: Database.java (javadoc) Java class interface to the native DATABASE_RTL run-time library.
DATABASEDEF.java Java class generated from DATABASEDEF.SDL. It details the record structure of the phone book database file and the native routines found in DATABASE_RTL.
DATABASEDEF.SDL SDL header file, generated from DATABASE.PLI (above).
EntryPanel.java Panel for manipulating phone book entries.
EventPanel.java Panel for querying the phone book for upcoming events.
JPhone.java Main application.
Description: This application is the Java/Swing based version of the PHONE utility. It uses J2VMS to interface with the DATABASE_RTL run-time library so it can manipulate the same data file in a way that can be viewed by either the Java or native application.
Build Instructions:

$ TYPE BUILD_JPHONE.COM
$ set noon
$ on control_y then goto bail_out
$
$ set process/parse_style=extended
$ define/nolog decc$efs_case_preserve enable
$ define/nolog decc$efs_case_special enable
$ define/nolog decc$efs_charset enable
$ define/nolog decc$argv_parse_style enable
$
$ jc = "''javac' -classpath - "
     + """/sys$library/j2vms$vs.jar:./bin"" -d ""./bin"""
$
$ set verify
$ $ ! Database Interface
$ jc Database.java
$ jc DATABASEDEF.java
$
$ ! Supporting classes
$ jc UpperCaseField.java
$
$ ! Application
$ jc EntryPanel.java
$ jc EventPanel.java
$ jc JPhone.java
$
$ set noverify
$
$ jphone == "''java' -classpath " -
          + """/sys$library/j2vms$vs.jar:./bin"" com.kednos.jphone.JPhone"

$
$ write sys$output "Type: ""jphone"" to run"
$bail_out:
$ set noverify
$ exitt 1
$ @BUILD_JPHONE.COM

 

4.1  SDL

Overview

Structure Definition Language (or SDL) is a language for defining data structures, constants, external symbols and entry points. The SDL compiler is a tool for taking those definitions and generating language specific include files.

The SDLEXT product offers a collection of backends that generate output for the following languages:

  • Java, for use with the J2VMS interface
  • XML Schema Definition

Future releases of SDLEXT will also include generators for other languages and utilities. Currently Perl and record definitions for the DIX utility are planned.

Software

SDLEXT ships in a combined PCSI kit. This means that the single kit contains software that will install on OpenVMS VAX, Alpha and I64.

  • SDLEXT V2.0 PCSI software kit PCSI|ZIP.

The SDL compiler kit is available on the OpenVMS Freeware distribution. It is also available online here. The last release (EV1-65) of ALPHA_SDL can also be downloaded (including source) from here.

If for some reason you are unable to download the SDLEXT software and/or the SDL compiler supplied by HP we can provide physical media kits with all necessary software upon request.

Documentation

The following documentation covers the SDLEXT software product:

All manuals are produced using DECdocument from Touch Technologies, Inc.

Documentation for the SDL compiler and language can be viewed in either HTML, PS or PDF formats. The original VAX SDL RUNOFF manual can be viewed here.

Licensing & Support

SDLEXT is a comercial product available from Kednos Enterprises. License PAKs and formal support agreements are available and can be discussed further by contacting sales@kednos.com.

Evaluation licenses are available on request by contacting sales@kednos.com.

4.2  Java

Overview

J2VMS is a generic calling interface for accessing native code on OpenVMS. By using a collection of classes that mimic the argument passing mechanisms of compiled languages and a helper class that is reminiscent of LIB$CALLG it is possible to call any routine found in a shareable run-time library. Also included is the ability to manipulate OpenVMS data structures using a method similar to that offered in the BLISS programming language.

Originally conceived and written by Jim Brankin, J2VMS disappeared into obscurity for some time. Kednos has since resurrected this software package and begun active development of the interface. Below is documentation and software for the latest release.

Articles relating to J2VMS have been published in the OpenVMS Technical Journal. Calling OpenVMS Native Routines From Java was published in V12. WSIT and J2VMS: A Comparative Analysis is an unpublished article that attempts to compare the merits of HP's Web Services Integration Toolkit and Kednos' Java-to-VMS Toolkit..

Software

The following J2VMS software product kits are available for download:

  • J2VMS PCSI software kit, PCSI|ZIP. This kit contains V1.3 of J2VMS and is for both OpenVMS Alpha and I64.

The last release from www.j2vms.co.uk (now defunct), Version 1.2 is available from here.

Java for OpenVMS Alpha and I64 can be downloaded from HP at their website here.

If for some reason you are unable to download the J2VMS software and/or the Java software supplied by HP we can provide physical media kits with all necessary software upon request.

Documentation

The following documentation covers the J2VMS product:

All manuals are produced using DECdocument from Touch Technologies, Inc. and Javadoc from Sun.

For all Java on OpenVMS Alpha and I64 related documentation please visit the following HP websites:

For documentation related to the Java language and API then please consult the Sun website.

Licensing & Support

J2VMS is a comercial product available from Kednos Enterprises. License PAKs and formal support agreements are available and can be discussed further by contacting sales@kednos.com.

Evaluation licenses are available on request by contacting sales@kednos.com.

For all Java related support queries please consult the Java for OpenVMS Alpha and I64 software support pages.

Examples

The following are a collection of examples demonstrating the J2VMS interface. Some have corresponding native language examples that can be used to compare the two environments. All Java examples are included in the software product kit.

Hello World
Source: put.java (javadoc)
Description: This example simply demonstrates the declaration of an external routine (similar to the C extern construct) and calling it. In this case it is the routine LIB$PUT_OUTPUT writting that familiar message to the terminal.
Build Instructions: Assuming the correct J2VMS and Java setup has been preformed, the following commands should build and execute the example program.
$ javac -classpath "/sys$library/j2vms$vs.jar" put.java
$ java -classpath "/sys$library/j2vms$vs.jar:./" put

Get Some Input
Source: get.java (javadoc)
Description: This example fetches a line of input using the LIB$ Run-Time Library routine LIB$GET_INPUT and then writes it to the terminal using LIB$PUT_OUTPUT. This example demonstrates the use of the StringBuffer class to pass a dynamic string to LIB$GET_INPUT for receiving the resulting string.
Build Instructions:

Assuming the correct J2VMS and Java setup has been performed, the following commands should build and execute the example program.

$ javac -classpath "/sys$library/j2vms$vs.jar" get.java
$ java -classpath "/sys$library/j2vms$vs.jar:./" get

Disk Driver
Source: disk_driver.java
Description:

This program is an example that demonstrates the use of OpenVMS disk drivers using RMS and QIO services. It is based on the C module of the same name and produces identical results. The C version can be found in SYS$EXAMPLES or can be downloaded here. The following comments are from the module header:

  DISK_DRIVER -- Programming example to demonstrate use of
  OpenVMS disk drivers using RMS and QIO services.  The module
  first uses RMS $CREATE to create a file called MYDATAFIL.DAT in
  the default directory and then writes one hundred 512-byte (1 disk
  block) records, each of which contains the record number
  repeated 512 times, using RMS $PUT.  It then uses QIO services
  to access, randomly read and write, and close the file, swapping the
  contents of each pair of records.  If any errors are detected,
  the program exits with the error status associated with the
  error.
Build Instructions:

Assuming the correct J2VMS and Java setup has been performed, the following commands should build and execute the example program.

$ javac -classpath "/sys$library/j2vms$vs.jar" disk_driver.java
$ java -classpath "/sys$library/j2vms$vs.jar:./" disk_driver

Working With Locks
Source: lock.java
Description: This example demonstrates calling the $ENQW and $DEQW System Services from Java including modifying the lock value block.
Build Instructions:

Assuming the correct J2VMS and Java setup has been performed, the following commands should build and execute the example program.

$ javac -classpath "/sys$library/j2vms$vs.jar" lock.java
$ java -classpath "/sys$library/j2vms$vs.jar:./" lock

Get Some More Input
Source: get.java
Description: This example is from the J2VMS User Guide. It simply demonstrates the difference between passing java.lang.String and java.lang.StringBuffer objects by descriptor. It does this by requesting input from the user via the LIB$ Run-Time Library LIB$GET_INPUT.
Build Instructions:

Assuming the correct J2VMS and Java setup has been performed, the following commands should build and execute the example program.

$ javac -classpath "/sys$library/j2vms$vs.jar" get2.java
$ java -classpath "/sys$library/j2vms$vs.jar:./" get2

4.3  XML

Overview

The XML Support Run-Time Library (also referred to as XMLRTL) is a shareable image providing an OpenVMS calling standard friendly interface to some commonly used XML APIs.

Most XML APIs are intended to be used from a C or scripting language environment only. This can make it difficult for languages that do not support C-specific features to call these APIs directly.  It is often necessary for developers to implement a layer (usually written in C) between the API and the intended environment. With XMLRTL there is no necessity for this, sometimes, awkward layer.  XMLRTL functions can be easily called from any native OpenVMS language.

The following XML standards and recommendations are supported by XMLRTL:

XMLRTL is supported on OpenVMS VAX, Alpha and I64. It ships with include files for PL/I, BASIC, Pascal, Fortran, BLISS and C. Intermediate SDL definitions are also provided for any languages not covered.

The XMLRTL library has been built on the eXpat XML parser.  Due to this the original eXpat interface is also available as a portable interface intended for use when porting eXpat dependent applications or writing software in C that is expected to be portable to another plaftorm using eXpat.  The HTTP connectivity is provided by the cURL library.

Software

XMLRTL ships in a combined PCSI kit. This means that the single kit contains software that will install on OpenVMS VAX, Alpha and I64.

  • XMLRTL V1.0 PCSI software kit PCSI|ZIP.

If for some reason you are unable to download the XMLRTL software we can provide physical media kits with all necessary software upon request.

Documentation

The following documentation covers the XMLRTL software product:

  • Kednos XML Support Run-Time Library User Guide & Release Notes HTML|PS|PDF

All manuals are produced using DECdocument from Touch Technologies, Inc.

Licensing & Support

XMLRTL is a comercial product available from Kednos Enterprises. License PAKs and formal support agreements are available and can be discussed further by contacting sales@kednos.com.

An evaluation license, valid till 01-Oct-2009, can be downloaded from here.

Examples

The following are a collection of examples demonstrating the different XML APIs.  All examples are available in the software product kit.

Elements
Source: elements.pli elements.bas
Description:

Elements is a simple XML parser that demonstrates how to create and free a parser context as well as how to specify event handlers.  It will produce a listing of all tags (and their attributes) present in the input document.

The program comes in both PL/I and BASIC flavours.  po.xml contains an example XML document.

Build Instructions: PL/I: $ PLI ELEMENTS
$ LINK ELEMENTS,SYS$INPUT/OPTION
SYS$LIBRARY:XML$SHR/SHARE
BASIC: $ BASIC ELEMENTS
$ LINK ELEMENTS,SYS$INPUT/OPTION
SYS$LIBRARY:XML$SHR/SHARE
 
 
 
 
 
 

 

5.  Sales & Support

Sales

Commerical licenses for PL/I compilers and Run-TIme Libraries, as well as the language integration tools can be obtained by contacting Kednos sales at sales@kednos.com.  Some of our commercial licenses require a hardware identifier (the MAC address of an attached NIC).  To aide customers in gathering this information we have two utilities available for download below:

If you are a non-commerical, OpenVMS hobbyist user then the Hobbyist License Program is for you. Grab your DECUS (or Encompass, etc.) membership number and go register.  For those hobbyist Tru64 UNIX users, this program appears to have been cancelled.  However, if you are interested in a hobbyist license, then please contact us.

There are no license requirements for the open source software packages, like MMK and MX.

Support

Kednos offers support contracts for all available commerical products, as well as support for PL/I programming environments and production systems. Please contact support@kednos.com for further information.

Formal support contracts for all open source products are also available and can be discussed further by contacting support@kednos.com. For free support of these products, please join the appropriate mailing list and post your query there.

Lastly, if email doesn't work for you, then feel free to contact Kednos via any of the methods shown on the Contact page.

6.  Hobbyist

Overview

Kednos is a proud supporter of the OpenVMS Hobbyist Program.  This program came about as result of the efforts of OpenVMS Hobbyist #1, Pat Jankowiak, the late John Wisniewski and David Cathey from Montagar.  Since then a number of vendors have offered their software products to hobbyists and non-commercial users for a great fee, NOTHING!

Kednos is happy to offer their PL/I compilers for OpenVMS VAX and Alpha under this same licensing arrangement.  To begin you need to qualify for a regular old OpenVMS hobbyist license.  If you do, then you can apply for a Kednos hobbyist license here.  The remainder of this page consists of information and pointers to resources useful to OpenVMS hobbyists.  If you believe there is an error or ommition, then please contact us at hobbyist@kednos.com.

Public Access

If you don't have an Alpha or VAX system with which to install the hobbyist PL/I compiler on, there are a number of public access systems available (for non-commercial use) that do have the Kednos PL/I compiler installed.  The following is a list of such systems currently available.

  • The Deathrow OpenVMS Cluster is an OpenVMS cluster consisting of three nodes, 2 VAXes and an Alpha.  All systems have the Kednos PL/I compiler installed.
  • eisner.decus.org is possibly the oldest public access OpenVMS system.  It is an Alpha system running a host of hobbyist software, including the Kednos PL/I compiler.
  • FAFNER is a VAX 7000/820 system running OpenVMS V7.3.  It too has the Kednos PL/I compiler installed.  FAFNER's system manager also offers other classic VAX system for temporary use.

If you know of a system not listed here, please contact us at hobbyist@kednos.com with some details.

Emulated/Simulated Systems

If you would rather have your own personal system, yet still don't have the necessary hardware then maybe you sohuld consider and emulated system.  There are a number of VAX and Alpha emulators available for free use, although some only non-commerically.  The following list covers all emulators know to Kednos at this time.  If you know of an emulator not listed here, then please contact us with the details at hobbyist@kednos.com.

  • SIMH is possibly the best know simulator available.  It supports a whole host of systems from DEC as well as other vendors.  Included in this is a MicroVAX 3900 and a VAX-11/780.  Both of these will run OpenVMS and in-turn will run the Kednos PL/I VAX compiler.
  • ts10 is another emulator family.  Originally developed as PDP-10 emulator it has since grown to include PDP-11 and VAX systems.  The VAX system emulated ar the VAXserver 3900 and MicroVAX II.  This emulator will boot OpenVMS and support the Kednos PL/I compiler.
  • Stromasys (formerly SRI) offers a collection of emulators for both commerical and non-commercial use.  The hobbyist, non-commerical use the offer CHARON-AXP/ES45 NCE for Linux and PersonalAlpha for Windows users wishing to run an OpenVMS Alpha system.  They also offer CHARON-VAX/3198 NCE for OpenVMS I64 and CHARON-VAX/Demo for Windows users wishing to run OpenVMS VAX.  All of these systems will run the Kednos PL/I compiler.
  • es40 is an opensource AlphaServer ES40 emulator.  It boots OpenVMS Alpha and has been known to run on Windows, Linux, OpenVMS MacOS X and Solaris.  It will also run the Kednos PL/I compiler.

Links

The following is a collection of links to other supporters of the OpenVMS Hobbyist programme.  Further this great community programme and grab some more hobbyist software for you system, today!

 

7.  Kits

All software product kits for OpenVMS are compressed with Zip from Info-ZIP with the qualifier /VMS (-"V") to preserve OpenVMS file attributes. All software product kits for Tru64 UNIX. are packaged with tar and gzip. To download a kit, right-click on the link and select 'Save Link As...' (or your browser's equivalent).

If your situation is such that you require physical media kits, then please contact Kednos via email on sales@kednos.com or one of the other methods listed here.

For documentation relating to all PL/I products, procede to the Documentation page. Documentation for all Integration products can be found at their respective pages.

  • Latest version of the OpenVMS PL/I compiler for Alpha and VAX.

    • A new kit is available as of January 18, 2007 and resolves a number of outstanding issues for the Alpha compiler. Please refer to the release notes for more information. This version, consolidates the fixes to all outstanding issues.

    • A new kit is available as of October 25, 2003 and resolves a number of outstanding issues for the VAX compiler. Please refer to the release notes for more information. This version, 3.8, consolidates the fixes to all outstanding issues.

  • Just the OpenVMS shared runtime libraries; Alpha RTL and VAX RTL.

  • Latest version of the Native IPF PL/I Run-Time Library  for Translated Images

    • A new production kit is available as of January 14, 2009. This RTL provides support for executing PL/I images that have been compiled and linked on OpenVMS Alpha and subsequently translated, using the AEST utility, for execution on OpenVMS I64. Please refer to the release notes for further information.

  • Latest Unix version of the PL/I compiler for Tru64 UNIX (formerly Digital UNIX and OSF/1).

  • SDL Extensions software kits can be downloaded here.

  • Java-to-OpenVMS Toolkit (J2VMS) software kits can be downloaded here.

  • XML Support Run-TIme Library software kits can be downloaded from here.

ECCN Number EAR99 so no Export Control License is required.

8.  Examples

There are a number of PL/I Programming Examples for the OpenVMS environment which have been culled from this site.

These examples of PL/I code in the OpenVMS environment, range from simple applications to systems programming and has a search engine to assist you in locating specific examples. Suppose, for example, that you are looking for coding examples calling SYS$QIOW. Enter, PLI-EXAMPLE + SYS$QIOW into the search engine.

Both PL1 and PLI are used in this data base. Click on these links and enter specific items into the search engine to further refine the search.

10.  Resources

This section presents a number of resources useful to PL/I and OpenVMS users alike.  Please report any broken links or suggestions to webmaster@kednos.com.

PL/I Software

The following are a collection of links to various websites offering utilities and libraries written in PL/I:

  • The PL/I Software Repository is collection of PL/I source from many contributors and maintained by Robin Vowels.
  • The PL/I Language is a website (recently back online) maintained by Peter Flass.  It offers quite a lot of information regarding PL/I including code samples, style guide and manuals.
  • The source code for the final release of MULTICS, MR 12.5, is available from the MIT MULTICS History website.  Unfortunately very little, if any, of this code will compile without modification on a modern PL/I compiler.
  • Lastly, there are also a large number of PL/I programs and examples under the Examples section.

Mailing Lists & Newsgroups

There exists on the internet a few forums for OpenVMS and PL/I. The following list covers some of the more popular and better known.

  • PL1-L is a mailing list that covers the PL/I language in general. It is more targeted towards IBM developers and compilers. To join, visit the listserv website here.
  • PLIEDIT - PL/I Editor for Eclipse, as well as offering the Eclipse editor plugin also has a discussion board that includes general PL/I discussion forums.
  • comp.lang.pl1 is another forum for discussing PL/I. It is a usenet newsgroup so it can be accessed from either Google or your favourite NNTP client. Again, this is a more IBM centric newsgroup, but still a valuable general PL/I resource.
  • comp.os.vms is an OpenVMS specific usenet newsgroup. It can be accessed either via Google or NNTP. There are also some language specific groups, listed here:
  • HP's IT Resource Centre (ITRC) includes a moderated, web-based technical forum. It requires registration and covers all HP products, including OpenVMS. With the signal to noise ratio getting worse at newsgroups like comp.os.vms most HP engineers now lurk here.
  • OpenVMS VAMP Board [down] is a variation on the Linux LAMP software bundle, for OpenVMS. This website also hosts an OpenVMS community forum. It seems that there has been little activity since 2008. However, there still seems to be postings related to MySQL and ImageMagick.

Games

OpenVMS isn't typically known for being a premier gaming platform, at least not these days. The following are a collection of of links (some local) to various games that have been ported to OpenVMS.

10.1  Project Euler

Project Euler is a website started by Colin Hughes as a result of a sub-section he previously maintained on mathschallenge.net.  It provides a growing collection of mathematical/computing problems for project members to solve.  Membership is not exclusive and can be gained by simply filling out the registration form and submitting it.

The following solutions, contributed by Tim Sneddon, are all written in PL/I.  Although they were developed on OpenVMS they should compile with little or no change using other PL/I compilers.  Look within the source module for build instructions (for OpenVMS at least).

Problems

  • Problem 1: Add all the natural numbers below one thousand that are multiples of 3 or 5.
  • Problem 2: Find the sum of all the even-valued terms in the Fibonacci sequence which do not exceed four million.
  • Problem 4: Find the largest palindrome made from the product of two 3-digit numbers.
  • Problem 5: What is the smallest number divisible by each of the numbers 1 to 20?
  • Problem 6: What is the difference between the sum of the squares and the square of the sums?
  • Problem 7:What is the 10001^(st) prime number?
  • Problem 8: Discover the largest product of five consecutive digits in the 1000-digit number.
  • Problem 9: Find the only Pythagorean triplet, {a, b, c}, for which a + b + c = 1000.
  • Problem 10: Calculate the sum of all the primes below two million (alternate solution).
  • Problem 12: What is the value of the first triangle number to have over five hundred divisors?
  • Problem 14: Find the longest sequence using a starting number under one million.
  • Problem 42: How many triangle words does this list of common English words contain?

Links

The following are a collection of links related to some of the solved problems above.

10.2  Editors

The following are a collection of editors and development environments known to have support for PL/I. In some instances this may be just as simple as syntax highlighting, others offer PL/I integration into a larger development environment.

GNU Emacs http://www.gnu.org/software/emacs
GNU Emacs is an extensible, customizable text editor—and more. At its core is an interpreter for Emacs Lisp, a dialect of the Lisp programming language with extensions to support text editing. Mark Riggle has developed a PL/I mode for Emacs that can be found here. Details of the most recent version of Emacs ported to OpenVMS can be found here.
jEdit http://www.jedit.org
  jEdit is a text editor written in Java. It runs on Windows, Unix/Linux, MacOS X and OpenVMS. Rob Watson has written a module that provides syntax highlighting for PL/I. This module thips with the editor which can be downloaded from here.
Vim http://www.vim.org
 

Vim (Vi improved) is a vi-compatible text editor that runs on nearly every operating system known to humanity (including OpenVMS). Michael Fitz has written a plugin for Vim, PLI-Tools, that provides syntax highlighting and indentation. The plugin and instructions on how to install and use it can be found here.

GNU nano http://www.nano-editor.org
  GNU nano is a simple text editor designed to be a drop-in replacement for the Pico editor that is part of the Pine email suite. Tim Sneddon has written a simple syntax highlighting module that can be included in the user's .nanorc file. This can be downloaded here.
Language Sensitive Editor http://h71000.www7.hp.com/commercial/decset/decset_index.html
The Language Sensitive Editor (LSE) is a commerical editor that ships as part of HP's DECset development tool chain for OpenVMS. It provides support for PL/I.
NetBeans http://www.netbeans.org
  PL/I integration to the NetBeans IDE will be coming soon!
Ecplise http://www.pliedit.com/
William Fenalson has developed PLIEDIT, a plugin for the Eclipse IDE. which provides a PL/I sensitive editor for the Eclipse framework.  It supports syntax checking, highly customizable syntax colouring and supports the full IBM and ANSI language features.

 

10.3  Code Management

The following are a collection of utilities for manageing source code on OpenVMS.  Some are open source, some are proprietry and in some cases they offer only client functionality.

Concurrent Version System

Otherwise known as CVS, this is a distributed version control system that grew out of RCS on UNIX-like systems. Unfortuantely there has never been a port of the server-side functionality of CVS to OpenVMS.  Client support has been available for sometime and older releases can be found on the Freeware V3 and V4 CDs.

Another Java-based CVS implementation is available, called jCVS.  Although there has been mention of work into supporting OpenVMS there does not appear to be anything more than this post to the jCVS forum.

Jouk Jansen has ported the latest unstable release, 1.12.13 to OpenVMS.  It is available from his website here.

Code Management System

Otherwise known as CMS, this is a non-distributed code management system developed and maintained at HP as part of the DECset collection of tools.  It runs on OpenVMS VAX, Alpha and I64.There are a number of supporting tools that add some level of a distributed nature to the system.

For Windows environments there is the DECset CMS and MMS clients.  Although details of these utilities seem to be missing from the HP website they are available and allow integration of CMS into the Visual Studio suite of tools.

For OpenVMS Alpha and I64 environments there is the Distributed Netbeans IDE.  Although this runs on Windows, the source code itself is located elsewhere on an OpenVMS system.

It is also worth mentioning the VDE software.  This is the code management system used to maintain OpenVMS.  It is available on the Freeware V4 and V7 distributions for those interested.  It does require a number of extra products, including CMS and Oracle Rdb.

Mercurial

Mercurial is often referred to by its command name, hg.  Mercurial is another distributed code management system, this time written in Python (there is no support for Python on OpenVMS VAX).  It does have support for client and server functionality on OpenVMS and can be used with both WASD and HP's port of Apache, Secure Web Server.

The OpenVMS port of Python, Mercurial and a host of other Python software has been performed by Jean-François Piéronne and is available from his website, here.  There is also a forum for discussing Python and MySQL here.

Tim Sneddon is currently in the process of adding OpenVMS support to the Python subprocess module to enable the SSH client functionality available on other platforms.

Subversion

Subversion, also known as SVN, is yet another distributed code management system.  It was started as a project to replace CVS, providing many new features and fixing long standing bugs.  Since its creation it has grown and has replaced CVS in many areas.

Support for OpenVMS Alpha and I64 is provided through the Java client implementation, SVNkit.  It can be downloaded here.  There was also mention of the release of version 1.1.1 at OpenVMS.org.

10.4  Benchmarks

The following are a collection of benchmarks that have been gathered from around the internet and translated into PL/I.

Tower of Hanoi
Source: hanoi.pli
Description:

This benchmark was originally written in C and appeared in Albert Aburto's collection here. Due to increasing processor speed, rather than compute the time taken to complete the Tower Of Hanoi puzzle this benchmark computes the average number of moves in a 25μs slice.

Build Instructions: After downloading the source module, as well as the timer module below, this software can be built using the following DCL commands:
$ PLI HANOI+TIMER
$ LINK HANOI
$ RUN HANOI
Results: The below table shows gathered results for the PL/I version of the benchmark. Results for the C version can be found here
System OS, Compiler CPU
MHz Moves/25μs
Digital VAXstation 4000-90 OpenVMS V7.3, Kednos PL/I 3.8 VAX KA49-A 70 29.689
Compaq PWS XP1000 OpenVMS V8.2, Kednos PL/I 4.4G Alpha EV6 (21264) 500 528.974
Compaq AlphaServer ES45 OpenVMS V8.3, Kednos PL/I 4.4G Alpha EV68CB (21264C) 1000 1058.281
HP Integrity rx2600 Server OpenVMS V8.3-1H1, Kednos PL/I 4.4G and PLI_RTL_AV T4.5-B* Itanium 2 Madison 1.4GHz/1.5MB 1400 47.345

Fibonacci Numbers
Source: fib.pli
Description:

This benchmark was originally written in C and appeared in Albert Aburto's collection here. Its purpose is to calculate the first 40 Fibonacci numbers. The last of which is 102334155.

This benchmark was used to determine the usefulness of an address lookup cache in the OpenVMS I64 Translated Image Environment (TIE).

Build Instructions: After downloading the source module, as well as the timer module below, this software can be built using the following DCL commands:
$ PLI FIB+TIMER
$ LINK FIB
$ RUN FIB
Results: The table below shows results gathered for the PL/I version of the Fibonacci Numbers benchmark. Results for the original C version can be found here.
System OS, Compiler CPU MHz Run Time (sec)
Digital VAXstation 4000-90 OpenVMS V7.3, Kednos PL/I V3.8 VAX KA49-A 70  90.047
Compaq PWS XP1000 OpenVMS V8.3, Kednos PL/I V4.4G Alpha EV6 (21264) 500  3.766
Compaq AlphaServer ES45 OpenVMS V8.3, Kednos PL/I V4.4G Alpha EV68CB (21264C) 1000  1.828
HP Integrity rx2600 Server OpenVMS V8.3-1H1, Kednos PL/I 4.4G and PLI_RTL_AV T4.5-B* Itanium 2 Madison 1.4GHz/1.5MB 1400  70.695

Prime Numbers
Source: prime.pli
Description:

This benchmark determines how long it takes to calculate the specified number of prime numbers. This benchmark is suited to testing raw number crunching, in particular integer division.

Build Instructions: After downloading the source module, as well as the timer module below, this software can be built using the following DCL commands:
$ PLI PRIME+TIMER
$ LINK PRIME
$ RUN PRIME
Results: The table below shows results gathered for the Prime Numbers benchmark. In each of these tests the number of primes calculated was 55,000. The last of which is 679,277.
System OS, Compiler CPU MHz Run Time (sec)
Digital VAXstation 4000-90 OpenVMS V7.3, Kednos PL/I 3.8 VAX KA49-A 70 988.617
Compaq PWS XP1000 OpenVMS V8.2, Kednos PL/I 4.4G Alpha EV6 (21264) 500 158.883
Compaq AlphaServer ES45 OpenVMS V8.3, Kednos PL/I 4.4G Alpha EV68CB (21264C) 1000 79.102
HP Integrity rx2600 Server OpenVMS V8.3-1H1, Kednos PL/I 4.4G and PLI_RTL_AV T4.5-B* Itanium 2 Madison 1.4GHz/1.5MB 1400 3730.970

Timer Module
Source: timer.pli
Description: This module is not a benchmark. It is the timer code used by most of the other benchmarks to determine the time taken to complete. Currently there is only a module for OpenVMS (all versions). If you have a PL/I compiler on your non-OpenVMS system and you have run these benchmarks, please submit your timer module (plus instructions) so it can be published here for others to use.

 *These results were obtained by translating an Alpha version of the benchmark using an experimental release of the OpenVMS Migration Software for Alpha to IPF Systems (OMSAI) binary translator from HP. Run-time support was provided by the Kednos Native IPF PL/I Run-Time Library  for Translated Images.

10.5  Rexx

Overview

Rexx is a programming language developed at IBM by Mike Cowlishaw in 1979.  It is largely based on PL/I.  Cowlishaw's original intention was to develop a language similar to PL/I, but easier for beginners and non-programmers to grasp.  Since its creation Rexx has been extended and implemented on many platforms in different ways.  This page is a repository for all OpenVMS related Rexx activity.

NetRexx

NetRexx is IBM's Java based version of Rexx.  It is entirely written in Java and consists of a compiler and run-time.  Rexx code is compiled to Java which is then compiled to Java byte-code.  Although not officially supported by IBM, it is possible to run NetRexx under OpenVMS.

After downloading and unpacking the IBM binary kit you should be left with a [.NetRexx...] directory tree.  Download the OpenVMS NetRexx setup procedures and unpack the, in the [.NetRexx] directory.  In this kit are two procedures.  The first is NETREXX_STARTUP.COM, to be included in the system startup procedure. It defines the system-wide product logicals.  The second is NETREXX_LOGIN.COM, to be included in the user's login procedure. It sets up the nrc and netrexxc compiler commands.  When adding NETREXX_LOGIN.COM to the user's login procedure it is important to run the Java setup procedure first.  An excert from a typical login procedure might look like this:

    $ if (f$search("SYS$MANAGER:JAVA$142_SETUP.COM") .nes. "")
    $ then
    $    @sys$manager:java$142_setup
    $    if (f$search("NETREXX_ROOT:[000000]NETREXX_LOGIN.COM") .nes. "") then -
    $        @netrexx_root:[000000]netrexx_login
    $ endif

NetRexx is a Java application so it responds to all the Java and DECC$* feature logicals.  At a minimum the following should be configured:

    $ set process/parse_style=extended
    $ define DECC$ARGV_PARSE_STYLE "TRUE"
    $ define DECC$EFS_CASE_PRESERVE "TRUE"
    $ define DECC$EFS_CASE_SPECIAL "TRUE"

To run a compiled program, simply use the Java VM, making sure to include the NetRexx run-time in the classpath.  The following example demonstrates compiling and running a NetRexx program.

    $ type hello.nrx
    /* This is a fully documented NetRexx program */

    say 'Hello World!'
    $ netrexxc hello.nrx
    NetRexx portable processor, version 2.05
    Copyright (c) IBM Corporation, 2005.  All rights reserved.
    Program hello.nrx
    Compilation of 'hello.nrx' successful
    $ java -classpath /netrexx_runlib/NetRexxR.jar:. hello
    Hello World!

It is also possible to run the program in the NetRexx Interpreter, with a couple extra options:

    $ netrexxc hello.nrx -exec -nojava
    NetRexx portable processor, version 2.05
    Copyright (c) IBM Corporation, 2005.  All rights reserved.
    Program hello.nrx
    ===== Exec: hello =====
    Hello World!
    Processing of 'hello.nrx' complete

Links

The following are a collection of links to other Rexx resources around the internet.

  • comp.lang.rexx is a forum for discussing Rexx. It is a usenet newsgroup so it can be accessed from either Google or your favourite NNTP client.
  • RexxLA is The Rexx Language Association.  They are an independant, non-profit organization dedicated for futhering the Rexx Programming Language.  They have been involved in the release of Open Object Rexx and the upcoming open source release of NetRexx.
  • Mike Colishaw's Rexx Page was once the definitive reference for all things Rexx, it has been preserved by RexxLA.

10.6  SIG Collection

Overview

Welcome to the new home of the VMS/Language & Tools SIG software collection. For the last 30 years the SIG tapes have been providing OpenVMS (once VMS and VAX/VMS) customers with a myriad of useful tools and handy utilities. Until recently the keeper, compiler and distributor of these tapes was Glenn Everhart. This torch has since been passed to Tim Sneddon who has now taking over Glenn's role.

This page is now 'the place' for all things related to the VMS SIG tapes. If you have any comments, queries or suggestions then please contact Tim Sneddon.

CALL FOR SUBMISSIONS!

The VMS/Language & Tools SIG software collection is accepting submissions for the next distribution.  If you have any software you would like to submit, or maybe you've just seen something worth while.  Please follow the instructions below and contact the maintainer.

Submissions will be accepted until January 1st 2010.  Get in quick and be sure that your software makes it in.

Archive

All previous releases of the SIG tapes are available from the DECUSLIBrary.COMpendium here:

This archive includes software from other SIGs software collections including RSX and PDP-11.

For those unable to download the software, or wish to receive annual updates via physical media, then please see the section below.

Distribution

Traditionally the VMS SIG tapes have, as the name suggests, been distributed by tape. These days the preffered physical media is CD or DVD (depending on the quantity of software) or FTP. For those wanting a copy of the physical media, or who are interested in joining the distribution tree then please contact Tim Sneddon and register your interest. Otherwise all current and previous releases of the SIG tapes can be downloaded from the archive link above.

Contribute

To make contributions to the VMS/L&T SIG Collection, please use this form. Before communicating your intent to contribute to the maintainer, please consider packaging your software in accordance with the following suggestions.  These suggestions are not to be considered as requirements for the acceptance of software.  They are intended to help make the structure of the submissions somewhat more consistent.

  1. If your submission is large or naturally fits into several directories, submit it as a directory tree.

  2. There should be ONE AAAREADME.TXT with each submission.  The following information should be included for each program or group of programs:

    • A brief description of the program or group of related programs.
    • The names of previous submissions which this submission replaces.
    • The name of the person primarily responsible for putting the submission together.

      If you use RUNOFF to generate this file don't hide the source
      under another name, use AAAREADME.RNO.  TEMPLATE.RNO contains the primary
      runoff commands needed to generate this type of file.

  3. There should be sufficient documentation for each program or group of programs.  The file containing or pointing to this documentation should have a .DOC extension.  If your documentation is somewhere else, say, as comments in the program, a .DOC file is still useful to tell people where to find the it.  This is good place to put the name of the author, whether or not he is interested in bug/improvement reports, and, if he is willing to take telephone inquiries, his phone number.

  4. The intent of the above paragraphs is to provide two levels of  documentation - one very brief which is available in each submission as AAAREADME.TXT or collectively in [VAX000]AAAREADME.yyy and another with more detail in files with a .DOC extension.  The first idea is enforced on most of the recent tapes with AAAREADME.TXT's added by the librarian as necessary.  The second part is more a request than a requirement but some file renaming has been done to fit into this pattern.

  5. To get your submission in it should be packaged using BACKUP.  Submission packaged with Zip, tar and tar+gzip will will also be accepted.  However, there are occasional issues with these utilities and so BACKUP is the preferred method for submission (a zipped saveset if preferectly acceptable also).

    FTP is the preferred method for receiving submissions.  This can either be collected by the maintainer from a publically available system or transmitted by the submitter.  Either way, please indicate how the package should be collected in your submission email.

    Physical media submission will still be accepted.  If this is the only way you can send in your submission, please contact the maintiner to arrange this.

11.  Open Source

Overview

Kednos has a strong commitment to furthering and supporting OpenVMS open source software.  The pages in this section cover open source projects that Kednos has been involved.  In some cases this may mean hosting the development effort (e.g., MX), simply providing built software or as contributors to an externally hosted development effort.

If you have an open source package that you would like Kednos to host, please contact us at opensource@kednos.com and register your interest.  Be sure to include your details, a description of your software and its license requirements.

Projects

The following projects are currently available at Kednos:.

  • Cluck - A Twitter client for OpenVMS.
  • MX  -  A mail delivery system for OpenVMS.
  • MMK  -  An open source clone (with extras) of the MMS build tool.
  • The Halls Of ZK - An interactive fiction game base on the DEC ZK facility.

Downloading Source Code

Source code for all projects is available via the Mercurial repositories found at hg.kednos.com.  For package specific instructions on how to fetch and use the code see the specific webpage.  However, for general use, the following will usually suffice:

$ hg clone http://hg.kednos.com/<package>

All projects also offer snaphot downloads.  These can be retrieved from the main reporsitory directory, here.

11.1  Cluck

Overview

Cluck is an open source client program and run-time library for accessing the social networking/microblogging site, Twitter.  As well as supporting the Twitter API Cluck also supports the following services:

  • Complete support for the OAuth authentication protocol;
  • Integration with the Twitlonger service for posting messages greater than 140 characters long;
  • URL shortening using bit.ly; and
  • Cluck's own drivel engine.  This text translation engine can convert to and from all the neat little acronyms and shortenings that consitute the decline of traditional written English.

Software

Binary packages are available for OpenVMS Alpha and I64.  As yet there is no support for OpenVMS VAX.  This is largely to do with the use of libxml2, which is not supported on VAX.  If interest develops a solution to this problem may be found.

  • Cluck for OpenVMS V1.0 PCSI|ZIP

Documentation

...pointer to help file...

Source

Cluck is open source and as such provides complete source code.  All source code is stored using the source code management system, Mercurial.  The only thing that does not come with the source code is the header api_keys.h.  This header contains the consumer keys, secrets and API keys for interfacing with the various Twitter-related services.  These need to be supplied by the developer. 

...source uses a logical, also includes a template file...

To retrieve the source code, use the following Mercurial command:

$ hg clone http://hg.kednos.com/cluck

Cluck also relies on some third-party libraries.  These are:

  • cURL, used to send and receive all HTTP[S] traffic.
  • libxml2, used to parse all XML responses and access the proxy file.
  • OpenSSL, used to sign OAuth messages and use HTTPS.

The source kits for these libraries can be downloaded from their respective sites using the links above.  However, to make life a little easier, kits containing prebuilt binary versions of these libraries are available below.

  • Third-party libraries for OpenVMS Alpha BCK|ZIP
  • Third-party libraries for OpenVMS I64 BCK|ZIP

Support

Cluck is an open source product released "as is" under this license and as such does not come with any form of support.  However, complete paid support contracts are available from Kednos, upon request.  Please contact sales@kednos.com for further details.

Unpaid, as-is support is available from Cluck-List@kednos.com.

11.2  MX

Overview

Message Exchange (MX) is a mail delivery system for OpenVMS originally developed by MadGoat Software. The company MadGoat Software has ceased to exist as of December 2006. In April 2008 the software was gathered up and released under a BSD-style license as MX V6.0 by Matt Madison (former owner of MadGoat Software).

Since then Kednos has decided to take up hosting the software (although there are several other sites that have also picked up the source kit) and setup a support community, starting with the resurrection of MX-List.

The Future

At present MX V6.0 does not support VAX, X.25 or UUCP. There are plans to restore the VAX portions of the kit in the very near future. It may be possible to add support for X.25 and UUCP if there is interest.

Documentation

The following documentation covers the latest version of MX.

  • MX V6.0 Release Notes TXT
  • Message Exchange Installation Guide PS|HTML|TXT
  • Message Exchange Management Guide PS|HTML|TXT
  • Message Exchange Mailing List/File Server Guide PS|HTML|TXT
  • Message Exchange Programmer's Guide PS|HTML|TXT
  • Message Exchange User's Guide PS|HTML|TXT

All manuals are produced using DECdocument from Touch Technologies, Inc.

Software

The following MX kits are available for download:

The following utilities are also freeware packages released by MadGoat Software. MMK and NETLIB are required to build MX from source.

Support

Currently general support is in the form of the newly restarted MX-List mailing list. To subscribe to this mailing list simply send email to MX-List-request@kednos.com containing the the single command 'SUBSCRIBE'.

The archives for this mailing list and it's previous incarnations at MadGoat Software (and places before) are available below.

Formal support contracts can be negotiated on request, please contact sales@kednos.com for further details.

Links

The following are links to other MX related sites.

  • SMTP<->SMS Gateway for MX Ruslan Laishev has developed an interface library to perform an interaction with Short Message Service Center with a Short Message Peer-to-Peer protocol v.3.4. This package also includes a module that allows routing of SMS message to and from email.
  • Contributed Packages is a collection of MX-related packages submitted by the MX user community.
  • MadGoat Software (now defunct) Website of the former MX owner. This website offers the MX source kit as well as the other utilities above. This website has since been removed and the link directs to the listing from the Internet Archive Wayback Machine.

11.3  MMK

Overview

MMK is a make utility in the same vein as MMS (Module Management System) and GNU make. It combines features and compatability from both to provide a feature rich software build utility for OpenVMS.

MMK was originally maintained by Matt Madison of MadGoat Software. However, MadGoat Software has come to an end and so Kednos have setup a new home for support and distribution of MMK.

Documentation

The following documentation covers the latest version of MMK.

Software

The latest version of MMK can be downloaded from here:

  • MMK V4.1 as a VMSINSTAL kit for OpenVMS VAX, Alpha and I64
  • MMK V4.1 in the traditional ZIP file distribution

The following are the last official releases of MMK from MadGoat Software:

  • MMK V4.0 ZIP file distribution

Source Code

The MMK source code can be obtained by either downloading a kit, or cloning the Mercurial repository.  For VAX users it is necessary to download a source kit as there is no Python (and therefore no Mercurial) on OpenVMS VAX.  Use the following command to retrieve the MMK source code repository:

$ hg clone http://hg.kednos.com/mmk

To build the source code, it is necessary to have a working C compiler (all official binary kits are build using HP C) and SDL.  After obtaining your source kit MMK can be built using DCL:

$ @compile

or using MMK:

$ mmk

If you are using ALPHA_SDL or VAX SDL it is necessary, when building with MMK, to tell the build procedure where to find the SDL environment setup procedure.  This is done, like so:

$ define MMK_SDL_SETUP ddcu:[dir]SDL.COM

For any bug reports, improvements, etc. see the support information below.  Please submit any patches using the hg diff command.

Support

Official support contracts can be arranged with Kednos. If you are interested then please send mail to sales@kednos.com. For all other forms of support there is the MMK-List mailing list.

To join, send mail containing the word SUBSCRIBE to MMK-List-request@kednos.com.

Other Make Utilities

The following are links to other make/build utilities for OpenVMS:

Module Management System http://h71000.www7.hp.com/commercial/decset/decset_index.html
MMS is a commerical make utility from HP. It is offered as a part of their DECset development toolchain and is available for OpenVMS VAX, Alpha and I64.
GNU make http://www.gnu.org/software/make/

GNU make for OpenVMS VAX, Alpha and Integrity can be downloaded below.  These binaries were extracted from the Kerberos V3.1 source kit, available from HP here.

  • GNU Make version 3.78.1 for OpenVMS VAX  ZIP
  • GNU Make version 3.78.1  for OpenVMS Alpha  ZIP
  • GNU Make version 3.80 for OpenVMS I64  ZIP
PMake http://www.freebsd.org
PMake is the BSD UNIX make utility. Versions of this utility for OpenVMS VAX and Alpha can be found here.
Jam http://www.perforce.com/jam/jam.html
Although not a 'make' as such it is quite a powerful build tool along the same lines as 'make'. It understands C/C++ dependencies by parsing the source files so there is no need to declare objects and header files. There is no support for PL/I as yet, but maybe in the future... It is also used to build Ingres.
Ant http://ant.apache.org
Ant is a utility for building Java applications. It is quite different from the traditional make utilities and keeps it's build description in an XML file. Unfortunately it only supports building Java source at this time. A port of Apache Ant 1.7 for OpenVMS is available from HP here.

11.5  The Halls Of ZK

Overview

Tired of the same old pirates, thieves, Cyclops, wizards, dragons, horsemen, chiefs, spiders, weasel-like aliens and dungeon masters?  Tired of traveling in spaceships, magic boats, magic barrels, spinning rooms and time machines?  Tired of telling the robot where to go?  Tired of paying $$$$ for personal computer games you can't even relate to?  Have we got an escape for you?!

Announcing 'The Halls Of ZK', the original interactive fiction game written exclusively for OpenVMS!  The Halls Of ZK is a sophisticated adventure game which takes place at Digital's Spitbrook software engineering facility.  Meet famous Spitbrook personalities!  Incredible treasures and mind-boggling encounters await you.  Exercise your computer-related skills to solve the myriad of obstacles that lead to the acquisition of the ultimate treasure!

The Halls of ZK was written by William Lees and Edmund Sullivan sometime in August 1985.  Since that time a VAX binary and a VEST'd Alpha binary (with some source) has been floating around the 'net at various websites.  Recently the full source code, including the source for the Interactive Fiction Compiler (IFC) was located by John Reagan.  The code generator for IFC was re-written to output MACRO-32 source modules by Tim Sneddon and as such there are now native versions for all OpenVMS supported architectures available.

The Future

A lot has changed since this game was written.  HP has completely moved out of the Spitbrook facility.  Intel, Oracle and others have taken up residence as parts of Digital were sold off to unsuspecting buyers.  Even the barcode changed.  Is there anyone out there interested in collaborating on a revision of The Halls Of ZK, maybe something titled, 'The Halls Of ZK: Return to Spitbrook'?  If you are, then please join the ZK mailing list (details below) and express your interest.

Documentation

For those users out there who have more important things to do than work out just how to get out of the maze, or start the VAX then the walkthrough might be the things for you.

  • The Halls Of ZK Walkthrough HTML

The Halls Of ZK is listed at the following interactive fiction databases:

Software

The latest version of The Halls Of ZK can be downloaded below.  It is a VMSINSTAL kit that has been broken up into architecture specific parts.  Download those portions that are relevant to you.  It is possible that the BACKUP savset file attributes may be scrambled.  To correct this download this DCL procedure, RESET_BACKUP_SAVSET_ATTRIBUTES.COM and execute it, passing the saveset name as the first parameter.

  • A: VMSINSTAL kit (including documentation) BCK|ZIP
  • B: OpenVMS VAX images BCK|ZIP
  • C: OpenVMS Alpha images BCK|ZIP
  • D: OpenVMS I64 images BCK|ZIP
  • Complete source kit (requires Pascal and BLISS compilers) BCK|ZIP

If for some reason you are unable to install ZK system wide, then download the saveset for your specific system and install it locally, like so:

$ BACKUP ZK011.n/SAVE_SET []
$ ZK == "$SYS$DISK:[]ZK$MAIN"
$ ZK

The following is the complete source kit for X1.0-823 as a zipped BACKUP saveset:

  • ZK X1.0-832 source kit ZIP

Source Code

...something in here about fetching code, instructions, etc...

Support

The Halls Of ZK does not come with any warranty and is provided entirely "as is".  There is also no formal support available.  If you have questions, queries or something doesn't work for you then please join The Halls Of ZK Mailing List and post your query there.  To subscribe to this mailing list simply send email to ZK-List-request@kednos.com containing the the single command 'SUBSCRIBE'.

11.5.1  Walkthough

The following in an HTML-ization of the WIZARDRY.TXT file found in the original ZK distribution.  It covers how to work your way through the game and how to collect your points.  Any corrections should be reported to tsneddon@kednos.com.

  • Entrance in the building (25 points):
    • To open the door, read the wall (or type "SAY DIGITALSOFTWAREENGINEERING").
  • Getting past the guards on the way in: (25 points)
    • the guards escort you to Health Services
    • you must follow the guards or die
      • verb: FOLLOW
    • the nurse performs a physical on you
    • blood pressure machine
      • verb: GIVE ARM TO NURSE
    • scale
      • verb: STAND ON SCALE
    • the guards escort you back to lobby
    • you must follow the guards or die
      • verb: FOLLOW
    • the guards give you a temporary badge
    • you can't go until you take the badge
  • CDD Tape: (25 points)
    • find cyrstal balls in Ed's and Will office
    • rub both balls (print obsence message)
    • give a ball to petty cash officier
      • verb: GIVE BALL TO OFFICER
    • wait til petty cash closes (indicated by a reply message - 50 moves)
    • the petty cash door locks
    • look in your ball and see officer say magic words
      • verb: LOOK IN BALL
    • goto petty cash and unlock safe
      • verb: SAY magic_word
    • take bills from safe (10 points)
      • verb: TAKE BILLS FROM SAFE
    • change bill to coins using working money changer (5 points)
      • verb: PUT BILLS IN MACHINE
    • put coins in coke machine
      • verb: PUT COINS IN MACHINE
    • take the coke (5 points)
      • verb: TAKE COKE FROM MACHINE
    • give the coke to CDD developer (5 points)
      • verb: GIVE COKE TO DEVELOPER
  • DTR tape: (25 points)
    • can't take documentation set
    • bring documentation to DTR office
      • need to put doc in elevator
      • can't bring doc past doors
    • put doc under the planter
      • verb: PUT DOC UNDER PLANTER
    • climb up doc
      • verb: CLIMB UP DOC (or) UP
    • take the DTR tape
      • verb: TAKE TAPE
    • get back down
      • verb: DOWN
  • VMS tape: (25 points)
    • find card in the maze
    • bring card to lab of implementors
    • turn off other lights (lamp) by putting them in sack
      • verb: PUT LAMP IN SACK
    • put card under ultra-violet light which make letters appear on card
      • letters last on card for 15 turns then fade away
      • verb: PUT CARD UNDER ULTRAVIOLET LIGHT
    • go to VMS developer who asks for the card (need to see the lettering)
      • verb: GIVE CARD TO DEVELOPER
    • take the VMS tape
      • verb: TAKE TAPE
  • Installation of Tapes: (25 points)
    • goto VMS lab
    • get scratch disk
      • verb: TAKE SCRATCH DISK
    • give disk and VMS tape to field service who builds system disk
      • verb: GIVE DISK TO FIELD SERVICE
    • put disk in disk drive
      • verb: PUT DISK IN DRIVE
    • boot the VAX
      • verb: BOOT [ VAX ]
    • put CDD tape in tape drive
      • verb: PUT TAPE IN DRIVE
    • install CDD
      • verb: INSTALL CDD
    • take tape from tape drive
      • verb: TAKE TAPE FROM DRIVE
    • put DTR tape in tape drive
      • verb: PUT TAPE IN DRIVE
    • install DTR
      • verb: INSTALL DTR
    • take disk from disk drive
      • verb: TAKE DISK FROM DRIVE
  • Getting out of ZK past guards: (25 points)
    • goto lobby
    • if you try to leave with the system disk the guards escort you to personnel
      • must follow guards or die
      • verb: FOLLOW
    • personnel asks you questions about the game
      • must answer correctly or "you're not ready"
      • verb: answer_to_question
    • personnel rep escorts you out of building
      • verb: FOLLOW
  • Random Occurences:
    • Wandering Guard checking for badge
    • Roaming night crew radomizing objects you touched only in maze
    • Random shutdown of lights in entire building (you must WAIT)
    • Guard to put lights back on
    • Lamp runs down
  • Special Cases:
    • Any cognizant object will kill you when you try to kill (any form) it
    • Try taking the packs from our cabinet and you die

12.  Contact

Kednos Enterprises can be contacted via the following methods:

Web: http://www.kednos.com/
Sales: sales@kednos.com
Support: support@kednos.com
Hobbyist: hobbyist@kednos.com
Telephone: +1 831 373 7003
Fax: +1 831 649 4794
Mail: Kednos Enterprises
220 Country Club Gate Center, Suite 7
Pacific Grove, CA 93950

 


View Larger Map

13.  Site Map

Sitemap of www.kednos.com
1.Welcome
2.What's New?
2.1Announcements
2.3Power has been restored...
2.4A New RSS Feed, Open Source and more...
2.5NetRexx, SIG Tapes and a Few Extra Changes...
2.6PL/I Support for Eclipse IDE
2.7Project Euler
2.8WSIT and J2VMS: A Comparative Analysis
2.9Robot Find Kitten For PL/I
2.10OpenVMS Technical Journal Article
2.11Java Integration Toolkit Release
2.12Translated Support for Alpha PL/I Images
2.13New tools, an RSS feed and much more...
2.14A New Home for MX and MMK
2.15Another Correction to PLI$STARLET.TLB
2.16Field Test Release of Translated Support
2.17Correction to PLI$STARLET.TLB
2.18New Website for Kednos
2.19No Itanium GEM for Kednos
2.20New PL/I Kit for OpenVMS Alpha
2.21Tim's Blog
2.21.1This is the program that doesn't end...Further Reading
2.21.2The VMS/L&T SIG Collection needs YOU!
2.21.3Jabbing the JIB...
2.21.4DOS file attributes on OpenVMSSoftware
2.21.5Serving Mercurial repositories from OpenVMS
2.21.6TECO has now entered the realm of the internetLinks
2.21.7Improvements in VWcmsPatch
2.21.8A BLISS-ful family treeReferences,  Acknowlegements
2.21.9Images from launch of Soyuz TMA-17Links,  Acknowlegements
2.21.10Running Java Software on OpenVMSMaven on OpenVMS
2.21.28Iridium Flares
3.DocumentationKednos PL/I for OpenVMS,  Kednos PL/I for Tru64 UNIX,  Integration Products,  Open Source
3.1Articles
4.IntegrationOverview,  Examples
4.1SDLOverview,  Software,  Documentation,  Licensing & Support
4.2JavaOverview,  Software,  Documentation,  Licensing & Support,  Examples
4.3XMLOverview,  Software,  Documentation,  Licensing & Support,  Examples
5.Sales & SupportSales,  Support
6.HobbyistOverview,  Public Access,  Emulated/Simulated Systems,  Links
7.Kits
8.Examples
10.ResourcesPL/I Software,  Mailing Lists & Newsgroups,  Games
10.1Project EulerProblems,  Links
10.2Editors
10.3Code ManagementConcurrent Version System,  Code Management System,  Mercurial,  Subversion
10.4Benchmarks
10.5RexxOverview,  NetRexx,  Links
10.6SIG CollectionOverview,  Archive,  Distribution,  Contribute
11.Open SourceOverview,  Projects,  Downloading Source Code
11.1CluckOverview,  Software,  Documentation,  Source,  Support
11.2MXOverview,  The Future,  Documentation,  Software,  Support,  Links
11.3MMKOverview,  Documentation,  Software,  Source Code,  Support,  Other Make Utilities
11.5The Halls Of ZKOverview,  The Future,  Documentation,  Software,  Source Code,  Support
11.5.1Walkthough
12.Contact
13.Site Map
OpenVMS Web-Ring  [ Home | Hub | Random | Prev | Next ]