Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,28 @@
/* REXX ***************************************************************
* 03.02.2013 Walter Pachl
* 19.04.2013 mid 3 is now a function returning the middle 3 digits
* or an error indication
**********************************************************************/
sl='123 12345 1234567 987654321 10001 -10001 -123 -100 100 -12345',
'2 -1 -10 2002 -2002 0 abc 1e3 -17e-3'
Do While sl<>'' /* loop through test values */
Parse Var sl s sl /* pick next value */
Say left(s,12) '->' mid3(s) /* test it */
End
Exit
mid3: Procedure
Parse arg d /* take the argument */
Select /* first test for valid input */
When datatype(d)<>'NUM' Then Return 'not a number'
When pos('E',translate(d))>0 Then Return 'not just digits'
When length(abs(d))<3 Then Return 'less than 3 digits'
When length(abs(d))//2<>1 Then Return 'not an odd number of digits'
Otherwise Do /* input is ok */
dx=abs(d) /* get rid of optional sign */
ld=length(dx) /* length of digit string */
z=(ld-3)/2 /* number of digits to cut */
res=substr(dx,z+1,3) /* get middle 3 digits */
End
End
Return res

View file

@ -0,0 +1,16 @@
/*REXX program returns the three middle digits of a decimal number (or an error msg).*/
n= '123 12345 1234567 987654321 10001 -10001 -123 -100 100 -12345',
'+123 0123 2 -1 -10 2002 -2002 0 abc 1e3 -17e-3 1234567.',
1237654.00 1234567890123456789012345678901234567890123456789012345678901234567
do j=1 for words(n); #=word(n,j) /* [↓] format number for pretty output*/
say 'middle 3 digits of' right(#, max(15, length(#) ) ) "──►" middle3(#)
end /*j*/
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
middle3: procedure; parse arg x; numeric digits 1e6; er=' ***error*** '
if datatype(x,'N') then x=abs(x)/1; L=length(x) /*use abs value; get length*/
if \datatype(x,'W') then return er "argument isn't an integer."
if L<3 then return er "argument is less than three digits."
if L//2==0 then return er "argument isn't an odd number of digits."
return substr(x, (L-3)%2+1, 3)