# Limits and Capacities

> [HTML Version](limitsandcapacities.htm)

**Files and Related**

For details on ISAM-A files, see ISAM-A [Specifications \& Features](specificationsfeatures.md).

| | | |
|------|------|------|
| **Item** | **Size / limit / capacity / description** | **Updated in A-Shell **  <br>**build...; old value** |
| Files | none; see ISMA-A [File Size Limits](file_size_limits.md).  | 948 of Dec 05; 2GB |
| Filenames | 72+8 (72 character filename plus 8 character extension). Allowable characters are A-Z, 0-9, dollar sign ( \$ ), hyphen ( - )  and underscore ( \_ ). | 1662 of June 2019; 10+3 |
| Expanded DO file | ~122K  | 864 of Feb 04; 62K |
| Random file record size | No limit. Note, however, that this applies to READ and WRITE operations; there is a 2048 byte limit for SERCH. | 1246 of Apr 12; 64K |
| EFS limit of sequential files open | 512 (or the FILES specification in  miame.ini, whichever is less). | 1244 of Feb 11; 30 |
| Range of file channels | 0 to 2^31 -1  |  |




**Subroutines**

| | | |
|------|------|------|
| **Item** | **Size / limit / capacity / description** | **Updated in A-Shell **  <br>**build...; old value** |
| Number of parameters than can be passed to a subroutine, function or procedure | 1024 | 6.5.1628 of Feb 2018; 128 |
| Size of subroutine name | Six characters for internal SBR names, ten characters for SBX names. |  |
| Size of a parameter passed in or out of a subroutine | 2\*\*24-1 (16,777,215) bytes |  |
| Number of subroutines on disk or called in a single program | No limit |  |
| Number of modules that can be loaded into user memory | 96 (per job). Subroutines are modules, but unless manually loaded (with LOAD.LIT) they will be auto-loaded, cached, and auto-updated if the SBX on disk gets updated. Auto-loaded modules will be freed to make room for new ones as needed. | 854 of Nov 03; 32 |
| AUI: number of controls | No limit. The control table expands as needed. | 1166.6.1 of 16 Nov 09; 600 |
| AUI: number of menu items | No limit. The menu table expands as needed. | 1166.6.1 of 16 Nov 09; 250 |
| AUI\_MENU: length of individual menu item command line | 200 |  |
| AUI\_MENU: length of individual menu item description | 64 | 1159 of Sep 09; 32 |
| BASORT: max record size | 6K | 7.0.1778 of Sep 25; 4K  |
| INFLD: length of entry (multi-line field) | No limit | 1159 of Sep 09; 16K |
| INFLD: length of multi-line edit box (|M) | 4K | 6.5.1671 of Nov 19; 1600 |
| INFLD: SETDEF match length | 300 | 1111 of May 08; 50 |
| INFLD: tooltip characters | 1023 | 5.1.1175, 300 |
| MX\_CLIPBOARD: buffer size | No limit | 1194 of Nov 10; 3K |
| MX\_GETOFD: _fname_ parameter length | 256 | 1222 of Jul 11; 80 |
| MX\_FINDFIRST, MX\_FINDNEXT, MX\_FINDEND | 20: number of directories (or sub-directory levels) open via MX\_FINDFIRST for scanning with MX\_FINDNEXT without closing via MX\_FINDEND  |  |
| MX\_PWCRYPT: password length | 128 | 1175 of Feb 10; 24 |
| MX\_SHELLEX: parameter length | 1024 individual parameter; 4096 for all parameters combined | 1202 of Jan 11; 500 |
| PCKLST: rows | 32K |  |
| REGEX: submatches | 100 | 1210 of Mar 11; 20 |
| XTEXT: line length | 1998 characters | 1253 of June 12; 998 |
| XTREE: columns | 200, may be editable or not | 1691 of Oct 2020; 100 |
| XTREE: rows | No limit | 1159 of Sept 09;  |
| XTREE: number of trees allowed | No limit | old limit = 32 |
| XTREE: tooltip length | 1023 characters | 1205 of Feb 11 |
| XTREE: multi-level trees | 63 | 1737 of Aug 23; 9 |




**Compiler**

| | | |
|------|------|------|
| **Item** | **Size / limit / capacity / description** | **Updated in A-Shell **  <br>**build...; old value** |
| Length of a single BASIC statement including continuations | 16K | 6.5.1628 of Feb 2018; 128; 3K |
| [Nested ++INCLUDEs](nestedincludes.md) | 38 | 6.4.1547 of March 2017; 20 |
| Nesting level of SWITCH statements | 8 |  |
| Nesting level of TRACE\_BEGIN / END blocks | 38 | 6.5.1644 of Aug 2018; 1    |
| [One Time ++INCLUDEs](onetimeincludes.md) | No limit | 5.1.1235 of Oct 11; ~400 |
| Length of a variable or symbol name | 260 |  |
| Length of a DEFSTRUCT name | 64 |  |
| Number of dimensions (subscripts) in an array | 16 |  |
| Number of variables  | Without /AV switch, about 6400 (fewer for arrays); with /AV, about 1.6 million |  |
| Size of RUN module | Without /A switch, calls/gotos limited to about 64K;; with /A switch, about 16 million |  |
| Size of DATA embedded in RUN | 512K | 6.5.1657 of March 2019  |
| Number of functions/procedures  | No specific limit other than memory available to compiler |  |
| Number of defines, deftypes | | 
| DATA statements | 1024 bytes | 6.5.1721 of Nov 2022; 512 bytes |




**Other**

| | | |
|------|------|------|
| **Item** | **Size / limit / capacity / description** | **Updated in A-Shell **  <br>**build...; old value** |
| //XL parameter length | 512 characters | 6.5.1725 of Feb 203; 256 characters |
| Ordered map key length | Unlimited | 6.5.1716 of May 2022; 511 bytes |
| Windows printer names | 100 characters | 5.1.1148 of May 2009; 50 |
| Print filter SBX names | 10 characters | 6.2.144 of Jan 2016; 6 |
| ATE server side timeout on initial handshake | 6 seconds | 6.2.144 of Jan 2016; 3 |
| Scrollback buffer | 200 lines | 6.2.1422 of Jan 2016; 100 |
| Associative array key | 511 bytes | 6.2.1421 of Nov 2015; 259 |
| [QUEUE](queue_sp.md) | 65,535 |  |
| DEVICE name | Three or four alphabetic characters, followed by one or two numeric digits, with a maximum length of five combined characters. |  |
| Device definitions | 300 for Unix, 1000 for Windows  |  |
| Ersatz name | One to ten alphabetic or numeric characters, starting with an alphabetic character, and immediately followed by a colon. |  |
| Ersatz table auto-refresh  | Every 30 seconds |  |
| Ersatz devices allowed  | 1000 | 979 of Jan 06; 400 |
| ERSATZ=fspec length | 160 | 1208 of Mar 11; 70 |
| Printer ini file line length | 256 characters  | 987 of Apr 07; 100 |
| Trace message in ashlog.log, length | 2000 |  |
| Trace.print statement, length | 16K | 1639 of July 2018; 800 |
| Ashlog.log maximum filesize | 10MB; new file with extension .01, .02, etc. will be created when maximum filesize  is reached | 1662 of June 2019; 3MB for Win, 5MB for Unix |
| Command line length | 300 characters | 916 of Feb 05; 200 |
| Number of GUI objects that can be defined at any one time | No limit | 1166 of Nov 09; 250 |
| Number of modules that can be loaded into user memory | 128 (per job). Note that subroutines are modules. | 6.5.1679 of April 2020; 96 |
| Input CSV line length | No limit | 995 of Sep 07; 4K |
| INPUT statement, all forms | No limit | uncertain; 4K |
| Windows printer name | 100 characters | 1148 of May 09; 50 |
| Command line history buffer | 25 lines | 1168 of Dec 09; 10 |
| VUE line length | There is effectively no limit. When opening a file, VUE reads the longest line in the file and to that number adds 8K.  | 6.5.1631 of February 2018, VUE edit 371; previously VUE looked only at the first 100 lines, and then added 1K, with an overall minimum limit of 4K. |
| [Dynamically Sized Variables](dynamically-sized_variables.md) | No limit |  |
| HOST.LIT response capture buffer | 256 | 2.0(105) of Aug 11; 64K |
| PAD\$(expr,len) return expression length | 4096 | 1175 of Feb 10; 257 |
| TAB(col) columns | 4095 | 1105 of Feb 08; 472 |
| Buffer to expand strings containing %env% variables. | No limit | 512 bytes; 6.0.1263 of Oct 12 |
| Nested function/procedure calls | Set limit of 99 as a way of reducing the likelihood and severity of problems caused by accidental infinite recursion. | Unlimited; 6.1. 1387 of July 2014 |
| Length of individual GDI print directives | No limit | 512 bytes; 6.5.1664 of August 2019 |


