AT_BANNER([DO REPEAT]) AT_SETUP([DO REPEAT -- simple]) AT_DATA([do-repeat.sps], [dnl INPUT PROGRAM. STRING y(A1). DO REPEAT xval = 1 2 3 / yval = 'a' 'b' 'c' / var = a b c. COMPUTE x=xval. COMPUTE y=yval. COMPUTE var=xval. END CASE. END REPEAT. END FILE. END INPUT PROGRAM. LIST. ]) AT_CHECK([pspp -o pspp.csv do-repeat.sps]) AT_CHECK([cat pspp.csv], [0], [dnl Table: Data List y,x,a,b,c a,1.00,1.00,. ,. @&t@ b,2.00,. ,2.00,. @&t@ c,3.00,. ,. ,3.00 ]) AT_CLEANUP AT_SETUP([DO REPEAT -- containing BEGIN DATA]) AT_DATA([do-repeat.sps], [dnl DO REPEAT offset = 1 2 3. DATA LIST NOTABLE /x 1-2. BEGIN DATA. 10 20 30 END DATA. COMPUTE x = x + offset. LIST. END REPEAT. ]) AT_CHECK([pspp -o pspp.csv do-repeat.sps]) AT_CHECK([cat pspp.csv], [0], [dnl Table: Data List x 11 21 31 Table: Data List x 12 22 32 Table: Data List x 13 23 33 ]) AT_CLEANUP AT_SETUP([DO REPEAT -- dummy vars not expanded in include files]) AT_DATA([include.sps], [dnl COMPUTE y = y + x + 10. ]) AT_DATA([do-repeat.sps], [dnl INPUT PROGRAM. COMPUTE x = 0. COMPUTE y = 0. END CASE. END FILE. END INPUT PROGRAM. DO REPEAT x = 1 2 3. INCLUDE 'include.sps'. END REPEAT. LIST. ]) AT_CHECK([pspp -o pspp.csv do-repeat.sps], [0], [dnl do-repeat.sps:8: warning: DO REPEAT: Dummy variable name `x' hides dictionary variable `x'. ]) AT_CHECK([cat pspp.csv], [0], [dnl do-repeat.sps:8: warning: DO REPEAT: Dummy variable name `x' hides dictionary variable `x'. Table: Data List x,y .00,30.00 ]) AT_CLEANUP AT_SETUP([DO REPEAT -- nested]) AT_DATA([do-repeat.sps], [dnl DATA LIST NOTABLE /a 1. BEGIN DATA. 0 END DATA. DO REPEAT h = h0 TO h3 / x = 0 TO 3 / y = 8, 7.5, 6, 5. COMPUTE h = x + y. END REPEAT. VECTOR v(6). COMPUTE #idx = 0. DO REPEAT i = 1 TO 2. DO REPEAT j = 3 TO 5. COMPUTE #x = i + j. COMPUTE #idx = #idx + 1. COMPUTE v(#idx) = #x. END REPEAT. END REPEAT. LIST. ]) AT_CHECK([pspp -o pspp.csv do-repeat.sps]) AT_CHECK([cat pspp.csv], [0], [dnl Table: Data List a,h0,h1,h2,h3,v1,v2,v3,v4,v5,v6 0,8.00,8.50,8.00,8.00,4.00,5.00,6.00,5.00,6.00,7.00 ]) AT_CLEANUP dnl This program tests for a bug that crashed PSPP given an empty DO dnl REPEAT...END REPEAT block. See bug #18407. AT_SETUP([DO REPEAT -- empty]) AT_DATA([do-repeat.sps], [dnl DATA LIST NOTABLE /a 1. BEGIN DATA. 0 END DATA. DO REPEAT h = a. END REPEAT. ]) AT_CHECK([pspp -o pspp.csv do-repeat.sps]) AT_CHECK([cat pspp.csv], [0], [dnl ]) AT_CLEANUP dnl This program tests for a bug that crashed PSPP when END REPEAT dnl was missing. See bug #31016. AT_SETUP([DO REPEAT -- missing END REPEAT]) AT_DATA([do-repeat.sps], [dnl DATA LIST NOTABLE /x 1. DO REPEAT y = 1 TO 10. ]) AT_CHECK([pspp -O format=csv do-repeat.sps], [1], [dnl error: DO REPEAT: Syntax error at end of input: expecting `END'. ]) AT_CLEANUP