Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!iuvax!bsu-cs!dhesi From: dhesi@bsu-cs.bsu.edu (Rahul Dhesi) Newsgroups: comp.unix.questions Subject: Re: VMS: logicals UNIX: links, but... Message-ID: <6866@bsu-cs.bsu.edu> Date: 20 Apr 89 18:56:21 GMT References: <475@caldwr.UUCP> <810040@hpsemc.HP.COM> Reply-To: dhesi@bsu-cs.bsu.edu (Rahul Dhesi) Organization: CS Dept, Ball St U, Muncie, Indiana Lines: 56 In article <810040@hpsemc.HP.COM> gph@hpsemc.HP.COM (Paul Houtz) writes: >The code I just ported was from an IBM System/34. It would have been >easy to run the benchmark on a VMS system, because it has LOGICALS that >are LOCAL to the user. It was a real PAIN because Unix doesn't. And >in my opinion there is NO "badly" written code. There is only code >that is less portable or less maintainable. Seldom do we so so many rebuttable arguments in the same paragraph. >The code I just ported was from an IBM System/34. It would have been >easy to run the benchmark on a VMS system, because it has LOGICALS... I assume "ported" in this context means "modified so it would run on a new system". But the code did not run under UNIX. This means that your port wasn't complete. You left the hard-coded filenames in. As has been suggested before, removing them would have been fairly easy. Don't blame the target system for not accepting code that isn't correctly ported. >It would have been >easy to run the benchmark on a VMS system, because it has LOGICALS that >are LOCAL to the user. It was a real PAIN because Unix doesn't. It turns out that VMS has a clearly-defined syntax for its logical names. (Well, precisely-defined, at least, if not very clearly.) A logical name like ":yzzy:abc$^&*" will definitely not work. Your program did not use filenames with such a syntax. Was it simply coincidence that you (or the original programmer) used names that VMS would accept? Now if you (or the original programmer) had indeed used ":yzzy:abc$^&*" as a filename, VMS would have choked on it but UNIX would have handled it just fine. In that case could we then conclude that VMS was broken and UNIX was perfect? >...in my opinion there is NO "badly" written code. There is only code >that is less portable or less maintainable. It doesn't matter whether you classify the code that you were running as badly-written, less portable, or less maintainable. Whichever it was, it wasn't what UNIX was designed to run. Neither will UNIX correctly run code like #include stdio main() {int i; i = SYS$QIO ( ... etc. ...); } Not badly-written necessarily (VMS C being a different kettle of fish) just not portable. And UNIX won't run this, thank heavens. P.S. Just to make you think, try this with VMS C. $ CC /standard /define=DEBUG /define=VMS /define=BIG myprog.c (a) The switch /standard is interpreted to mean "don't check for conformance to standard." (b) Only the last define has any effect. -- Rahul Dhesi UUCP: ...!{iuvax,pur-ee}!bsu-cs!dhesi