Initial data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 72d218235f
commit f23f22d71c
199087 changed files with 3378941 additions and 0 deletions

View file

@ -0,0 +1,60 @@
/*REXX program demonstrates (see the penultimate statement) how to */
/* to find the size (length) of the value of a REXX variable. */
/*REXX doesn't reserve any storage for any variables, as all variables */
/*are stored as character strings, including boolean. Storage is */
/*obtained as necessary when REXX variables are assigned (or reassigned)*/
a = 456 /*length of A is 3 */
b = "heptathlon" /*length of B is 10 */
c = "heptathlon (7 events)" /*length of C is 21 */
d = '' /*length of D is 0 */
d = "" /*same as above. */
d = left('space junk' ,0) /*same as above. */
d = /*same as above. */
e = 99-9 /*length of E is 2 (e=90) */
f = copies(a,100) /*length of F is 300 (a=456)*/
g.1 = -1 /*length of G.1 is 2 */
g.2 = -1.0000 /*length of G.2 is 7 */
/*length of HHH is 3 */
/*Note that when a REXX variable */
/*isn't SET, then the value of it*/
/*is the uppercased name itself, */
/*so in this case (upper): HHH */
something = copies(a, random(100)) /*length is something, all right,*/
/*could be 3 to 300 bytes, by gum*/
thingLen = length(something) /*use LENGTH bif to find its len.*/
say 'length of SOMETHING =' thingLen /*display the length of SOMETHING*/
/*┌────────────────────────────────────────────────────────────────────┐
Note that the variable's data (value) isn't the true cost of the
size of the variable's value. REXX also keeps the name of
the (fully qualified) variable as well.
Most REXX interpreters keep (at a miminum):
a four-byte field which contains the length of the value
a four-byte field which contains the length of the var name
an N-byte field which contains the name of the variable
an X-byte field which contains the variable's value
a one-byte field which contains the status of the variable
[Note that PC/REXX uses a two-byte field for the first two fields]
Consider the following two DO loops assigning a million variables:
do j=1 to 1000000
integer_numbers.j=j
end
and
do k=1 to 1000000
#.k=k
end
The "j" loop uses 35,777,792 bytes for the compound variables,
The "k" loop uses 21,777,792 bytes for the compound variables,
(excluding the DO loop indices [j and k] themselves).
*/