Could it have to do with line endings or long lines, or character
encoding (like utf-32 instead of utf-8)? That is what "1.215-1.225" (row
1 columns 215 to 225) and
| ^~~~~~~~~~~
suggest to me.
On 1/17/25 18:31, Nanci Avitable wrote:
I'm afraid there might be something else going on which may have to do
with the fact that this is actually an intel based program and I'm
running it on a Mac silicon with Rosetta 2 installed. Rosetta is what
enables silicon Macs to run intell programs, theoretically. I've also
had the program crash several times. Thanks -- Nanci
Anyhow doing as you suggest gets the following output:
/Users/nanciavitable/Cloud-drive/Private
Practice/Scoring&Report/ABASIII/ABASmacro.sps:1.215-1.225: error:
DEFINE: Syntax error expecting macro body or !ENDDEFINE.
1 | define !subscore3 (!pos !tokens(1)/!pos !enclose('(',')')/!pos
!tokens(1))
!LET !limits = !2
!DO !ssc = 1 !TO 19
!LET !limit = !HEAD(!limits)
!LET !limits = !TAIL(!limits)
if (!1 ge !limit) !3 = !ssc.
!DOEND
!enddefine.
!subscore3 ctraw (0 10 14 18 22 26 30 34 38 42 46 49 52 55 58 62 65
100 100) ct.
LIST.
|^~~~~~~~~~~
define !subscore3 (!pos !tokens(1)/!pos !enclose('(',')')/!pos !tokens(1))
!LET !limits = !2
!DO !ssc = 1 !TO 19
!LET !limit = !HEAD(!limits)
!LET !limits = !TAIL(!limits)
if (!1 ge !limit) !3 = !ssc.
!DOEND
!enddefine.
!subscore3 ctraw (0 10 14 18 22 26 30 34 38 42 46 49 52 55 58 62 65
100 100) ct.
LIST.
On 1/16/25 3:16 PM, fhouwel...@email.it wrote:
Don't worry about the DATA LIST: just replace the define.. !enddefine
part in your syntax. The DATA LIST and what follows was just there to
show the macro works.
Il 16 gen 2025 23:05, Nanci Avitable <avitab...@aaahawk.com> ha scritto:
Frans,
Thank you. I suspected that there might be a problem with Do Repeat.
I have tried your syntax, but it is not working as expected. I
wonder if there is a difference in the PSPP programs we are
using. Mine did not like the Data List Free and when I removed
that it said there was an error with IF parsing the expression. I
will play with this some more now that I know Do Repeat could be
a problem.
On 1/16/25 1:29 PM, Frans Houweling wrote:
I'm afraid DO REPEAT does not work well inside DEFINE. Here
is a workaround:
define !subscore3 (!pos !tokens(1)/!pos
!enclose('(',')')/!pos !tokens(1))
!LET !limits = !2
!DO !ssc = 1 !TO 19
!LET !limit = !HEAD(!limits)
!LET !limits = !TAIL(!limits)
if (!1 ge !limit) !3 = !ssc.
!DOEND
!enddefine.
I put an exclamation point before subscore3 to distinguish
it from your original.
DATA LIST FREE /ctraw.
BEGIN DATA
63
END DATA.
!subscore33 ctraw (0 10 14 18 22 26 30 34 38 42 46 49 52 55
58 62 65 100 100) ct.
LIST.
Data List
+-----+-----+
|ctraw| ct |
+-----+-----+
|63.00|16.00|
+-----+-----+
HTH, frans
On 1/15/25 19:33, Nanci Avitable wrote:
I am working on a new MacBookPro, M4 chip with Sequoia. I
have downloaded and installed the PSPP version 2.0.1-2
bundle.
I have several SPSS programs that I use to score some
protocols and output information for use in WORD via mail
merge.
These programs include Define routines. Although the
information I've read indicates that they should transfer
okay, I'm running into problems. It may be that I don't
fully understand when to use periods and things like "+".
Below is a syntax portion that I've been trying to get to
run. The actual program is around 1300 lines long so I'm
just focusing on a small bit.
My interpretation from the error messages is that there
is something wrong with the "if" statement. Unless the
problem is that Do Repeat cannot be used in a macro body.
Thanks for whatever information you can give me about
using Define properly. -- Nanci
Data list / ctraw cutraw fatraw sltraw hstraw ltraw
sctraw sdtraw straw (9f3).
Begin data.
45 37 52 52 42 35 54 43 46
end data.
set Printback on.
set mprint yes.
define subscore3 (!pos !tokens(1)/!pos
!enclose('(',')')/!pos !tokens(1))
do repeat ssc = 1 to 19/limit = !2.
if (!1 ge limit) !3 = ssc.
end repeat.
!enddefine.
do repeat ssc = 1 to 19 / limit = 0 10 14 18 22 26 30 34
38 42 46 49 52 55 58 62 65 100 100.
if(ctraw ge limit)ct = ssc.
end repeat.
/Users/nanciavitable/Cloud-drive/Private
Practice/Scoring&Report/ABASIII/ABASmacro.sps:7.1-7.78:
error: DO REPEAT: In syntax expanded from `subscore3
ctraw (0 10 14 18 22 26 30 34 38 42 46 49 52 55 58...':
Syntax error expecting END REPEAT.
7 | subscore3 ctraw (0 10 14 18 22 26 30 34 38 42 46
49 52 55 58 62 65 100 100) ct.
|
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/nanciavitable/Cloud-drive/Private
Practice/Scoring&Report/ABASIII/ABASmacro.sps:7.1-7.78:
error: END REPEAT: In syntax expanded from `subscore3
ctraw (0 10 14 18 22 26 30 34 38 42 46 49 52 55 58...':
No matching DO REPEAT.
7 | subscore3 ctraw (0 10 14 18 22 26 30 34 38 42 46
49 52 55 58 62 65 100 100) ct.
|
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
subscore3 ctraw (0 10 14 18 22 26 30 34 38 42 46 49 52 55
58 62 65 100 100) ct.