(Preliminary data - 20mar96)

/**********************************************************************/
				CLOCKMAN COMMANDS
/**********************************************************************/
sList = CMEvtItemize (@CMFirst)

Creates a space-delimited list of the ClockMan events.

Parameters:
	(number)	Which events to itemize:
			@CMFirst itemizes all events starting with the first
			one. (This is currently the only value ClockMan
			recognizes.)

Returns:
	(string)	A space-delimited list of all event IDs in ClockMan's
			database.

After calling CMEvtItemize(), you'd normally loop through the returned
list using ItemExtract() to get each event ID in the string. You use
this event ID to get or set information about the event.

See Also:
	CMGetEvtInfo, CMSetEvtInfo


/**********************************************************************/
sInfo = CMGetEvtInfo (nEventID, nWhichInfo)
nInfo = CMGetEvtInfo (nEventID, nWhichInfo)

Extracts information about an event.

Parameters:
	(number)	Which event to get information on. @CMThisEvt gets
			info about the event that launched this WIL script.
	(number)	Which piece of information to return:
			@CMEvtTime - When this event occurred, in WIL datetime
			fmt.
			@CMIsActive - Will this event ever occur again?
			@CMMsgType - One of these: @CMMsgAnn, @CMMsgCfm,
				@CMMsgCount, @CMMsgTSquare, @CMMsgNone.
			@CMMsg - The message text to display.
			@CMTune - Whether the "Beep" box is checked. @TRUE or
				@FALSE.
			@CMTuneName
			@CMAction - Which action this event carries out.
				One of these: @CMACMsgOnly, @CMACRunPgm,
				@CMACRunWIL, @CMACShutdown, @CMACAdj.
			@CMPgmLine - The full command line to execute.
			@CMPgmShowAs - How to show the program we launch.
			@CMPgmKeys - The keystrokes to send to the program.
			@CMAdjSecs - How many seconds to adjust the time.
				(Negative number implies adjusting backwards;
				positive is forwards.)

Returns:
	(string)	if @CMNextTime, @CMMsg, @CMTuneName, @CMPgmLine,
			@CMPgmKeys.
	(number)	if @CMIsActive, @CMMsgType, @CMTune, @CMAction,
			@CMPgmShowAs, @CMAdjSecs.

See Also:
	CMSetEvtInfo

    
/**********************************************************************/
nTime = CMGetSysTime ()

Gets the PC's current system time as a Unix time (secs since 00:00:00
GMT 1/1/70). (For the current time in WIL datetime format, use
TimeYmdHms.)

Returns:
	(number)	The number of secs since 00:00:00 GMT 1/1/70.

See Also:
	CMSetSysTime


/**********************************************************************/
sDesc = CMGetTimeDesc (@CMTimeNow, sFmt)

Lets you build a custom date & time string using replacement variables.

Parameters:
	(string)	The time to convert to a string, or @CMTimeNow for the
			current time. (This function currently only recognizes
			@CMTimeNow.)
	(string)	The format to use in converting the time. You use
			these replacement variables:
				&dt - Windows-defined short date
				&y4 - 4-digit year
				&yy - 2-digit year
				&MO - Full month name ("January".."December")
				&mo - Abbreviated month ("Jan".."Dec")
				&mm - Month of year w/o leading zeros
					("1".."12")
				&0m - Month of year w/leading zero if necessary
					("01".."12")
				&DA - Day of week ("Sunday".."Saturday")
				&da - Abbreviated DOW ("Sun".."Sat")
				&dd - Day of month w/o leading zeros
					("1".."31")
				&0d - Day of month w/leading zero if necessary
					("01".."31")
				&hr - Hour of day ("0".."24")
				&0h - Hour w/leading zero if necessary
					("00".."24")
				&mi - Minute ("0".."59")
				&se - Second ("0".."59")

Returns:
	(string)	Your custom date & time string.

This command creates a custom date & time description string using the
same syntax you use to customize the ClockMan icon's title.

Example:
	szNow = CMGetTimeDesc (@CMTimeNow, "It's &hr:&mi on &DA, &MO &dd")
	sets szNow to "It's 15:37 on Monday, August 15".
    

/**********************************************************************/
nInfo = CMGetTimeInfo (sTime, nWhichInfo)

Returns information about a specified time.

