02-17-2016 02:16 PM
I'm a long time SAS user (since 1997) but this is my first time using this forum and submitting a request for an enhancement!
I would like to take a 32 bit IPV4 or 128 bit IPV6 binary IP address and convert to text as dotted notation. For example, an IPV4 is stored in binary as 4 bytes as x'0a0b0c01' and the text is up to 15 bytes "010.011.012.001". While I don't have a requirement right now to go the other way, that may be useful as well (i.e., convert a char(15) field from 10.11.12.1 back into a 4 byte binary).
The equivalent functions in unix are inet_ntop (numeric to presentation) and inet_pton (presentation to numeric).
My goal right now is to read in a binary number and display it as dotted notation. I can work out the SAS code to do this myself, but I really think a function or informat/format would be useful. For example:
input @1 ipv4addr pib4.
put @1 ipv4addr $ipv4.;
The length would be implied to be either char15 if IPV4 or char35 if IPV6.
A function would work too - whichever makes sense.
02-17-2016 03:22 PM
You can write your own function or function-based format with proc FCMP and then use it just like any SAS function or SAS format in data steps and SQL.