Passing multiple lists of unspecified length to a program
up vote
0
down vote
favorite
I would like to create a Stata program that takes multiple lists of unspecified length as arguments. However, I don't know how the program can distinguish between the lists once they're passed in.
For example, I'd like to be able to do something like:
prog myprog
args list1 list2
{something with list1}
{something with list2}
end
loc list1 a b c
loc list2 x y z
myprog `list1' `list2'
loc list1 a b c d
myprog `list1' `list2'
The two solutions I've been thinking about are:
- Creating additional macros specifying the length of each list and passing those in as well
- using a delimiter between lists
Neither is very difficult, but I would think there's a simpler way to do this.
I'm using Stata 13 for Windows.
list arguments stata stata-macros
add a comment |
up vote
0
down vote
favorite
I would like to create a Stata program that takes multiple lists of unspecified length as arguments. However, I don't know how the program can distinguish between the lists once they're passed in.
For example, I'd like to be able to do something like:
prog myprog
args list1 list2
{something with list1}
{something with list2}
end
loc list1 a b c
loc list2 x y z
myprog `list1' `list2'
loc list1 a b c d
myprog `list1' `list2'
The two solutions I've been thinking about are:
- Creating additional macros specifying the length of each list and passing those in as well
- using a delimiter between lists
Neither is very difficult, but I would think there's a simpler way to do this.
I'm using Stata 13 for Windows.
list arguments stata stata-macros
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I would like to create a Stata program that takes multiple lists of unspecified length as arguments. However, I don't know how the program can distinguish between the lists once they're passed in.
For example, I'd like to be able to do something like:
prog myprog
args list1 list2
{something with list1}
{something with list2}
end
loc list1 a b c
loc list2 x y z
myprog `list1' `list2'
loc list1 a b c d
myprog `list1' `list2'
The two solutions I've been thinking about are:
- Creating additional macros specifying the length of each list and passing those in as well
- using a delimiter between lists
Neither is very difficult, but I would think there's a simpler way to do this.
I'm using Stata 13 for Windows.
list arguments stata stata-macros
I would like to create a Stata program that takes multiple lists of unspecified length as arguments. However, I don't know how the program can distinguish between the lists once they're passed in.
For example, I'd like to be able to do something like:
prog myprog
args list1 list2
{something with list1}
{something with list2}
end
loc list1 a b c
loc list2 x y z
myprog `list1' `list2'
loc list1 a b c d
myprog `list1' `list2'
The two solutions I've been thinking about are:
- Creating additional macros specifying the length of each list and passing those in as well
- using a delimiter between lists
Neither is very difficult, but I would think there's a simpler way to do this.
I'm using Stata 13 for Windows.
list arguments stata stata-macros
list arguments stata stata-macros
edited Nov 19 at 18:40
Pearly Spencer
9,723173356
9,723173356
asked Nov 19 at 18:22
Dillon Bowen
31
31
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
The following works for me:
program define myprog
syntax, list1(string) list2(string)
display "`list1'"
display "`list2'"
end
local lista "a b c d"
local listb "e f g h"
myprog, list1(`lista') list2(`listb')
or:
capture program drop myprog
program define myprog
tokenize `0', parse(";")
local list1 `1' // optional
local list2 `3' // optional
display "`list1'" // or "`1'"
display "`list2'" // or "`3'"
end
local lista a b c d
local listb e f g h
myprog `lista';`listb'
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53380554%2fpassing-multiple-lists-of-unspecified-length-to-a-program%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
The following works for me:
program define myprog
syntax, list1(string) list2(string)
display "`list1'"
display "`list2'"
end
local lista "a b c d"
local listb "e f g h"
myprog, list1(`lista') list2(`listb')
or:
capture program drop myprog
program define myprog
tokenize `0', parse(";")
local list1 `1' // optional
local list2 `3' // optional
display "`list1'" // or "`1'"
display "`list2'" // or "`3'"
end
local lista a b c d
local listb e f g h
myprog `lista';`listb'
add a comment |
up vote
1
down vote
accepted
The following works for me:
program define myprog
syntax, list1(string) list2(string)
display "`list1'"
display "`list2'"
end
local lista "a b c d"
local listb "e f g h"
myprog, list1(`lista') list2(`listb')
or:
capture program drop myprog
program define myprog
tokenize `0', parse(";")
local list1 `1' // optional
local list2 `3' // optional
display "`list1'" // or "`1'"
display "`list2'" // or "`3'"
end
local lista a b c d
local listb e f g h
myprog `lista';`listb'
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
The following works for me:
program define myprog
syntax, list1(string) list2(string)
display "`list1'"
display "`list2'"
end
local lista "a b c d"
local listb "e f g h"
myprog, list1(`lista') list2(`listb')
or:
capture program drop myprog
program define myprog
tokenize `0', parse(";")
local list1 `1' // optional
local list2 `3' // optional
display "`list1'" // or "`1'"
display "`list2'" // or "`3'"
end
local lista a b c d
local listb e f g h
myprog `lista';`listb'
The following works for me:
program define myprog
syntax, list1(string) list2(string)
display "`list1'"
display "`list2'"
end
local lista "a b c d"
local listb "e f g h"
myprog, list1(`lista') list2(`listb')
or:
capture program drop myprog
program define myprog
tokenize `0', parse(";")
local list1 `1' // optional
local list2 `3' // optional
display "`list1'" // or "`1'"
display "`list2'" // or "`3'"
end
local lista a b c d
local listb e f g h
myprog `lista';`listb'
edited Nov 19 at 18:50
answered Nov 19 at 18:33
Pearly Spencer
9,723173356
9,723173356
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53380554%2fpassing-multiple-lists-of-unspecified-length-to-a-program%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown