help with atoi and macros in C

I have a PORT_NUM macro (10 digits long number)
in a server file, if i do
htons(PORT_NUM)
i get
warning: this decimal constant is unsigned only in ISO C90
warning: large integer implicitly truncated to unsigned type

whats wrong with this?

htons() receives a unsigned short integer type.
You should use htonl(), which recieves unsigned long integer type.

If you are planning to use that as a TCP port number in sin_port in a sockaddr_in struct, you should be aware that this is a 16-bit unsigned integer and is limited to 65536. In this case, leave it a htons but change the number.