[Date Prev][Date Next][Subject Prev][Subject Next][
Date Index][
Subject Index]
Re: Programming Ques - Passing arguments with RUN
- Subject: Re: Programming Ques - Passing arguments with RUN
- From: cld@xxxxxxxx (Carl Distefano)
- Date: Thu, 8 Jan 2004 01:37:39 -0500
Reply to note from marc@xxxxxxxx Thu, 08 Jan 2004 17:55:15 +1300
(NZDT)
Marc:
> If you wanted to pass a third arg, you would need to use
> another different seperator and a different set of S/Gs
Not necessarily a different separator! You can use the same
separator (e.g., a space) between each argument: arg1 arg2 arg3 etc.
Just keep on parsing with XS.
In fact (thanks to discoveries made by Robert Holmgren 10+ years
ago), you can take an *indefinite* number of arguments and parse
each arg into its own Save/Get -- by "manufacturing" a new Save/Get
for each argument on the fly! Here's a demo; see if you can puzzle
out the code.
RUN MULTIARG.PM against itself. If, for example, you command
RUN MULTIARG.PM red green blue yellow, it parses "red" into
S/G 21, "green" into S/G 22, "blue" into S/G 23, and so forth. Add
another argument and it "manufactures" the next Save/Get in the
series. The listing created at the bottom of the file is for
confirmation only; these Save/Get values are _actually present in
memory and available for further use_, something you can verify by
taking an "exit poll" of Save/Gets with content:
XPOLL RUN MULTIARG.PM red green blue yellow.
Fascinating stuff (for programmers, anyway).
XPLeNCODE v2.0
b-gin [UNTITLED]
;*; MULTIARG.PM -- CLD 1/8/04[cr|lf];*; Parse arg1 arg2 arg3{032}
{046}.. into Save/Gets 21, 22, 23, etc.[cr|lf];*; (S/Gs 21 etc.{032}
manufactured by concantenation)[cr|lf];*; Demo for Xy4+[cr|lf
];*;[cr|lf];*; Usage:[cr|lf];*; With MULTIARG.PM in current w
indow:[cr|lf];*; RUN MULTIARG.PM arg1 arg2 arg3 arg4 ... [cr|lf];*;[cr|lf];*; Saves "arg1" to S/G 21, "arg2" to S/G
22, etc.[cr|lf];*;[cr|lf]{<}SX01,{<}IS00{>}{>}{<}SV02, {>}{<
}SX03,20{>};*;[cr|lf]{<}SU04,{<}SX05,"{<}XS01,02,"+{<}IS03{>}
+",06,07{>}{<}SX01,{<}IS07{>}{>}{<}GT03{>}={<}GT"+{<}IS03{>}+
"{>}[255+048+068]"{>}{<}PV05{>}{>};*;[cr|lf][BF_][255+048+068
];*;[cr|lf]{<}LBa{>}{<}SX03,{<}PV03{>}+1{>}{<}SX03,{<}IS03{>}
{>}{<}IF{<}IS01{>}{240}" "{>}{<}GT04{>}{<}GLa{>}{<}EI{>};*;[c
r|lf]{<}SX05,"{<}SX"+{<}IS03{>}+",{<}IS01{>}{>}{<}GT03{>}={<}
GT"+{<}IS03{>}+"{>}[255+048+068]"{>}{<}PV05{>}{<}PRDone!{>}{<
}EX{>}[cr|lf][cr|lf]
-nd
XPLeNCODE
--
Carl Distefano
cld@xxxxxxxx