Category : OS/2 Files
Archive   : APING12.ZIP
Filename : CPICPORT.H

 
Output of file : CPICPORT.H contained in archive : APING12.ZIP
/*****************************************************************************
*
* MODULE NAME: CPICPORT.H
*
* COPYRIGHTS:
* This module contains code made available by IBM
* Corporation on an AS IS basis. Any one receiving the
* module is considered to be licensed under IBM copyrights
* to use the IBM-provided source code in any way he or she
* deems fit, including copying it, compiling it, modifying
* it, and redistributing it, with or without
* modifications. No license under any IBM patents or
* patent applications is to be implied from this copyright
* license.
*
* A user of the module should understand that IBM cannot
* provide technical support for the module and will not be
* responsible for any consequences of use of the program.
*
* Any notices, including this one, are not to be removed
* from the module without the prior written consent of
* IBM.
*
* AUTHOR: Peter J. Schwaller
* VNET: PJS at RALVM6 Tie Line: 444-4376
* Internet: [email protected] (919) 254-4376
*
* AVAILABILITY:
* These sample programs and source are also available on
* CompuServe through the APPC Information Exchange. To get
* to the APPC forum just type 'GO APPC' from any CompuServe
* prompt. The samples are available in the Sample Programs
* library section. Just search on the keyword CPICPGMS to
* find all the samples in this series.
*
* Updates for the sample programs and support for many more
* CPI-C platforms will also be made available on CompuServe.
*
* RELATED FILES:
* Used by CPICPORT.C
*
* CHANGE HISTORY:
* Date Description
* 08/05/92 Version 2.31 of APING, ATELL and AREXEC released to CompuServe.
* This version was also distributed at the APPC/APPN Platform
* Developer's Conference held in Raleigh, NC.
* 08/13/92 Added the write_*() calls.
* Changed all printf and fprintf calls to use a write_*() call.
*
*****************************************************************************/

#ifndef INCL_CPICPORT
#define INCL_CPICPORT

/*
* This file contains all of the non-portable code for the CPI-C toolkit.
* Conditional compilation directives determine what code will be compiled
* for which platform. The following constants have been established
* to identify the supported platforms:
* DOS - Networking Services/DOS
* OS2 - Extended Services for OS/2
* FAPI - Compiling for both DOS and OS2
* AIX - SNA Services
* OS400 - OS/400 (for the AS/400)
* MVS - MVS ESA 4.2 or greater
* VM - VM/CMS ESA 1.0 or greater
* These constants should be defined outside of the source code on
* your compiler command line (e.g., cc -DOS2 foo.c).
*
* If you are porting to another platform, you should only use new constant
* if you don't fit into any of the above categories. To avoid name
* conflicts please contact the supplier of this file, indicated above.
*/


/*
* Set up the various constant definitions for:
* EBCDIC_HOST
* BIG_ENDIAN
* SHORT_IDENTIFIERS
* DOES_NOT_NEED_STRUPR
* SUPPORTS_SETTING_SECURITY
* PLN_COULD_REQUIRE_LOWERCASE
* ECS_NOT_SUPPORTED
*/
#include "cpicdefs.h"

/*
* Include CPICERR.H file for the definition of the CPICERR structure.
*/
#include "cpicerr.h"



#define TIMELENGTH 26
#define MAX_MESSAGE_LENGTH (300+1)


#ifdef SHORT_IDENTIFIERS
/* The C/370 compiler requires that identifier be unique in the 1st 8 chars. */
#define ascii_to_ebcdic_field a2efield
#define ascii_to_ebcdic_table a2etab
#define ebcdic_to_ascii_field e2afield
#define ebcdic_to_ascii_table e2atab
#endif


#ifdef EBCDIC_HOST

#define convert_to_ascii(buffer, len) ebcdic_to_ascii_field(buffer,len)
#define convert_from_ascii(buffer, len) ascii_to_ebcdic_field(buffer,len)

#else

#define convert_to_ascii(buffer, len)
#define convert_from_ascii(buffer, len)

#endif



/*
* If we are on a big endian machine, we will convert the integer format
* to little endian before sending the integers. This is done through
* a set of macros to swap the byte order.
*
* Programs should use the following macros before sending:
* convert_long_to_network -- 32 bit integers
* convert_short_to_network -- 16 bit integers
*
* Programs should use the following macros after receiving:
* convert_long_from_network -- 32 bit integers
* convert_short_from_network -- 16 bit integers
*
* Application code should use these macros before sending or receiving
* any integers. On a big endian platform, the macros will return a
* a byte swapping of the integer. On a little endian platform,
* the original integer will be returned unmodified (no-op).
*/
#ifdef BIG_ENDIAN

#define convert_long_to_network(x) SWAP4(x)
#define convert_short_to_network(x) SWAP2(x)
#define convert_long_from_network(x) SWAP4(x)
#define convert_short_from_network(x) SWAP2(x)

# ifndef SWAP2
/* Macro SWAP2 swaps the bytes in a two-byte integer */
# define SWAP2(s) (unsigned short)(((s)<<8)|(((s)&0xFF00)>>8))
# endif

# ifndef SWAP4
/* Macro SWAP4 swaps the bytes in a four-byte integer */
# define SWAP4(l) (unsigned long)(((l)<<24)|(((l)&0xFF000000)>>24)\
|(((l)&0xFF00)<<8)|(((l)&0xFF0000)>>8))
# endif


#else
/*
* If the platform is little endian, we don't have to do any byte
* order changing of the integers.
*/
#define convert_long_to_network(x) x
#define convert_short_to_network(x) x
#define convert_long_from_network(x) x
#define convert_short_from_network(x) x

#endif





/*
* Function prototypes
*/

void write_error( char *fmt, ...);
void write_output( char *fmt, ...);
void write_log( FILE * file,
char *fmt, ...);

char CM_PTR alloc_cpic_buffer( unsigned int size);

void show_info( char * * text);

void set_echo( int mode);

int get_password( char * password,
int max_length);

unsigned long get_time( void);

void display_message( char * destination,
char * userid,
char * message);


void datetime( char *);

void do_exit( int rc);

void ascii_to_ebcdic_field( char * ascii_field,
unsigned int field_size);
void ebcdic_to_ascii_field( char * ebcdic_field,
unsigned int field_size);

void execute_and_send_output(char * command,
unsigned char * cm_conv_id,
struct error_handler_cpicerr * cpicerr);


#if defined(FAPI)
int get_machine_mode( void);
#endif

#if !defined(DOES_NOT_NEED_STRUPR)
int strupr (char * string);
#endif

#endif


  3 Responses to “Category : OS/2 Files
Archive   : APING12.ZIP
Filename : CPICPORT.H

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/