/*-------------------------------------------------------------------+
| Copyright (c) 1995, SAS Institute Inc. |
| Unpublished - All Rights Reserved |
| S A S / C S A M P L E |
| |
| NAME: CXPASCPC |
| LANGUAGE: C++ |
| PURPOSE: THIS EXAMPLE DEMONSTRATES A PASCAL PROGRAM CALLING |
| A C++ FUNCTION, PASSING A PARAMETER LIST. |
| IT CONSISTS OF SAMPLE LIBRARY MEMBERS |
| CXPASCPC, CXPASCPP, AND CXPASCPM. |
| MVS - |
| COMPILE: USE JCL PROVIDED IN SAMPLE.AUX(CXPASCPM). |
| LINK: USE JCL PROVIDED IN SAMPLE.AUX(CXPASCPM). |
| EXECUTE: USE JCL PROVIDED IN SAMPLE.AUX(CXPASCPM). |
| TSO - |
| COMPILE: PASCAL - USE PASCAL COMPILER. |
| C - LCXX CXPASCPC |
| LINK: ILCLINK, USING CONTROL CARDS IN SAMPLE.AUX(CXPASCPM). |
| EXECUTE: CALL .LOAD(CXPASCPM) |
| CMS - |
| COMPILE: PASCAL - USE PASCAL COMPILER. |
| C - LCXX CXPASCPC |
| LINK: ILCLINK, USING CONTROL CARDS IN SAMPLE.AUX(CXPASCPM). |
| EXECUTE: CALL CXPASCPM |
| MISC NOTES: THE FOLLOWING LSCL1028 MESSAGES CAN BE IGNORED: |
| THE FILE "SYSLIB(AMPXRETC)" COULD NOT BE OPENED FOR AUTOCALL. |
| THE FILE "SYSLIB(AMPXHALT)" COULD NOT BE OPENED FOR AUTOCALL. |
| THE FILE "SYSLIB(AMPXSEGE)" COULD NOT BE OPENED FOR AUTOCALL. |
| THE FILE "SYSLIB(AMPXSTRT)" COULD NOT BE OPENED FOR AUTOCALL. |
| THE FILE "SYSLIB(AMPXPARM)" COULD NOT BE OPENED FOR AUTOCALL. |
| THE FILE "SYSLIB(PASCPROC)" COULD NOT BE OPENED FOR AUTOCALL. |
+-------------------------------------------------------------------*/
#include
#include
#include
__pascal void pascproc();
void main()
{
struct string
{
short len;
char text(|30|);
};
struct string pascparm = { 0, "Hello from PASCAL" };
void *token;
pascparm.len = strlen(pascparm.text);
cout << "Hello, from the C++ program!" << endl;
token = mkfmwk("PASCAL","");
if (!token)
{
cout << "Can't create the Pascal framework!" << endl;
exit(12);
}
cout << "Hello World C++ calling PASCAL" << endl;
pascproc(pascparm);
cout << "Successful return from PASCAL" << endl;
dlfmwk(token);
}