Greetings,

I seem to remember a )SIZE command from way back.  I queried Claude and
found the following:

*Me: * Is the )SIZE command part of the IBM APL standard?

*Claude:*

Good question — worth distinguishing a couple of things here.

*)SIZE is not part of a formal international standard.* The formal APL
language standards (ISO/IEC 8485 for APL, and later ISO/IEC 13751 for
"Extended APL"/APL2-style features) define the *language* — syntax,
primitive functions, operators, array semantics, etc. They generally do
*not* standardize system commands (the )-prefixed commands), because those
are considered part of the *interactive session/workspace management*
layer, which is implementation-specific.

*)SIZE is, however, a long-standing IBM convention.* It originated in IBM's
APL implementations — APL\360, APLSV, and later APL2 — as part of their
documented system command set, and it's specified in IBM's own APL2
Language Reference and Programming Guide manuals. Because IBM's APL
products were so influential, many other vendors (Dyalog, GNU APL, APLX,
etc.) adopted )SIZE or a close variant as a convention for compatibility
and familiarity, even though they aren't obligated to by any standard.

So the accurate way to put it: )SIZE is a de facto standard inherited from
IBM's APL lineage, not a de jure one — it's part of IBM's documented
practice, but not part of the ISO APL language standard.

----------------

*Me: * Can you set the size of a workspace?

*Claude:*

Yes — )SIZE can be used both to query and to set the workspace size limit,
depending on the implementation.

*To query:* typing )SIZE alone reports the current active workspace size
(and often the maximum available).

*To set:* you follow it with a number, e.g.:

)SIZE 4000

This requests a workspace size limit of 4000 (units vary by implementation
— often bytes, or sometimes a system-defined unit). A few practical notes:

   - *You can usually only shrink or grow within bounds.* Most
   implementations let you *reduce* the size freely, but *increasing* it is
   capped by system-imposed limits (total memory available, licensing limits,
   or an administrator-configured maximum). If you ask for more than the
   system allows, it typically just sets it to the maximum permitted rather
   than erroring out.
   - *Timing matters.* In many implementations, )SIZE only takes effect for
   variables/objects created *after* the command — it doesn't retroactively
   shrink space already occupied by existing data, and if your existing
   workspace content already exceeds the new requested size, the request may
   be rejected or clamped.
   - *Some implementations tie )SIZE to sign-on time only.* In older
   mainframe-style APL systems (e.g., timesharing APL\360/APLSV), workspace
   size was sometimes fixable only during login/sign-on, not mid-session.
   Modern implementations like Dyalog APL and GNU APL are generally more
   flexible and let you resize mid-session, memory permitting.

If you tell me which specific APL system you're working in (Dyalog, GNU
APL, APL2, etc.), I can give you the precise syntax and behavior for that
one, since the exact units and constraints do vary.

-------------------------------------------------------

I am trying to think if )SIZE makes any sense in today's environment.

I think the following would be worth knowing:

1. How much memory the system is currently using.  This would redilly point
out when you are taking up a lot more memory then you expect.

2. How much memory is available before going into virtual memory.

3. Being able to set a max memory usage can be helpful in a
multi-processing system.

Just some thoughts.

Blake
  • )SIZE Blake McBride
    • Re: )SIZE Dr . Jürgen Sauermann via Bugs and suggestions for GNU APL

Reply via email to