I carefully read and executed the steps outlined in uploading and accessing local data. My problem now is how to get previously written code to work. I'm enclosing a file which includes server files and folders, source code, and log of my attempt. Can you help? Thank you.
Sincerely,
Mary A. Marion
On SAS on Demand for Academics, all files accessible to you reside in your home directory, so the %LET needs to be this:
%let dirdata=/home/u50158717/sasmacs2;and the data step code would be
data sasmacs2.id;
infile "&dirdata./id.txt";
input id $;
run;Note that I added a period in the DATA statement, and changed the place where the slash is used, for better readability.
Please post logs by copy/pasting into a window opened with the </> button, and code by using the "little running man" button right next to it.
Your pdf won't even open with the website's previewer, so I will not download it.
These buttons are right above the main posting window:

The 7th is for logs, the 8th for code.
I carefully read and executed the steps outlined in uploading and accessing local data. My problem now is how to get previously written code to work. I'm enclosing a file which includes server files and folders, source code, and log of my attempt.
My data is under directory sasmacs2 and is called id.txt. SAS Code is given below:
%let dirdata=/folders/myshortcuts/sasmacs2/; libname sasmacs2 "/home/u50158717/sasmacs2"; data sasmacs2 id; infile "&dirdata.id.txt"; input id $; run; %include "sasmacs2.id.txt"; proc print; run;
Log file is below:
 %let dirdata=/folders/myshortcuts/sasmacs2/;
libname sasmacs2 "/home/u50158717/sasmacs2";
data sasmacs2.id;
infile "&dirdata.id.txt";
input id $; 
run;
%include 'sasmacs2.id.txt';
proc print;
run;
========================================================================================
 1          OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 SYMBOLGEN:  Macro variable _SASWSTEMP_ resolves to 
             /home/u50158717/.sasstudio/.images/aff1c02d-214e-40da-8cf6-07ec51ea
             4f19
 SYMBOLGEN:  Some characters in the above value which were subject to macro 
             quoting have been unquoted for printing.
 SYMBOLGEN:  Macro variable GRAPHINIT resolves to GOPTIONS RESET=ALL 
             GSFNAME=_GSFNAME;
 72         
 73         %let dirdata=/folders/myshortcuts/sasmacs2/;
 74         libname sasmacs2 "/home/u50158717/sasmacs2";
 NOTE: Libref SASMACS2 was successfully assigned as follows: 
       Engine:        V9 
       Physical Name: /home/u50158717/sasmacs2
 75         data sasmacs2.id;
 SYMBOLGEN:  Macro variable DIRDATA resolves to /folders/myshortcuts/sasmacs2/
 76         infile "&dirdata.id.txt";
 77         input id $;
 78         run;
 
 ERROR: Physical file does not exist, /folders/myshortcuts/sasmacs2/id.txt.
 NOTE: The SAS System stopped processing this step because of errors.
 WARNING: The data set SASMACS2.ID may be incomplete.  When this step was 
          stopped there were 0 observations and 1 variables.
 ========================================================================================
 79         
 80         %include 'sasmacs2.id.txt';
 WARNING: Physical file does not exist, 
          /pbr/biconfig/940/Lev1/SASApp/sasmacs2.id.txt.
 ERROR: Cannot open %INCLUDE file sasmacs2.id.txt.
 81         proc print;
 82         run;
 
 NOTE: No observations in data set SASMACS2.ID.
  
