Ah... The good old days of 70 hour weeks when we were young and stupid and we just got our first IBM S360... Jim

On 10-Jun-08, at 2:49 PM, Phil Davis wrote:

Wow - another former PL/1 programmer! I thought I was the only one left, except at the Rev conference I learned that Robert Cailliau also used it in earlier days.

Phil Davis


Jim Carwardine wrote:
Thanks, guys... Shame on me for using fields instead of variables. I knew that one. That is an original 1987 HC self-learning (that reflects my PL1 days in the early 70's believe it or not) that I have fought ever since.

Now, to rewrite and relearn... Jim

On 10-Jun-08, at 12:55 PM, Jim Ault wrote:

Here are some skeleton techniques that can be applied to your set of tasks.
<full listing of original appears below my code>

Jim Ault
Las Vegas

----------------- start code -------------

on doJimsTasks
--Jim Ault    6.10.08    for    Jim Cowardine
--partial script to show techniques
--will not run, but shows example techniques
--this is not the only way to build a fast Rev routine

put fld 1 into mainList  --use variables in RAM
put 0 into i
put 1 into j
put empty into eventOutputList --final listing
put empty into currentEvent -- each line we want to fill
--this is added to eventOutputList at the end of the loop
--then eventOutputList is put into field 2 at the finish

--set up a comma listing of keywords for later
put "Dartmouth,Burnside,Bedford,Sackville,Kentville," into cityList
put "Port  Hawksbury,Truro,Bridgewater,Tantallon," after cityList
put "Glen Haven,Hubbards,Bayers Lake,Cole  Harbour" after cityList

--now create a list of only those lines that qualify
filter mainList with "*BEGIN:VEVENT*"
--now the only lines remaining are the ones we want
put mainList into keepers --this is a better name, but optional

-- I use LNN to be the unmodifiable variable to read
repeat for each line LNN in keepers
  add 1 to i
  if LNN contains "SUMMARY" then
  end if
  if LNN contains "LOCATION" then
  end if
  if LNN contains "DSTART" then
  end if
  if LNN contains "END:VEVENT" then
  end if


  if holdLine is 1 then
    put eventDate into item 2 of currentEvent
    put locationName into item 5 of currentEvent

    set the itemDel to comma
    if item 5 of currentEvent is among the items of cityList then
      put item 5 of currentEvent into item 6 of currentEvent
    end if

    put currentEvent into line j of eventOuputList

  end repeat
  put eventOuputList into field 2
  set the itemdelimiter to ","
  sort lines of field 2 by item 7 of each
  sort lines of field 2 dateTime by item 2 of each


end doJimsTasks

------------  end code  -----------------


On 6/10/08 7:53 AM, "Jim Carwardine" <[EMAIL PROTECTED]> wrote:

Hi Folks... I hope this isn't asking too much. I have found using the
docs to be less than satisfying when trying an alternative coding
technique.  I guess I fall into the old dog, actually the old
Hypercard dog, trying to learn the new Rev tricks.

I just wrote a quick and dirty script to parse out an iCal calendar
saved as a text file to feed my car expense calculator which was
published a few months ago in a Rev newsletter.  The script is very
slow and I was intrigued to know how to speed it up as I am aware that
I am using very archaic scripting techniques.

Here is my script. It's relatively short and contains almost all of my favourite coding patterns. If anyone has the inclination, perhaps
you could point out how I might make use of Revs improvements over
Hypercard...

It has to do with better ways to handle repeating actions and better
ways to handle lists... Thanks in advance... Jim

--> all handlers

on mouseUp
   put 0 into eventMark -- didn't end up using this for anything by
a switch
   put 1 into j
   put empty into eventLine
   put empty into field 2
   repeat with i = 1 to the number of lines of field 1
if line i of field 1 contains "BEGIN:VEVENT" then -- found an
event
           put 1 into eventMark
           next repeat
       end if
       if eventMark > 0 then -- we are parsing an event now
           breakpoint
           if line i of field 1 contains "SUMMARY:" then -- found
the event name
               put 2 into eventMark
               set the itemdelimiter to ":"
               put item 2 of line i of field 1 into eventName --
hold event name
               next repeat
           end if
           if line i of field 1 contains "LOCATION:" then -- found
the event location
               put 3 into eventMark
if line i of field 1 contains "\," then replace "\, "
with " " in line i of field 1
               set the itemdelimiter to ":"
               put item 2 of line i of field 1 into locationName --
hold event location
               next repeat
           end if
           if line i of field 1 contains "DTSTART;" then -- found
the event location
               put 4 into eventMark
               set the itemdelimiter to ":"
               put char 1 to 4 of item 2 of line i of field 1 into
eventYear -- hold event year - yyyymmdd
               put char 5 to 6 of item 2 of line i of field 1 into
eventMonth -- hold event month - yyyymmdd
               put char 7 to 8 of item 2 of line i of field 1 into
eventDay -- hold event day - yyyymmdd
put char 10 to 13 of item 2 of line i of field 1 into
eventTime -- hold event time
               next repeat
           end if
       end if
       if line i of field 1 contains "END:VEVENT" then -- found an
event ending
           set itemdelimiter to ","
           if eventYear = "2007" then
               -- if eventMonth ≥ "10" then
               put eventMonth & "/" & eventDay & "/" & eventYear
into eventDate
               put 1 into holdLine
               -- else put 0 into holdLine
           else put 0 into holdLine

           if holdLine is 1 then
               put eventDate into item 2 of line j of field 2
               if locationName is empty then put "Halifax" into
locationName
               put locationName into item 5 of line j of field 2
put " - " & eventName after item 5 of line j of field 2
               put empty into item 6 of line j of field 2
               if item 5 of line j of field 2 contains "Dartmouth"
then put "Dartmouth" into item 6 of line j of field 2
               if item 5 of line j of field 2 contains "Burnside"
then put "Burnside" into item 6 of line j of field 2
               if item 5 of line j of field 2 contains "Bedford"
then put "Bedford" into item 6 of line j of field 2
               if item 5 of line j of field 2 contains "Sackville"
then put "Sackville" into item 6 of line j of field 2
               if item 5 of line j of field 2 contains "Kentville"
then put "Kentville" into item 6 of line j of field 2
               if item 5 of line j of field 2 contains "Port
Hawksbury" then put "Port Hawksbury" into item 6 of line j of field 2
               if item 5 of line j of field 2 contains "Truro" then
put "Truro" into item 6 of line j of field 2
if item 5 of line j of field 2 contains "Bridgewater"
then put "Bridgewater" into item 6 of line j of field 2
               if item 5 of line j of field 2 contains "Tantallon"
then put "Tantallon" into item 6 of line j of field 2
               if item 5 of line j of field 2 contains "Glen Haven"
then put "Glen Haven" into item 6 of line j of field 2
               if item 5 of line j of field 2 contains "Hubbards"
then put "Hubbards" into item 6 of line j of field 2
if item 5 of line j of field 2 contains "Bayers Lake"
then put "Bayers Lake" into item 6 of line j of field 2
               if item 5 of line j of field 2 contains "Cole
Harbour" then put "Cole Harbour" into item 6 of line j of field 2
               if item 5 of line j of field 2 contains "airport"
then put "airport" into item 6 of line j of field 2
               put eventTime into item 7 of line j of field 2
               if line j of field 2 contains "\" then replace "\"
with empty in line j of field 2
               put return after line j of field 2
               add 1 to j
               put empty into eventDate
               put empty into locationName
               put empty into eventName
               put empty into eventYear
               put empty into eventMonth
               put empty into eventDay
               put empty into eventTime
           end if
           put 0 into eventMark
           -- end if
       end if
       if the optionkey is "down" then exit repeat
   end repeat
   set the itemdelimiter to ","
   sort lines of field 2 by item 7 of each
   sort lines of field 2 dateTime by item 2 of each
end mouseUp
Jim Carwardine,
President & CEO
OYF Consulting
Ph. 902.823.2339 / 866.601.2339
Fx. 902.823-2139
<www.StrategicDoing.com>
StrategicDoing™: Execution depends on employees.
Strategic Partner with HiringSmart Canada Ltd.


_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Jim Carwardine,
President & CEO
OYF Consulting
Ph. 902.823.2339 / 866.601.2339
Fx. 902.823-2139
<www.StrategicDoing.com>
StrategicDoing™: Execution depends on employees.
Strategic Partner with HiringSmart Canada Ltd.

--
Phil Davis

PDS Labs
Professional Software Development
http://pdslabs.net

_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


Jim Carwardine,
President & CEO
OYF Consulting
Ph. 902.823.2339 / 866.601.2339
Fx. 902.823-2139
<www.StrategicDoing.com>
StrategicDoing™: Execution depends on employees.
Strategic Partner with HiringSmart Canada Ltd.
--



_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to