Parameters:
	(string)	The time to get information about, in WIL "datetime"
			format ("yy:mm:dd:hh:mi:ss").
	(number)	Which piece of information to get from it:
				@CMYear - The year (00..99)
				@CMMonth - The month (1..12)
				@CMDayOfMonth - The day of month (1..31)
				@CMDayOfWeek - The day of week (0-Sun..6-Sat)
				@CMHour - The hours (0..11)
				@CMMinute - The minutes (0..59)
				@CMSecond - The seconds (0..59)

Returns:
	(number)	The information requested above.

See Also:
	CMSetTimeInfo


/**********************************************************************/
CMLogMessage (sMessage)

Writes a message out to CLOCKMAN.LOG.

Parameters:
	(string)	The message to write out, up to 256 characters.

This command writes out the current date & time, and then the message
you specify. The log file name is the same as the current .ALR file,
except with a .LOG extension. This is usually CLOCKMAN.LOG.

    
/**********************************************************************/
CMSetEvtInfo (nEventID, nWhich, nData)
CMSetEvtInfo (nEventID, nWhich, sData)


Parameters:
	(number)	Event identifier. (See CMGetEvtInfo)
	(number)	Which piece of data to set. (See CMGetEvtInfo)
	(number)	The new data. It's a string if setting @CMEvtTime,
	   or		@CMMsg, @CMTuneName, @CMPgmLine, or @CMPgmKeys;
	(string)	it's a number if setting @CMMsgType, @CMTune,
			@CMAction, @CMPgmShowAs, or @CMAdjSecs.

Note: you can't use @CMIsActive. (When you call CMGetEvtInfo with
@CMIsActive, it merely tells you if the event will ever occur again.
This depends on whether it's a recurring or a one-time event, and
whether or not this one time is set in the future or in the past.)

See Also:
    CMGetEvtInfo


/**********************************************************************/
CMSetSysTime (sTime)

Sets the PC's system time.

Parameters:
	(string)	The new system time. This can be the local time in
			WIL datetime format ("yy:mm:dd:hh:mi:ss") or a single
			Unix time (secs since 00:00:00 GMT 1/1/70).

See Also:
	CMGetSysTime


/**********************************************************************/
sNewTime = CMSetTimeInfo (sOldTime, nWhichInfo, nData)

Changes specific parts of a WIL "datetime" string.

Parameters:
	(string)	The time to change information about, in WIL datetime
			format ("yy:mm:dd:hh:mi:ss").
	(number)	Which piece of information to change:
				@CMYear - The year (00..99)
				@CMMonth - The month (1..12)
				@CMDayOfMonth - The day of month (1..31)
				@CMHour - The hours (0..11)
				@CMMinute - The minutes (0..59)
				@CMSecond - The seconds (0..59)
				@CMUnixTime - Assumes the string is a single
					number representing how many seconds have
					elapsed since 00:00:00 GMT on 1/1/70.
					This will convert it to a WIL "datetime"
					string.
	(number)	The new data. (Ignored if @CMUnixTime.)

Returns:
	(string)	The time in WIL "datetime" format, with the
			appropriate data changed.

See Also:
	CMGetTimeInfo


(Preliminary data - 20mar96)

THESE COMMANDS ARE SUBJECT TO CHANGE. These will eventually be merged
into the standard WIL/WinBatch engine, possibly with slightly different
syntax.

/**********************************************************************/
                         DIAL-UP NETWORKING COMMANDS
/**********************************************************************/
nConn = SDialUp (sHost)

Dials up an Internet host, without making you respond to the "Connect
to" dialog.

Parameters:
	(string)	The Internet host to dial up, such as returned from
			SEnumDialUps. (This is the descriptive name the user
			would see in the "Connect To" dialog, not the actual
			domain name.)

Returns:
	(number)	A handle that identifies the connection, or @FALSE if
			error. If you're already connected to this host, then
			this handle identifies the existing connection.

SGetLastErr():
	@SOK			Dialed up the specified host successfully.
	@SAlready		The dialup is already connected. The return
				value identifies the existing connection.
	@SErrNotFound	Unknown host name specified.
	600..750		Remote Access Service error code (see Appx B).

See Also:
	SEnumDialUps, SHangUp


/**********************************************************************/
sHosts = SEnumDialUps ()

Creates a list of all the valid Dial-Up Networking hosts. These are the
ones the user normally chooses from when they connect to the Internet
via the "Connect To" dialog.

Returns:
	(string)	A tab-delimited list of dial-up hosts (up to 16).

SGetLastErr():
	@SOK			Created the list successfully.
	600..750		Remote Access Service error code. (see Appx B).
	603			User has more than 16 dial-up hosts defined.

See Also:
	SDialUp


/**********************************************************************/
nRet = SHangUp (nConn)

Hangs up a specified dial-up Internet connection, or all existing
connections (up to 16).

Parameters:
	(number)	The dial-up connection handle to hang up on (as
			returned from SDialUp), or 0 to hang up on all open
			connections.

Returns:
	(number)	@TRUE if OK, else @FALSE if there was an error.

SGetLastErr():
	@SOK			Hung up the host(s) successfully.
	@SErrParam		Unknown connection handle specified.
	600..750		Remote Access Service error code (see Appx B).

See Also:
	SDialUp


(Preliminary data - 20mar96)

THESE COMMANDS ARE SUBJECT TO CHANGE. These will eventually be merged
into the standard WIL/WinBatch engine, possibly with slightly different
syntax.

/**********************************************************************/
                             INTERNET COMMANDS
/**********************************************************************/
nData = SByteOrder16 (nData, nDirection)
nData = SByteOrder32 (nData, nDirection)

Converts a 16- or 32-bit binary number from network byte order to the
PC's byte order & vice versa. (Note: You normally don't need to call
these functions if you are just sending or receiving a value thru
SSendNum8, SSendNum16, SSendNum32, SRecvNum8, SRecvNum16, or SRecvNum32.
They all do the translation for you.)

Parameters:
	(number)	The binary number to translate.
	(number)	@SNet2PC - translates a number received from the net
			to the PC's byte order. @SPC2Net - translates a number
			from the PC's byte order to the network's.

Returns:
	(number)	The translated number.


/**********************************************************************/
nRet = SClose (hSocket)

Closes a socket.

Parameters:
	(number)    The socket to close.

Returns:
	(number)    @TRUE if the socket was closed successfully, else
			@FALSE.

SGetLastErr():
	@SOK			closed the socket OK.
	10000..11004	Winsock error code (see Appendix A).

See Also:
	SOpen


/**********************************************************************/
nRet = SConnect (hSocket, szHost, szService)

Connects a socket to an Internet host & network service (i.e. "ftp"). If
you're not already hooked up to an Internet Service Provider, this will bring
up the "Connect To" dialog. If you want it to dial up without human
intervention, you must call SDialUp first.

Parameters:
	(number)	Which socket to connect.
	(string)	Which host to connect to. This can be either a
			symbolic host name like "myserv.com", or a dotted-
			decimal IP address like "192.123.456.1".
	(string)	The name of the service to connect this socket to, or
			the service's port number (ex: "time", or "37"). If
			you specify a service name, SConnect calls WinSock's
			getservbyname function to get the port #, which in
			turn looks up the service name in the standard WinSock
			SERVICE file. Strangely enough, http (port 80) isn't
			listed there, so in that case you'll have to use "80".

Returns:
	(number)	@TRUE if everything's OK, else @FALSE.

SGetLastErr():
	@SOK			Connected OK.
	@SCancel		User hit Cancel in the "Connect To" dialog, or
				unknown host name.
	@SErrParam		Unknown socket # specified.
	@SErrService	Unknown service name specified.
	@SErrIPAddr		Invalid IP dotted-decimal address specified.
	@SErrHostName	Unknown host name specified.
	@SErrNoConn		Host computer refused to connect, possibly
				because it doesn't support the requested
				service.
	@SErrBusy		Host computer too busy to connect.
	10000..11003	Winsock error code (see Appendix A).
    
See Also:
	SClose, SDialUp, SOpen


/**********************************************************************/
nErr = SGetLastErr ()

Gets the last error generated by an Ixxx function.

Returns:
	(number)	The result of the last Ixxx function. (See the
			specific function description).


/**********************************************************************/
bOK = SOK2Recv (hSocket, nSize)

Is it OK to receive data from this socket without it having to wait? 

Parameters:
	(number)	A handle specifying the socket to check.
	(number)	How many bytes we want to receive.

Returns:
	(number)	@TRUE if an SRecvXXX command could be carried out
			without waiting, else @FALSE if the WIL script would
			have to wait first.

