Archive revisited
Posted: Mon Aug 25, 2025 1:32 pm
What fun! Last night I spent a few happy/frustrating hours writing some routines in Archive to restructure and update some databases.
Its been many years since I last did anything remotely serious with Archive. Still, I was amazed at how much my fingers seemed to remember (and how much my old brain has forgot)!
A pity this program wasnt developed further. To me, it seemed to have great potential: quite powerful while relatively simple to program and use - and of course "free" at a time when similar software could cost more than a QL!
One needs to get quite creative to get round some of the limitations of the programming language (APL?) For example, there doesnt seem to be an exit or break equivalent to get out of a loop. One way I found was to make the loop a subroutine and then use return instead of exit. Another problem is if you dont know whether a database is open or not. If its already open and you try to open it you get an error. If its not open and you try to close it you also get an error and the program stops. Again, a subroutine comes to the rescue: put the close command in its own subroutine called closerr and call it with error closerr. Etc.
A pity there is no BEEP. But apparently this has been fixed with an external machine code procedure and called with the usr() function - a function not available in all versions of Archive. Interfacing machine code procedures with Archive seems pretty limited and theres not much by the way of documentation to go with it, IIRC. (Does anyone have the full details?)
The main problem to my mind is that theres no proper way to interface Archive with S*BASIC. I guess that is why DBAS and DataDesign were invented..
Its been many years since I last did anything remotely serious with Archive. Still, I was amazed at how much my fingers seemed to remember (and how much my old brain has forgot)!
A pity this program wasnt developed further. To me, it seemed to have great potential: quite powerful while relatively simple to program and use - and of course "free" at a time when similar software could cost more than a QL!
One needs to get quite creative to get round some of the limitations of the programming language (APL?) For example, there doesnt seem to be an exit or break equivalent to get out of a loop. One way I found was to make the loop a subroutine and then use return instead of exit. Another problem is if you dont know whether a database is open or not. If its already open and you try to open it you get an error. If its not open and you try to close it you also get an error and the program stops. Again, a subroutine comes to the rescue: put the close command in its own subroutine called closerr and call it with error closerr. Etc.
A pity there is no BEEP. But apparently this has been fixed with an external machine code procedure and called with the usr() function - a function not available in all versions of Archive. Interfacing machine code procedures with Archive seems pretty limited and theres not much by the way of documentation to go with it, IIRC. (Does anyone have the full details?)
The main problem to my mind is that theres no proper way to interface Archive with S*BASIC. I guess that is why DBAS and DataDesign were invented..