BookmarkSubscribeRSS Feed
GeorgeSAS
Lapis Lazuli | Level 10

Hello All,

 

How to conver a large format into SAS dataset? the SAS memsize is not enough to do this.

May I ask is there any tricky method to split the format and convert them to SAS small SAS dataset one by one?

 

Any suggestion will be appreciated!(without change memory size)

 

 

proc format cntout=newdataset  lib=alargefmt;
run;



*******error* insufficient memory........;

Thanks!

12 REPLIES 12
Tom
Super User Tom
Super User

@GeorgeSAS wrote:

Hello All,

 

How to conver a large format into SAS dataset? the SAS memsize is not enough to do this.

May I ask is there any tricky method to split the format and convert them to SAS small SAS dataset one by one?

 

Any suggestion will be appreciated!(without change memory size)

  

proc format cntout=newdataset  lib=alargefmt;
run;

*******error* insufficient memory........;

Thanks!


Does the catalog have more than one format? Does it help to use the SELECT statement to export them one by one?

GeorgeSAS
Lapis Lazuli | Level 10
Thank you,but only one format ,that single one is too large to be operated
Tom
Super User Tom
Super User
  • Try using FMTLIB option and see if you can scrape the information from the listing output. But I doubt it will help since it will still need to load the file.
  • You need to figure out how to start SAS with a larger MEMSIZE setting.
    • What version of SAS are you using? 
    • What operating system.
  • You might be able to contact SAS technical support and get help with converting the file, but I am not sure if they provide that type of service.
RW9
Diamond | Level 26 RW9
Diamond | Level 26

How large are we talking here?  A format is supposed to be a distinct grouping, so how has it got so big?  Maybe consider using datasets rather than formats.

GeorgeSAS
Lapis Lazuli | Level 10
Thank you,
This is on mainframe ,the format is 1 GB size.and consider using datasets rather than formats is a good option but this format is from an old file.
DaveHorne
SAS Employee

I can't tell if that error message relates to the output data set or not, so you can limit the variables sent to cntlout to see if that helps:

 

options compress=yes;                                                                                                                   
proc format library=alargefmt                                                                                                           
  cntlout=newdataset(keep=start end label);                                                                                             
run;

 

If you don't use any ranges (i.e start and end are the same) then you could just keep start, label.

GeorgeSAS
Lapis Lazuli | Level 10
Thank you Dave,
that is a good idea. but it not work, because the keep statement happen only after all file already load into memory.
there would be a solution if can find how to use the 'keep' before all file load into memory.

And ballardw, thank you,but I don't have the code that created the format
ballardw
Super User

Are you running the format code on the mainframe?

You may be running into your available space settings for users and not a SAS limit. Disc space would be a common element limited to most users and if the catalog is thal large.

 

By any chance do you have the Code that created the format? It may be that running that code with cntlout would be a better option.

ballardw
Super User

Have you tried something like this:

 

proc format cntout=formatone  lib=alargefmt;

select formatone;
run;

 

Where formatone is the name of one of the formats in the library?

If you also have informats you would use @informatname since it is very common to have an informat and format with the same name.

GeorgeSAS
Lapis Lazuli | Level 10

I tried, but just the single format is too large to be loaded.

 

Thanks

Kurt_Bremser
Super User

Then you either need increased memory, or go back one further step and recreate the data that was originally used to create the format (nobody types a 1GB format by hand). With data like that, there MUST be documentation about its creation.

Tom
Super User Tom
Super User

Get help from your local systems team. If you really are running MVS then change the memory settings in the JCL.

Are you sure the file is really a format catalog? Can you see the list of formats in it using PROC CATALOG? Or using the DICTIONARY views?

Are you sure the file is a format catalog for the version of SAS that you are running?  Format catalogs a normally not compatible across releases or operating systems.

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

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
  • 12 replies
  • 1634 views
  • 0 likes
  • 6 in conversation