Can you help? I want to do two ways ( also using the include statement ).
Sincerely,
Mary A. Marion
Note:
id file is a list of id's beginning with a
a
b
c
d
e
f
On SAS on Demand for Academics, all files accessible to you reside in your home directory, so the %LET needs to be this:
%let dirdata=/home/u50158717/sasmacs2;and the data step code would be
data sasmacs2.id;
infile "&dirdata./id.txt";
input id $;
run;Note that I added a period in the DATA statement, and changed the place where the slash is used, for better readability.
Please post logs as requested. The main posting window destroys the horizontal positioning of the ERROR markers (among other things).
Since your code as posted:
filename id "&dirdata./id.txt";
%inc id;is correct, the code you have before that is also important, as it might be the reason for the problem. So please post the whole code and log of that, so we can see the context.
OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 72         
 73         options mrecall;
 74         %macro CreateIdVariables(data,obs,cancel,noobs);
 75         *Creates id variables, obs=# of observations to be read in,
 76                  noobs=indicator as to whether obs # will be included in
 76       ! output;
 77         
 78         %let dirdata=/home/u50158717/sasmacs2;
 79         data sasmacs2.id;
 80         infile "&dirdata./id.txt";
 81         input id $; run;
 82         
 83         data id; set sasmacs2.id (firstobs=1 obs=&obs); run;
 84         options varlenchk=nowarn;
 85         data &data; merge id &data; run;
 86         options nocenter;
 87         proc print data=&data &noobs;
 88         title "Datafile &data with ID added";
 89         run &cancel; title;
 90         data _null_;
 91         call symput('NoObs',trim(left(put(&obs,3.0))));
 92         run; quit;
 93         data idtemp; set &data; keep id; run;
 94         %mend CreateIdVariables;
 95         
 96         %CreateIdVariables(new,4, ,noobs)
 
 NOTE: The infile "/home/u50158717/sasmacs2/id.txt" is:
       Filename=/home/u50158717/sasmacs2/id.txt,
       Owner Name=u50158717,Group Name=oda,
       Access Permission=-rw-r--r--,
       Last Modified=10Jan2021:05:00:22,
       File Size (bytes)=10726
 
 NOTE: 3576 records were read from the infile "/home/u50158717/sasmacs2/id.txt".
       The minimum record length was 1.
       The maximum record length was 1.
 NOTE: The data set SASMACS2.ID has 3576 observations and 1 variables.
 NOTE: DATA statement used (Total process time):
       real time           0.02 seconds
       user cpu time       0.00 seconds
       system cpu time     0.00 seconds
       memory              809.37k
       OS Memory           33704.00k
       Timestamp           01/10/2021 04:55:37 PM
       Step Count                        276  Switch Count  2
       Page Faults                       0
       Page Reclaims                     131
       Page Swaps                        0
       Voluntary Context Switches        49
       Involuntary Context Switches      0
       Block Input Operations            0
       Block Output Operations           264
       
 
 
 NOTE: There were 4 observations read from the data set SASMACS2.ID.
 NOTE: The data set WORK.ID has 4 observations and 1 variables.
 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       user cpu time       0.00 seconds
       system cpu time     0.00 seconds
       memory              941.56k
       OS Memory           33964.00k
       Timestamp           01/10/2021 04:55:37 PM
       Step Count                        277  Switch Count  2
       Page Faults                       0
       Page Reclaims                     151
       Page Swaps                        0
       Voluntary Context Switches        21
       Involuntary Context Switches      0
       Block Input Operations            288
       Block Output Operations           264
       
 
 
 NOTE: There were 4 observations read from the data set WORK.ID.
 NOTE: There were 4 observations read from the data set WORK.NEW.
 NOTE: The data set WORK.NEW has 4 observations and 3 variables.
 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       user cpu time       0.00 seconds
       system cpu time     0.01 seconds
       memory              1287.15k
       OS Memory           34224.00k
       Timestamp           01/10/2021 04:55:37 PM
       Step Count                        278  Switch Count  2
       Page Faults                       0
       Page Reclaims                     166
       Page Swaps                        0
       Voluntary Context Switches        9
       Involuntary Context Switches      0
       Block Input Operations            0
       Block Output Operations           264
       
 
 
 NOTE: There were 4 observations read from the data set WORK.NEW.
 NOTE: PROCEDURE PRINT used (Total process time):
       real time           0.02 seconds
       user cpu time       0.03 seconds
       system cpu time     0.00 seconds
       memory              2375.68k
       OS Memory           34216.00k
       Timestamp           01/10/2021 04:55:37 PM
       Step Count                        279  Switch Count  1
       Page Faults                       0
       Page Reclaims                     140
       Page Swaps                        0
       Voluntary Context Switches        5
       Involuntary Context Switches      0
       Block Input Operations            0
       Block Output Operations           8
       
 
 
 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       user cpu time       0.00 seconds
       system cpu time     0.00 seconds
       memory              463.59k
       OS Memory           34212.00k
       Timestamp           01/10/2021 04:55:37 PM
       Step Count                        280  Switch Count  0
       Page Faults                       0
       Page Reclaims                     72
       Page Swaps                        0
       Voluntary Context Switches        0
       Involuntary Context Switches      0
       Block Input Operations            0
       Block Output Operations           0
       
 
 
 NOTE: There were 4 observations read from the data set WORK.NEW.
 NOTE: The data set WORK.IDTEMP has 4 observations and 1 variables.
 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       user cpu time       0.00 seconds
       system cpu time     0.00 seconds
       memory              938.25k
       OS Memory           34732.00k
       Timestamp           01/10/2021 04:55:37 PM
       Step Count                        281  Switch Count  2
       Page Faults                       0
       Page Reclaims                     125
       Page Swaps                        0
       Voluntary Context Switches        9
       Involuntary Context Switches      0
       Block Input Operations            0
       Block Output Operations           264
       
 
 97         
 98         * Alternate Approach using include statement
 99         *1] working code
 100        %include("&dirdata./id.txt");
 101        data new2; merge id new; run;
 
 NOTE: There were 4 observations read from the data set WORK.ID.
 NOTE: There were 4 observations read from the data set WORK.NEW.
 NOTE: The data set WORK.NEW2 has 4 observations and 3 variables.
 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       user cpu time       0.00 seconds
       system cpu time     0.00 seconds
       memory              1396.18k
       OS Memory           34992.00k
       Timestamp           01/10/2021 04:55:37 PM
       Step Count                        282  Switch Count  2
       Page Faults                       0
       Page Reclaims                     163
       Page Swaps                        0
       Voluntary Context Switches        11
       Involuntary Context Switches      0
       Block Input Operations            0
       Block Output Operations           264
       
 
 102        proc print;
 103        run;
 
 NOTE: There were 4 observations read from the data set WORK.NEW2.
 NOTE: PROCEDURE PRINT used (Total process time):
       real time           0.01 seconds
       user cpu time       0.02 seconds
       system cpu time     0.00 seconds
       memory              859.75k
       OS Memory           34472.00k
       Timestamp           01/10/2021 04:55:37 PM
       Step Count                        283  Switch Count  0
       Page Faults                       0
       Page Reclaims                     70
       Page Swaps                        0
       Voluntary Context Switches        0
       Involuntary Context Switches      0
       Block Input Operations            0
       Block Output Operations           0
       
 
 104        
 105        *2] non working
 106        %let dirdata=/home/u50158717/sasmacs2;
 107        %include "&dirdata./id.txt";
 108       +a
            _
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 3684       %myprn(sasmacs2.id,id,1,4);
 
 
 NOTE: There were 4 observations read from the data set SASMACS2.ID.
 NOTE: PROCEDURE PRINT used (Total process time):
       real time           0.00 seconds
       user cpu time       0.01 seconds
       system cpu time     0.01 seconds
       memory              498.78k
       OS Memory           34728.00k
       Timestamp           01/10/2021 04:55:37 PM
       Step Count                        284  Switch Count  0
       Page Faults                       0
       Page Reclaims                     63
       Page Swaps                        0
       Voluntary Context Switches        2
       Involuntary Context Switches      0
       Block Input Operations            0
       Block Output Operations           0
       
 
 3685       
 3686       *3] non working
 3687       filename id "&dirdata./id.txt";
 3688       %inc id;
 3689      +a
            _
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 7265       data new2;
 
 7265     !            merge id new;
                       _____
                       180
 
 ERROR 180-322: Statement is not valid or it is used out of proper order.
 
 7266       proc print;
 7267       run;
 
 NOTE: There were 4 observations read from the data set WORK.NEW2.
 NOTE: PROCEDURE PRINT used (Total process time):
       real time           0.01 seconds
       user cpu time       0.01 seconds
       system cpu time     0.00 seconds
       memory              527.25k
       OS Memory           34728.00k
       Timestamp           01/10/2021 04:55:37 PM
       Step Count                        285  Switch Count  0
       Page Faults                       0
       Page Reclaims                     67
       Page Swaps                        0
       Voluntary Context Switches        0
       Involuntary Context Switches      1
       Block Input Operations            0
       Block Output Operations           0
       
 
 7268       
 7269       *error 180-322 statement is not valid
 7270       
 7271       
 7272       
 7273       OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 7274       ODS HTML CLOSE;
 7275       &GRAPHTERM; ;*';*";*/;RUN;QUIT;
 7276       QUIT;RUN;
 7277       ODS HTML5 (ID=WEB) CLOSE;
 7278       
 7279       ODS RTF (ID=WEB) CLOSE;
 7280       ODS PDF (ID=WEB) CLOSE;
 NOTE: ODS PDF(WEB) printed 4 pages to 
       /saswork/SAS_work539D0001D89E_odaws04-usw2.oda.sas.com/#LN00805.
 7281       FILENAME _GSFNAME;
 NOTE: Fileref _GSFNAME has been deassigned.
 7282       DATA _NULL_;
 7283       RUN;
 
 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       user cpu time       0.01 seconds
       system cpu time     0.00 seconds
       memory              467.25k
       OS Memory           31144.00k
       Timestamp           01/10/2021 04:55:37 PM
       Step Count                        286  Switch Count  0
       Page Faults                       0
       Page Reclaims                     24
       Page Swaps                        0
       Voluntary Context Switches        0
       Involuntary Context Switches      0
       Block Input Operations            0
       Block Output Operations           0
       
 
 7284       OPTIONS NOTES STIMER SOURCE SYNTAXCHECK;
 7285       
