1. How do you convert a List back to a sequence ?

My Problem is converting a List-string back to a sequence: (# comments)
Consider the following:

MyList = (blaa....blaa...)
MyDate = {2000,03,15}
# to put this into  Mylist

addItem(MyList, sprint(Mydate))  --# if you don't sprint Mydate, it will
bomb out in certain conditions!!???
# now I want to call MyList to use it to reference to a date in the calendar

MyNewDate = getItem(MyList, i)  # i is the number in of the item in the list
# but alas, this is no longer {2000,03,15}
# what is it? - I don't know, I can't seem to figure it out.

How do you convert (MyList, i) back to MyDate sequence, so I can use
subscripting to access the elements?

Arthur B. Mashiatshidi

new topic     » topic index » view message » categorize

2. Re: How do you convert a List back to a sequence ?

Arthur,

Here's a thought:

Instead of trying to convert a list's contents back to a sequence, make a
*parallel* sequence, "MyDates", which has the dates in exactly the same
order as your list (ie, create it at the same time); then use the index from
the list to refer to the related date in the sequence.  In other words,
instead of *getting* the sequence of the date *from* the list, use the index
from the list to refer to an element in the pre-existing parallel sequence,
which already has sub-elements of the year/month/day.

Would that work for you?

Dan Moyer


----- Original Message -----
From: "Arthur Mashiatshidi" <arthurm at GOLDFIELDS.CO.ZA>
To: <EUPHORIA at LISTSERV.MUOHIO.EDU>
Sent: Wednesday, September 27, 2000 12:11 AM
Subject: How do you convert a List back to a sequence ?


> My Problem is converting a List-string back to a sequence: (# comments)
> Consider the following:
>
> MyList = (blaa....blaa...)
> MyDate = {2000,03,15}
> # to put this into  Mylist
>
> addItem(MyList, sprint(Mydate))  --# if you don't sprint Mydate, it will
> bomb out in certain conditions!!???
> # now I want to call MyList to use it to reference to a date in the
calendar
>
> MyNewDate = getItem(MyList, i)  # i is the number in of the item in the
list
> # but alas, this is no longer {2000,03,15}
> # what is it? - I don't know, I can't seem to figure it out.
>
> How do you convert (MyList, i) back to MyDate sequence, so I can use
> subscripting to access the elements?
>
> Arthur B. Mashiatshidi

new topic     » goto parent     » topic index » view message » categorize

3. Re: How do you convert a List back to a sequence ?

----- Original Message -----
From: "Arthur Mashiatshidi" <arthurm at GOLDFIELDS.CO.ZA>
To: <EUPHORIA at LISTSERV.MUOHIO.EDU>
Sent: Wednesday, September 27, 2000 6:11 PM
Subject: How do you convert a List back to a sequence ?


> My Problem is converting a List-string back to a sequence: (# comments)
> Consider the following:
>
> MyList =3D (blaa....blaa...)
> MyDate =3D {2000,03,15}
> # to put this into  Mylist
>
> addItem(MyList, sprint(Mydate))  --# if you don't sprint Mydate, it wil=
l
> bomb out in certain conditions!!???
> # now I want to call MyList to use it to reference to a date in the
calendar
>
> MyNewDate =3D getItem(MyList, i)  # i is the number in of the item in t=
he
list
> # but alas, this is no longer {2000,03,15}
> # what is it? - I don't know, I can't seem to figure it out.
>
> How do you convert (MyList, i) back to MyDate sequence, so I can use
> subscripting to access the elements?
>
Hi Arthur,
the addItem() routine accepts a text sequence as the second parameter. Th=
is
means that every element in the sequence must be an atom, and each atom m=
ust
have a value from 0 - 255. In your example, the date's year is > 255 so i=
t
would not be stored correctly( I suspect it will be stored as character 2=
08
"=D0"). Also, the month and day values are non-printable characters so wo=
uld
also look weird when displayed.

This means that any item inserted by addItem must be a displayable string.
So in your case, you should format the date into a text string before usi=
ng
adItem().

For example...
---------------
sequence lDate

  if userDateStyle =3D "MDY"
  then
      lDate =3D sprintf("%02d%s%02s%s%04d", {theMonth, userDateSep, theDa=
y,
userDateSep, theYear})
  elsif userDateStyle =3D "DMY"
  then
      lDate =3D sprintf("%02d%s%02s%s%04d", {theDay, userDateSep, theMont=
h,
userDateSep, theYear})
  else  -- assume YMD format
      lDate =3D sprintf("%04d%s%02s%s%02d", {theYear, userDateSep, theMon=
th,
userDateSep, theDay})
  end if
  addItem(myList, lDate)

Then to get it back again, just convert the date portions (YMD) back into
numbers.

  lDate =3D getItem(myList, i)
  if userDateStyle =3D "MDY"
  then
      lDay =3D lDate[4 .. 5]
      lMonth =3D lDate[1 .. 2]
      lYear =3D lDate[7 .. 10]
  elsif userDateStyle =3D "DMY"
      lDay =3D lDate[1 .. 2]
      lMonth =3D lDate[4 .. 5]
      lYear =3D lDate[7 .. 10]
  else  -- assume YMD format
      lDay =3D lDate[9 .. 10]
      lMonth =3D lDate[6 .. 7]
      lYear =3D lDate[1 .. 4]
  end if
  lTemp    =3D value(lDay)
  theDay   =3D lTemp[2]  -- you may want to add some error checking if us=
ers
can change the list items.
  lTemp    =3D value(lMonth)
  theMonth =3D lTemp[2]
  lTemp    =3D value(lYear)
  theYear  =3D lTemp[2]


-----
cheers,
Derek.

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu