Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
60
Task/Variable-size-Get/REXX/variable-size-get.rexx
Normal file
60
Task/Variable-size-Get/REXX/variable-size-get.rexx
Normal 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). │
|
||||
└────────────────────────────────────────────────────────────────────┘*/
|
||||
Loading…
Add table
Add a link
Reference in a new issue