SGetLastErr():
	@SOK			Determined the status OK.
	@SErrMustWait	Not enough data in Winsock's recv queue without
				forcing the WIL script to wait.
	10000..11004	Winsock error code from its recv function (see
				Appendix A).

See Also:
	SOpen, SConnect, SRecvXXX


/**********************************************************************/
bOK = SOK2Send (hSocket)

Is it OK to send data thru this socket without it having to wait? 

Parameters:
	(number)	A handle specifying the socket to check.

Returns:
	(number)	@TRUE if SSendXXX command could be carried out without
			waiting, else @FALSE if the WIL script would have to
			wait.

SGetLastErr():
	@SOK			Determined the status OK.
	@SErrMustWait	Winsock's send queue is full.

See Also:
	SOpen, SConnect, SSendXXX


/**********************************************************************/
nData = SRecvNum8 (hSocket)
nData = SRecvNum16 (hSocket)
nData = SRecvNum32(hSocket)

Gets numeric data from a socket. The result is then converted from
network byte order to PC byte order for you.

Parameters:
	(number)	The socket to get data from.

Returns:
	(number)	The next 1, 2, or 4 bytes of data received, expressed
			as a signed 8-, 16-, or 32-bit number. (These are
			converted, if necessary, from network byte order to PC
			byte order.)

SGetLastErr():
	@SOK			Received the data OK.
	@SErrMustWait	Socket is @SNonBlocking, & there wasn't enough
				data in the recv buffer.
	@SErrNoConn		The server has already closed the connection.
	10000..11004	Winsock error code (see Appendix A).

See Also:
    SOpen, SConnect, SSendNum8, SSendNum16, SSendNum32


/**********************************************************************/
sData = SRecvLine (hSocket, nMaxChars)

Gets a line of text from a socket, up to the first CR/LF.

Parameters:
	(number)	A handle specifying the socket to get data from.
	(number)	The maximum characters to receive in one line. (This
			value must be less than 65535, which is the total
			allowed for all strings in your WIL script. A good
			value would be 32767.)

Returns:
	(string)	The next line of text in the receive buffer, with its
			trailing CR/LF stripped off.

SGetLastErr():
	@SOK			Received the data OK.
	@SErrParam		Max chars requested > 65535.
	@SErrMustWait	Socket is @SNonBlocking, & there wasn't enough
				data in the recv buffer. (No data, or at least
				no CR/LFs yet).
	@SErrNoConn		The server has already closed the connection.
	10000..11004	Winsock error code (see Appendix A).

See Also:
    SOpen, SConnect, SSendLine, SSendString


/**********************************************************************/
nRet = SSendBin (hSocket, sData, nLen)

Sends binary data to a socket.

Parameters:
	(number)	A handle specifying the socket to send data to.
	(string)	The data to send.
	(number)	How many bytes to send.

Returns,
SGetLastErr():
	@SOK			Sent the data OK.
	@SErrMustWait	Socket is @SNonBlocking, & the send buffer is
				still full. You must wait a bit & retry.
	10000..11004	Winsock error code (see Appendix A).

See Also:
	SOpen, SConnect, SSendString, SSendNum8, SSendNum16, SSendNum32


/**********************************************************************/
nRet = SSendNum8  (hSocket, nData)
nRet = SSendNum16  (hSocket, nData)
nRet = SSendNum32 (hSocket, nData)

Sends an integer to a socket.

Parameters:
	(number)	A handle specifying the socket to send data to.
	(number)	The 1-, 2-, or 4-byte number to send. (This is
			converted, if necessary, from PC byte order to network
			byte order.)

Returns,
SGetLastErr():
	@SOK			Sent the data OK.
	@SErrMustWait	Socket is @SNonBlocking, & the send buffer is
				still full. You must wait a bit & retry.
	10000..11004	Winsock error code (see Appendix A).

See Also:
	SOpen, SConnect, SSendBin, SSendString


/**********************************************************************/
nRet = SSendString (hSocket, sData)
nRet = SSendLine   (hSocket, sData)

Sends a string to a socket. SSendLine() will first append a CR/LF on the
end of the string if it isn't already there.

Parameters:
	(number)	The socket to send data to.
	(string)	The data to send.

Returns,
SGetLastErr():
	@SOK			Sent the data OK.
	@SErrMustWait	Socket is @SNonBlocking, & the send buffer is
				still full. You must wait a bit & retry.
	10000..11004	Winsock error code (see Appendix A).

