4GL Question
Posted in 2001
Topics: Connectivity: ESQL/C, 4GL & Embedded SQL
Hello list! A happy new to all! After changing my server I try to run a Shellscript include a .4ge file. My problem: The old server has a i4gl but the new one a RDS system. The old machine use a version 4.?? and the new 7.30. The person who has written the file has deleted the original files :-((((. Do I need only a 4GL-runtime version to run these old 4ge files? What can I do get the sourcecode? Thanx in advance for any ideas! Best regards. Dirk Emmermacher Lowersaxony gymnastics federation
If, as I read this, you no longer have the source files necessary to compile the programs but only have the EXECUTABLES (4ge files) you are in BIG TROUBLE. Can you give more details as to old architecture and new architecture??? Good luck and condolences on your terrible beginning to 2001. Rob Vorbroker robv@iiug.org Dirk Emmermacher <NDSTURNERBUND@t-online.de> wrote in message news:92sr9o$fmq$1@news.xmission.com... > > Hello list! > > A happy new to all! > > After changing my server I try to run a Shellscript include a .4ge file. > My problem: The old server has a i4gl but the new one a RDS system. > The old machine use a version 4.?? and the new 7.30. The person who has > written the file has deleted the original files :-((((. Do I need only a > 4GL-runtime version to run these old 4ge files? What can I do get the > sourcecode? > > Thanx in advance for any ideas! > > Best regards. > > Dirk Emmermacher > Lowersaxony gymnastics federation
Dirk Emmermacher wrote in message <92sr9o$fmq$1@news.xmission.com>... > >After changing my server I try to run a Shellscript include a .4ge file. >My problem: The old server has a i4gl but the new one a RDS system. >The old machine use a version 4.?? and the new 7.30. The person who has >written the file has deleted the original files :-((((. Do I need only a >4GL-runtime version to run these old 4ge files? What can I do get the >sourcecode? > Basically, you are very deep in smelly brown stuff. A .4ge cannot be converted back to 4GL code unless you are an absolute legend with assembly language; or a 15 year old hacker/virus author... A .4gi could be converted back to .4gl code; in fact I once made some inroads into such a project but never completed it - it was more of a fun project that nobody would pay the development costs of. HOWEVER......... I've done a lot of stuff in the last two years involving co-existence of different 4GL versions. We've had to do this because we supply a lot of customers so we need to be able to compile and test a small variety of 4GL, and we also need to be able to test new engines BEFORE we trust to install them at customer sites. With these methods we had a nice graceful transition from 4.?? to 6.?? and 7.?? 4GLs over a period of about a year. Some customers are REALLY slow... Here's a ritual that will probably work, assuming of course that you are still using the same processor family, for example SCO to SCO or HP to HP. Stop reading now if you have changed the machine type. I'm assuming that you are installing 7.?? 4GL and engines, but anything > 4.?? is relevant to the discussion. 1) Find out exactly what the ?? is in 4.??. If it's 4.10 and above then you should be in business. 2) When you run your .4ge program, export this shell variable: SQLEXEC=$INFORMIXDIR/lib/sqlrm and try running the program. An excellent place for this setting is in the shell script calling upon the program. Even better is this shell syntax: SQLEXEC=$INFORMIXDIR/lib/sqlrm something.4ge ..... This is a special syntax all real shells support ie I'm not talking about csh - maybe it supports it, but who cares? This causes that variable to be exported INTO the program named on the line - ie something.4ge. It is a one-off export for that program and does not affect the rest of the script. If you are familiar with 4.?? then you will know that $SQLEXEC used to be set to sqlturbo or sqlexec from the informix lib directory. It referenced the backend program which actually talked to the database. The new 7.?? engines and tools use a different architecture which made the $SQLEXEC redundant, however Informix supply a "relay module" (hence sqlRM) which allows the older 4GL's to work in the style they expect. 3) What may happen next is that some of the runtime environment for the 4.?? is missing from your $INFORMIXDIR. What I mean is, let's assume you've installed 4GL 7.30 and IDS 7.31 into the $INFORMIXDIR of the new machine. Obviously there are no support files for the 4.?? loaded. This might be a bad thing. The .4ge may splutter and die anyway. If that proves to be the case, do this: 4) Get a hold of the 4.?? 4GL runtime or development disks/tapes from Informix (hopefully they haven't been deleted from your cabinets). If you can't find them, stop reading now. You only need the 4GL - don't worry about trying to find a 5.?? engine tape. Also, gather together the disks for your current versions of 4GL and the engine, and maybe iSQL etc if you've bought it. Stop your engine - mandatory whenever you reinstall software into $INFORMIXDIR. Start by installing the 4.?? 4gl into your $INFORMIXDIR and licence it. Follow this up by the usual sequence of 7.?? 4GL, iSQL, and the 7.?? engine lastly. Licence each one in it's turn before loading the next one. It's really important to follow that sequence, even though the new install guides say you don't have to worry about any particular sequence. They are lying - the install sequence is still sensitive because Informix hasn't got it correct as far as I've seen. Just two months ago I pissed around for 4 hours before realising the lie of the new install guides. What you will end up with is a $INFORMIXDIR containing most of the bits from 4.?? 4GL and ALL the required bits from the 7.?? products. In practice this has proven capable of running mixed versions including compilers, although each new version of 4GL or the engine brings a little flutter of excitement as I discover whether the rules have changed. So far, this method still works... So far, we haven't installed a 2000 server, but we've installed 7.?? and a 9.21 engine into a mixed environment and besides, the 2000 servers are basically a renamed 7.?? or 9.?? server so I'm still optimistic if you are using a 2000 engine. 5) With this hybrid $INFORMIXDIR - AS LONG AS IT CONTAINS ALL THE CORRECT FILES for the 7.?? products - you may now have a working .4ge that you've rescued from history. IF your .4ge still does not run, then you have one last chance. It involves setting up a complete alternative $INFORMIXDIR which contains a true 4.?? and a few symbolic links which spoof the rest of the setup. This arrangement will get hairy and I won't go into it now. I don't think you'll need to go this far; in fact, I don't think you'll need to install a 4.?? 4GL product but I've listed that anyway to save you time if the $SQLEXEC doesn't solve the problem. 6) Get started rewriting that .4ge because this ritual will not work forever! I mentioned at the top that you need at least 4.10 4GL. In my experience, any old executables before that do not work at all with the sqlrm. There is no saying what will happen in the future, and I'm sure you don't want to rely on this method forever. Make sure you don't lose the source this time! Someone has recently tried to convince me that people used to eat sheep testicles in their country, and it's quite soft and creamy when cooked correctly. Perhaps the recipe can be adapted to humans if you can identify the fool who deleted the source. Good luck on your mission.