Data editing in SAS

My data looks like this:

VAR1
TITLE A
APPLICATION #1
APPLICATION #2
APPLICATION #3
TITLE B
APPLICATION #4
APPLICATION #5
APPLICATION #6
TITLE C
APPLICATION #4
APPLICATION #5
APPLICATION #6

I’d like the result to look like VAR2 below

VAR1 VAR2
TITLE A TITLE A
APPLICATION #1 TITLE A
APPLICATION #2 TITLE A
APPLICATION #3 TITLE A
TITLE B TITLE B
APPLICATION #4 TITLE B
APPLICATION #5 TITLE B
APPLICATION #6 TITLE B
TITLE C TITLE C
APPLICATION #4 TITLE C
APPLICATION #5 TITLE C
APPLICATION #6 TITLE C

To be more exact, I’d like it to be like this, but if I get above, I can get this myself:

VAR1 VAR2
APPLICATION #1 TITLE A
APPLICATION #2 TITLE A
APPLICATION #3 TITLE A
APPLICATION #4 TITLE B
APPLICATION #5 TITLE B
APPLICATION #6 TITLE B
APPLICATION #4 TITLE C
APPLICATION #5 TITLE C
APPLICATION #6 TITLE C

Thanks Charly:

*****;
data a;
input VAR1 &$30.;
cards;
TITLE A
APPLICATION #1
APPLICATION #2
APPLICATION #3
TITLE B
APPLICATION #4
APPLICATION #5
APPLICATION #6
TITLE C
APPLICATION #4
APPLICATION #5
APPLICATION #6
;

data b;
set a;
if var1 =: 'TITLE' then var2=var1;
else output;
retain var2;
run;

proc print ; run;

Creating a series of dummy variables

Thanks Russ:

Based on the lowest and highest grade, the following creates a series of dummy variables indicating which grade level is served --- by schools.

data one;
input ID LOWEST_GRADE HIGHEST_GRADE;
cards;
1 4 9
2 9 12
;

data new;
array grades(*) grade1-grade12;
set one;
do i =1 to dim(grades);
if i ge lowest_grade and i le highest_grade then grades(i)=1;
else grades(i)=0;
end;
run;

proc print;
run;

SAS Drop variables when all values are missing

/*http://ftp.sas.com/techsup/download/sample/datastep/dropvar.html*/
%let abc=&syslast;
data _null_;
set &abc end=end;
array test (*) _numeric_;
* array allmiss (8) $ (8*'true');
array allmiss (3000) $ (3000*'true');

length list $ 5000;

do i=1 to dim(test);
if test(i) ne . then allmiss(i)='false';
end;
if end=1 then
do i= 1 to dim(test);
if allmiss(i) ='true' then list=trim(list)||' '||trim(vname(test(i)));
end;
call symput('mlist',list);
run;

data &abc ;
set &abc ;
drop &mlist;
run;

SAS Converting string values into numeric values

proc contents data=xxx1 position;
ods output position=kuekawa1;
run;

data kuekawa2;
set kuekawa1;
if type="Char" then do;
x1=compress(variable||"_n=input(");
x2=x1||variable||",7.);";
syntax=compress(x2);
*&var1._n=input(&var1,7.);
end;
if syntax ne "";
keep syntax;
run;

data _null_;set kuekawa2;
blank=' ';
file "C:\temp\proc_contents1.txt";
put
(syntax) (100.0);
run;

data xxx2;
set xxx1;
%include "C:\temp\proc_contents1.txt";
run;

Using PROC LOGISTIC to Estimate the Rasch Model by Pan and Chen

http://support.sas.com/resources/papers/proceedings11/342-2011.pdf

Can this be right?  If right, it helps reduce the computational demand off the procedure.   Page 4:

"When thousands of persons take a test, the procedure takes a long time to estimate the parameters. It is well known that the Rasch model gives the same parameter estimates for each person who receives the same total score. So, variable ‘person’ is able to be replaced with variable ‘total’ when all examinees answer all items as shown by Nord (2008). After the model is fit, the estimate of the parameter for each person is equal to the estimate of the parameter of the total score corresponding to the person’s total score. The third code example and its output are shown as follows:"

SAS Read from the Web

filename foo url "http://www.cnn.com";
data jaz;
infile foo length=len /*lrecl=32767*/;
input record $varying1000. len ;
put record $varying1000. len ;
if _n_=10 then stop;
run;

MySQL Basic codes

DROP TABLE data._01_abc;

CREATE TABLE data._01_abc (

var1(22) NULL,

var2 int NULL,
var3 char(2) NULL);

LOAD DATA INFILE "sql.csv"
INTO TABLE data._01_abc
COLUMNS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;