See Also:
	SOpen, SConnect, SSendBin, SSendNum8, SSendNum16, SSendNum32


/**********************************************************************/
hSocket = SOpen (nType)

Creates a new stream (TCP) socket.

Parameters:
	(number)	What type of socket to create: @SBlocking or
			@SNonBlocking. (See below.)

Returns:
	(number)	A handle specifying the socket that was created, or
			@SErrSocket.

SGetLastErr():
	@SOK			The socket was created successfully.
	@SErrParam		Unknown socket type specified.
	@SErrWinsock	Couldn't initialize Winsock. ClockMan needs
				Winsock v1.1 or higher.
	@SErrSocket		Error creating the socket.

See Also:
	SConnect, SClose

When sending & receiving data with a remote host, your script can't
control how fast the process runs. The server could be slow in
responding to your requests for data, or you may be pushing so much data
out faster than the network can process it that your Winsock send buffer
may fill up. In either case the socket has to wait.

If you create the socket as "blocking", any SSendXXX or SRecvXXX calls
you make will wait until the data can be received/sent, and hitting
Ctrl+Break WON'T escape out of it.

On the other hand, when a "non-blocking" socket can't send or receive
all the data, it returns immediately & sets SGetLastErr() to
@SErrMustWait. To take advantage of this (mostly so you can hit
Ctrl+Break if the network seems hung up), you must put each SSendXXX &
SRecvXXX call in a while/endwhile loop. For example:

	hSocket = SOpen (@SNonBlocking)
	
	<Connect it to something>

	nRet = SSendLine (hSocket, szMyData)
	while (nRet==@SErrMustWait)
	    nRet = SSendLine (hSocket, szMyData)
	endwhile

	nData = SRecvNum32 (hSocket)
	while (SGetLastErr() == @SErrMustWait)
	    nData = SRecvNum32 (hSocket)
	endwhile


/**********************************************************************/
APPENDIX A: Winsock error codes.
/**********************************************************************/
WSAEINTR           10004
WSAEBADF           10009
WSAEACCES          10013
WSAEFAULT          10014
WSAEINVAL          10022
WSAEMFILE          10024
WSAEWOULDBLOCK     10035 (SSend/SRecv - Becomes @SErrMustWait)
WSAEINPROGRESS     10036
WSAEALREADY        10037
WSAENOTSOCK        10038 (SConnect - Becomes @SErrSocket)
WSAEDESTADDRREQ    10039
WSAEMSGSIZE        10040
WSAEPROTOTYPE      10041
WSAENOPROTOOPT     10042
WSAEPROTONOSUPPORT 10043
WSAESOCKTNOSUPPORT 10044
WSAEOPNOTSUPP      10045
WSAEPFNOSUPPORT    10046
WSAEAFNOSUPPORT    10047
WSAEADDRINUSE      10048
WSAEADDRNOTAVAIL   10049
WSAENETDOWN        10050
WSAENETUNREACH     10051
WSAENETRESET       10052 (SConnect - Becomes @SErrNoConn)
WSAECONNABORTED    10053 (SConnect - Becomes @SErrNoConn)
WSAECONNRESET      10054
WSAENOBUFS         10055
WSAEISCONN         10056
WSAENOTCONN        10057
WSAESHUTDOWN       10058
WSAETOOMANYREFS    10059
WSAETIMEDOUT       10060 (SConnect - Becomes @SErrNoConn)
WSAECONNREFUSED    10061 (SConnect - Becomes @SErrBusy)
WSAELOOP           10062
WSAENAMETOOLONG    10063
WSAEHOSTDOWN       10064
WSAEHOSTUNREACH    10065
WSAENOTEMPTY       10066
WSAEPROCLIM        10067
WSAEUSERS          10068
WSAEDQUOT          10069
WSAESTALE          10070
WSAEREMOTE         10071
WSAEDISCON         10101
WSASYSNOTREADY     10091
WSAVERNOTSUPPORTED 10092
WSANOTINITIALISED  10093
WSAHOST_NOT_FOUND  11001
WSATRY_AGAIN       11002
WSANO_RECOVERY     11003
WSANO_DATA         11004 (SConnect - Becomes @SCancel)


