bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-apl] Conversion from APL2000 to Gnu APL


From: Juergen Sauermann
Subject: Re: [Bug-apl] Conversion from APL2000 to Gnu APL
Date: Thu, 22 Oct 2015 16:52:32 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.4.0

Hi Michael,

yes. GNU APL supports scripts, which are basically (UTF-8 encoded) text files containing executable APL code.

If you are lucky then your interpreter supports 2 ⎕TF xxx (which converts an APL function or variable xxx into
executable APL code) and you can loop over all functions and variables of a workspace in order to produce
executable APL code for it and write it into a script. That script can be )LOAD-ed in GNU APL.

If you are less lucky, then you have to write an equivalent of 2 ⎕TF yourself as a user-defined APL function.
Since the format of 2 ⎕TF is not uniquely defined (in particular for APL values) it would be wise to test, if the
receiving interpreter (say, GNU APL) understand your format.

For example (in GNU APL):

      VAR←1 (2 3 ' abc') 4
      2 ⎕TF 'VAR'
VAR←1 (2 3 ' abc') 4

/// Jürgen


On 10/22/2015 03:29 PM, Michael Potter wrote:
APL2000 does not appear to have an )OUT command.

We get:
"INCORRECT COMMAND" in response to:
)OUT
)OUT SOMEFILE
)OUT C:SOMEFILE

There are about 100 modules in this workspace, so I would rather not cut and paste them between interpreters.

Any other ideas?

On Thu, Oct 22, 2015 at 8:33 AM, Juergen Sauermann <address@hidden> wrote:
Hi Michael,

in principle it is possible to exchange workspaces between different APL interpreters.

However,  the workspace files produced by one interpreters cannot be loaded by another
interpreter directly, and trying to do so leads to errors like the one below.

What is needed instead is something like the following procedure:

1. Load the workspace into interpreter A (say, APL2000)
2. export the workspace with command )OUT
3. start interpreter B (say, GNU APL) and import the workspace with command )IN
4. )SAVE or )DUMP the workspace to produce a file that can be directly loaded by interpreter B.

Even that sometimes fails due to differences in the files handled by )IN and )OUT commands of
different interpreters, but that could possibly be fixed.

/// Jürgen


On 10/21/2015 11:25 PM, Michael Potter wrote:
I am trying to run a workspace that I copied from APL2000 to Gnu APL and getting an error.

I do not know anything about APL, I am trying to help a friend who is exploring options to run his APL2000 code other ways.

Here is the error:

$ apl -L INFORCEXX.w3
                                       
                    ______ _   __ __  __    ___     ____   __ 
                   / ____// | / // / / /   /   |   / __ \ / / 
                  / / __ /  |/ // / / /   / /| |  / /_/ // /  
                 / /_/ // /|  // /_/ /   / ___ | / ____// /___
                 \____//_/ |_/ \____/   /_/  |_|/_/    /_____/
                                       
                       Welcome to GNU APL version 1.5 / 
                                       
                Copyright (C) 2008-2015  Dr. Jürgen Sauermann
                       Banner by FIGlet: www.figlet.org
                                       
                This program comes with ABSOLUTELY NO WARRANTY;
                          for details run: apl --gpl.
                                       
     This program is free software, and you are welcome to redistribute it
         according to the GNU Public License (GPL) version 3 or later.
                                       
Bad UTF8 sequence: 0xCC... at UTF8_string.cc:190

==============================================================================
Assertion failed: 0 && "Internal error in UTF8_string::toUni()"
in Function:      toUni
in file:          UTF8_string.cc:191

Call stack:

----------------------------------------
-- Stack trace at UTF8_string.cc:191
----------------------------------------
0x7f48ead3daf5 __libc_start_main
0x44323a  main
0x4485eb   init_apl(int, char const**)
0x483d65    Command::process_line(UCS_string&)
0x483691     Command::do_APL_command(std::ostream&, UCS_string&)
0x55459f      Workspace::load_WS(std::ostream&, std::vector<UCS_string, std::allocator<UCS_string> > const&, UCS_string&, bool)
0x44e821       XML_Loading_Archive::XML_Loading_Archive(char const*, int&)
0x44c168        XML_Loading_Archive::next_tag(char const*)
0x44be72         XML_Loading_Archive::get_uni()
0x547607          UTF8_string::toUni(unsigned char const*, int&)
0x451aff           do_Assert(char const*, char const*, char const*, int)
========================================

SI stack:


==============================================================================
terminate called after throwing an instance of 'ErrorCode'
Aborted (core dumped)

Note: The .w3 file is not XML, yet the error looks like it is looking for XML.  I suspect that is the fundamental issue: The workspaces are not compatible between APL2000 and GnuAPL.

Here are my questions:
1) Should I just give up and tell my friend he has to buy the APL2000 license?

2) Can I expect workspace files to be copied unchanged between APL2000 and GnuAPL?  Seems strange that it would be okay to do that, but I don't see any option in APL2000 to expect the code.

3) How do I export the code out of APL2000 into GnuAPL?

4) What other problems should I be looking for once I get past this error.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]