BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
DrAbhijeetSafai
Lapis Lazuli | Level 10

I am able to create format from dataset with following simple step.

 

data fmt_cntlin;
     set codelist4 (keep= order term rename=(order=start term=label));
     fmtname = "myfmt";
run;

proc format cntlin = fmt_cntlin;
run;

 

Now, I am trying to create informat with similar method. Is it possible to do so with some minor modifications? Maybe some changes in cntlin option or addition of type = 'i' statement after fmtname statement etc.? 

 

Thanks in advance! 

 

- Dr. Abhijeet Safai

Dr. Abhijeet Safai
Certified Base and Clinical SAS Programmer
Associate Data Analyst
Actu-Real
1 ACCEPTED SOLUTION

Accepted Solutions
Ksharp
Super User

Yes. If you want make a NUMERIC type informat, you need add "type='I'" .

data fmt_cntlin;
     set sashelp.class( keep= name age rename=(name=start age=label));
     fmtname = "myfmt"; type='I';
run;

proc format cntlin = fmt_cntlin;
run;

data _null_;
 set sashelp.class;
 fmt=input(name,myfmt.);
 put name= age= fmt=;
run;

Ksharp_0-1709802901922.png

 

View solution in original post

5 REPLIES 5
DrAbhijeetSafai
Lapis Lazuli | Level 10

At the moment, it seems that I was able to solve this by using type = 'j' statement after fmtname statement. I will confirm it soon and will post a confirmed response here. 

 

Thank you.

 

- Dr. Abhijeet Safai

Dr. Abhijeet Safai
Certified Base and Clinical SAS Programmer
Associate Data Analyst
Actu-Real
Tom
Super User Tom
Super User

@DrAbhijeetSafai wrote:

At the moment, it seems that I was able to solve this by using type = 'j' statement after fmtname statement. I will confirm it soon and will post a confirmed response here. 

 

Thank you.

 

- Dr. Abhijeet Safai


When in doubt do a test.

Make a format (or informat) of the type you want using normal VALUE or INVALUE statement. Then use CNTLOUT= option to make a dataset of the format.  Then examine the dataset and see what variables are used and what values they have.

DrAbhijeetSafai
Lapis Lazuli | Level 10

Not "j" but "I" works for informat. Many thanks @Ksharp !

 

I am replying to my own post for the purpose of documentation.  What a wonderful feeling it is to find out your own post some months back and finding answer in it next time when you search about it on the google! 🙂

Dr. Abhijeet Safai
Certified Base and Clinical SAS Programmer
Associate Data Analyst
Actu-Real
Ksharp
Super User

Yes. If you want make a NUMERIC type informat, you need add "type='I'" .

data fmt_cntlin;
     set sashelp.class( keep= name age rename=(name=start age=label));
     fmtname = "myfmt"; type='I';
run;

proc format cntlin = fmt_cntlin;
run;

data _null_;
 set sashelp.class;
 fmt=input(name,myfmt.);
 put name= age= fmt=;
run;

Ksharp_0-1709802901922.png

 

DrAbhijeetSafai
Lapis Lazuli | Level 10

@Ksharp , many thanks! 🙂

 

- Dr. Abhijeet Safai

Dr. Abhijeet Safai
Certified Base and Clinical SAS Programmer
Associate Data Analyst
Actu-Real

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 5 replies
  • 1818 views
  • 2 likes
  • 3 in conversation