/**********************************************************************/
APPENDIX B: Dial-Up Networking return codes.
/**********************************************************************/
PENDING                              600
ERROR_INVALID_PORT_HANDLE            601
ERROR_PORT_ALREADY_OPEN              602 (SDialUp - becomes @SAlready)
ERROR_BUFFER_TOO_SMALL               603 (User has > 16 DU connections)
ERROR_WRONG_INFO_SPECIFIED           604
ERROR_CANNOT_SET_PORT_INFO           605
ERROR_PORT_NOT_CONNECTED             606
ERROR_EVENT_INVALID                  607
ERROR_DEVICE_DOES_NOT_EXIST          608
ERROR_DEVICETYPE_DOES_NOT_EXIST      609
ERROR_BUFFER_INVALID                 610
ERROR_ROUTE_NOT_AVAILABLE            611
ERROR_ROUTE_NOT_ALLOCATED            612
ERROR_INVALID_COMPRESSION_SPECIFIED  613
ERROR_OUT_OF_BUFFERS                 614
ERROR_PORT_NOT_FOUND                 615
ERROR_ASYNC_REQUEST_PENDING          616
ERROR_ALREADY_DISCONNECTING          617
ERROR_PORT_NOT_OPEN                  618
ERROR_PORT_DISCONNECTED              619
ERROR_NO_ENDPOINTS                   620
ERROR_CANNOT_OPEN_PHONEBOOK          621
ERROR_CANNOT_LOAD_PHONEBOOK          622
ERROR_CANNOT_FIND_PHONEBOOK_ENTRY    623 (SDialUp - becomes
							@SErrNotFound)