DATA NEW;
INPUT X Y;
CARDS;
1 2
3 4
5 6
7 8
;
%include '/home/rrstartbuck49/macros/*.sas' ;
%MYPRINT(NEW);options mrecall;
%macro CreateIdVariables(data,obs,cancel,noobs);
*Creates id variables, obs=# of observations to be read in, 
         noobs=indicator as to whether obs # will be included in output;
%let dirdata=/home/u50158717/sasmacs2;
data sasmacs2.id;
infile "&dirdata./id.txt";
input id $; run;
data id; set sasmacs2.id (firstobs=1 obs=&obs); run;
options varlenchk=nowarn;
data &data; merge id &data; run;
options nocenter;
proc print data=&data &noobs; 
title "Datafile &data with ID added"; 
run &cancel; title;
data _null_;
call symput('NoObs',trim(left(put(&obs,3.0))));
run; quit;
data idtemp; set &data; keep id; run;
%mend CreateIdVariables;
%CreateIdVariables(new,4, ,noobs)
* Alternate Approach using include statement
*1] working code
%include("&dirdata./id.txt");
data new2; merge id new; run;
proc print;
run;
*2] non working
%let dirdata=/home/u50158717/sasmacs2;
%include "&dirdata./id.txt";
%myprn(sasmacs2.id,id,1,4);
*3] non working
filename id "&dirdata./id.txt";
%inc id;
data new2; merge id new; run;
proc print;
run;
*error 180-322 statement is not valid
RESULTS:
Datafile new with ID added id X Y a 1 2 b 3 4 c 5 6 d 7 8 Obs id X Y 1 a 1 2 2 b 3 4 3 c 5 6 4 d 7 8 Obs id 1 a 2 b 3 c 4 d Obs id X Y 1 a 1 2 2 b 3 4 3 c 5 6 4 d 7 8
You CANNOT use a data file as program code.
Here:
 105        *2] non working
 106        %let dirdata=/home/u50158717/sasmacs2;
 107        %include "&dirdata./id.txt";
 108       +a
            _
            180
 ERROR 180-322: Statement is not valid or it is used out of proper order.the text from the file is included into the running program, but there is no statement "A" in SAS, so you rightfully get a syntax error. This ERROR encompasses everything up to the next semicolon (and that means the whole text file and the next statement in your code), from where SAS tries to make sense of the following code, but that fails because a correct statement was "out-errored" by this. E.g. a DATA statement is not recognized, and the whole data step code following it becomes syntactically invalid.
Why do you start comments and not end them?
 * Alternate Approach using include statementThe comment statement that starts with * has to end with a semi-colon.
Also if you want to comment out macro code it is better to use either macro comments that start with %* and end with semi-colon.
Or use block comments that start with /* and end with */ .
I also strongly (and I mean STRONGLY) recommend that you stop meddling with macro code for the time being, and get your code to run with simple Base SAS language for a single instance. Only when this is successful (no ERRORs, no WARNINGs and resulting in the expected datasets/output) can you start to make the code dynamic.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.
