summarizes helpful technical discussions on the comp.sys.hp.mpe
Internet newsgroup and 3000-L mailing list. Advice here is offered on
a best-effort, Good Samaritan basis. Test these concepts for yourself
before applying them to your HP 3000s.
As always, I would like to
hear from readers. Even negative comments are welcome. If you think
Im full of it or goofed, or a horses behind, let me know.
If you spot something on 3000-L and would like someone to elaborate
on what was discussed, let me know. Are you seeing a pattern here?
You can reach me at email@example.com.
My all-time favorite candidate for worst default behavior in a command option is the directory parameter of the STORE command. Every few months someone asks about restoring a user volume set and every few months somebody has to remind everyone about the proper usage of the directory option. This month it was Gilles Schipper who provided the reminder:
You need to ensure that your backup includes ALL directories; for example,
Then, after you have rebuilt your volume set, you simply restore the directories as follows:
:restore *t;;directory (note 2 consecutive ;s)
Then restore the data that used to be on the user volume set. Make sure you use the KEEP option on any restores just to guard against any errors in specifying the file sets that need restoring.
Symbolic links why did it do that?
Symbolic links have been around for a long time, yet they remain underutilized outside the Posix realm and misunderstood in general. Consider this posting: Heres my official complaint/warning/whatever about how :PURGE deals with links. A :PURGE of a link does NOT purge the link. It purges the file the link points to. Its not at all obvious to me why one would want it to do this and Id rather not think too long about my recent experience regarding why one would NOT want it to do this! And this was from someone who would normally be considered an MPE guru. Another guru explained why the behavior of :PURGE on a link made perfect sense to him, but then complained about the behavior of :RENAME.
The best way to think about symbolic links is to think of them as permanent file equations. For example,
will result in the purging of the file mytest. Note that the file equation still exists, but it points to nothing. If you want to remove the file equation, you use the reset command. If you want to remove a symbolic link, you use the purgelink command. As a second example, consider,
This will rename the file mytest to mytest2. Again, the file equation still exists, but points to nothing. Symbolic links behave the same way.
Web Console weirdness
A number of people have written over recent months about problems with the Secure Web Console hanging. For no apparent reason, without any warning, they hang. The only way to un-hang them is to close the console and re-access it, losing all terminal buffer history. Carl McNamee provided a possible workaround: We had the same problem with lock-ups at our site until we isolated the Web console devices onto their own LAN segment. It appears that the devices go out into left field if the number of network packets they receive goes over some threshold. It doesnt have to be a steady stream of packets either. We found that a quick burst of packets was enough to cause problems. Since moving our Web consoles to a network segment that has almost no traffic the problem has completely disappeared.
What do you do with COBOL programmers if migrating to HP-UX or Linux?
The question: Were planning new applications to replace our MPE ones that cant easily be ported or that really do need to be re-written. One school of thought is that we should write new stuff in C. C is good for attracting new programmers, but how hard is it for COBOL programmers to learn to use C? Another school of thought is that the programmers should write in the language that they know best, to get the best code with the highest productivity. This appeals to me, since productivity is going to be extremely important. The same modular design can be written in either C or COBOL and as long as the two talk to each other this multi-language strategy would work. How well do different languages cooperate on Unix or Linux? (i.e., can COBOL make libraries C can call, and the reverse?)
Jim Phillips provided the philosophical answer, with which I agree completely: Way back when I went to programming school, we learned four languages: Basic, Fortran, COBOL, and RPG. Since then Ive picked up Visual Basic, C, and some C++. For me (and Id like to think, for any competent programmer, no matter what language they use primarily) Ive not had a problem picking up new languages, in so far as syntax and such like. Now, procedural versus event, thats a different story. That requires some change in design. But still, not so much so as to make everything Ive learned using those old, out-dated languages completely useless.
I guess the bottom line is: If you want to retrain your existing COBOL programmers to use C, you may have problems with individual programmers (but Ill bet those have been giving you problems anyway), but the vast majority will probably be excited to learn something new. Dont discount them just because they use COBOL.
Gavin Scott provided a more technical answer: Having the programmers write in the language they know best is probably always going to be the fastest route to a robust and predictable solution. The biggest problem with COBOL on HP-UX or Linux is that it is probably the least available language. The kind of people who like to hack Unix code are the least likely to also like writing COBOL programs, so the COBOL compilers that exist tend to be expensive commercial products. The Unix COBOL compilers often have proprietary runtime libraries and some are not native compilers at all, but are either pure interpreters or produce an intermediate PCODE which is run by a virtual machine. I suspect all of them have at least the ability to call out to C (and therefore most other languages). You can probably call into most of them as well, but things start to look more like Java than C. Most everything else on Unix tries to be compatible with C/C++. So, in the worst case you might have to write a small amount of glue code in C to make random language A be able to invoke code written in random language B.
For the geeks among us, Douglas Becker noted, If you want to make a comparison among the various languages, here is a URL for the Hello World Project: www.latech.edu/~acm/HelloWorld.shtml
John Burke is the editor of the NewsWires HiddenValue and net.digest columns and has more than 20 years experience managing HP 3000s.
Copyright The 3000 NewsWire. All rights reserved.