ERROR_CANNOT_WRITE_PHONEBOOK         624
ERROR_CORRUPT_PHONEBOOK              625
ERROR_CANNOT_LOAD_STRING             626
ERROR_KEY_NOT_FOUND                  627
ERROR_DISCONNECTION                  628
ERROR_REMOTE_DISCONNECTION           629
ERROR_HARDWARE_FAILURE               630
ERROR_USER_DISCONNECTION             631
ERROR_INVALID_SIZE                   632
ERROR_PORT_NOT_AVAILABLE             633
ERROR_CANNOT_PROJECT_CLIENT          634
ERROR_UNKNOWN                        635
ERROR_WRONG_DEVICE_ATTACHED          636
ERROR_BAD_STRING                     637
ERROR_REQUEST_TIMEOUT                638
ERROR_CANNOT_GET_LANA                639
ERROR_NETBIOS_ERROR                  640
ERROR_SERVER_OUT_OF_RESOURCES        641
ERROR_NAME_EXISTS_ON_NET             642
ERROR_SERVER_GENERAL_NET_FAILURE     643
WARNING_MSG_ALIAS_NOT_ADDED          644
ERROR_AUTH_INTERNAL                  645
ERROR_RESTRICTED_LOGON_HOURS         646
ERROR_ACCT_DISABLED                  647
ERROR_PASSWD_EXPIRED                 648
ERROR_NO_DIALIN_PERMISSION           649
ERROR_SERVER_NOT_RESPONDING          650
ERROR_FROM_DEVICE                    651
ERROR_UNRECOGNIZED_RESPONSE          652
ERROR_MACRO_NOT_FOUND                653
ERROR_MACRO_NOT_DEFINED              654
ERROR_MESSAGE_MACRO_NOT_FOUND        655
ERROR_DEFAULTOFF_MACRO_NOT_FOUND     656
ERROR_FILE_COULD_NOT_BE_OPENED       657
ERROR_DEVICENAME_TOO_LONG            658
ERROR_DEVICENAME_NOT_FOUND           659
ERROR_NO_RESPONSES                   660
ERROR_NO_COMMAND_FOUND               661
ERROR_WRONG_KEY_SPECIFIED            662
ERROR_UNKNOWN_DEVICE_TYPE            663
ERROR_ALLOCATING_MEMORY              664
ERROR_PORT_NOT_CONFIGURED            665
ERROR_DEVICE_NOT_READY               666
ERROR_READING_INI_FILE               667
ERROR_NO_CONNECTION                  668
ERROR_BAD_USAGE_IN_INI_FILE          669
ERROR_READING_SECTIONNAME            670
ERROR_READING_DEVICETYPE             671
ERROR_READING_DEVICENAME             672
ERROR_READING_USAGE                  673
ERROR_READING_MAXCONNECTBPS          674
ERROR_READING_MAXCARRIERBPS          675
ERROR_LINE_BUSY                      676
ERROR_VOICE_ANSWER                   677
ERROR_NO_ANSWER                      678
ERROR_NO_CARRIER                     679
ERROR_NO_DIALTONE                    680
ERROR_IN_COMMAND                     681
ERROR_WRITING_SECTIONNAME            682
ERROR_WRITING_DEVICETYPE             683
ERROR_WRITING_DEVICENAME             684
ERROR_WRITING_MAXCONNECTBPS          685
ERROR_WRITING_MAXCARRIERBPS          686
ERROR_WRITING_USAGE                  687
ERROR_WRITING_DEFAULTOFF             688
ERROR_READING_DEFAULTOFF             689
ERROR_EMPTY_INI_FILE                 690
ERROR_AUTHENTICATION_FAILURE         691
ERROR_PORT_OR_DEVICE                 692
ERROR_NOT_BINARY_MACRO               693
ERROR_DCB_NOT_FOUND                  694
ERROR_STATE_MACHINES_NOT_STARTED     695
ERROR_STATE_MACHINES_ALREADY_STARTED 696
ERROR_PARTIAL_RESPONSE_LOOPING       697
ERROR_UNKNOWN_RESPONSE_KEY           698
ERROR_RECV_BUF_FULL                  699
ERROR_CMD_TOO_LONG                   700
ERROR_UNSUPPORTED_BPS                701
ERROR_UNEXPECTED_RESPONSE            702
ERROR_INTERACTIVE_MODE               703
ERROR_BAD_CALLBACK_NUMBER            704
ERROR_INVALID_AUTH_STATE             705
ERROR_WRITING_INITBPS                706
ERROR_X25_DIAGNOSTIC                 707
ERROR_ACCT_EXPIRED                   708
ERROR_CHANGING_PASSWORD              709
ERROR_OVERRUN                        710
ERROR_RASMAN_CANNOT_INITIALIZE       711
ERROR_BIPLEX_PORT_NOT_AVAILABLE      712
ERROR_NO_ACTIVE_ISDN_LINES           713
ERROR_NO_ISDN_CHANNELS_AVAILABLE     714
ERROR_TOO_MANY_LINE_ERRORS           715
ERROR_IP_CONFIGURATION               716
ERROR_NO_IP_ADDRESSES                717
ERROR_PPP_TIMEOUT                    718
ERROR_PPP_REMOTE_TERMINATED          719
ERROR_PPP_NO_PROTOCOLS_CONFIGURED    720
ERROR_PPP_NO_RESPONSE                721
ERROR_PPP_INVALID_PACKET             722
ERROR_PHONE_NUMBER_TOO_LONG          723
ERROR_IPXCP_NO_DIALOUT_CONFIGURED    724
ERROR_IPXCP_NO_DIALIN_CONFIGURED     725
ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE   726
ERROR_ACCESSING_TCPCFGDLL            727
ERROR_NO_IP_RAS_ADAPTER              728
ERROR_SLIP_REQUIRES_IP               729
ERROR_PROJECTION_NOT_COMPLETE        730
ERROR_PROTOCOL_NOT_CONFIGURED        731
ERROR_PPP_NOT_CONVERGING             732
ERROR_PPP_CP_REJECTED                733
ERROR_PPP_LCP_TERMINATED             734
ERROR_PPP_REQUIRED_ADDRESS_REJECTED  735
ERROR_PPP_NCP_TERMINATED             736
ERROR_PPP_LOOPBACK_DETECTED          737
ERROR_PPP_NO_ADDRESS_ASSIGNED        738
ERROR_CANNOT_USE_LOGON_CREDENTIALS   739
ERROR_TAPI_CONFIGURATION             740
ERROR_NO_LOCAL_ENCRYPTION            741
ERROR_NO_REMOTE_ENCRYPTION           742
ERROR_REMOTE_REQUIRES_ENCRYPTION     743
ERROR_IPXCP_NET_NUMBER_CONFLICT      744
ERROR_INVALID_SMM                    745
ERROR_SMM_UNINITIALIZED              746
ERROR_NO_MAC_FOR_PORT                747
ERROR_SMM_TIMEOUT                    748
ERROR_BAD_PHONE_NUMBER               749
ERROR_WRONG_MODULE                   750
