/*-------------------------------------------------------------------+ | Copyright (c) 1995, SAS Institute Inc. | | Unpublished - All Rights Reserved | | S A S / C S A M P L E | | | | NAME: C2PASCPC | | LANGUAGE: C | | PURPOSE: THIS EXAMPLE DEMONSTRATES A PASCAL PROGRAM CALLING | | A C FUNCTION, PASSING A PARAMETER LIST. | | IT CONSISTS OF SAMPLE LIBRARY MEMBERS | | C2PASCPC, C2PASCPP, AND C2PASCPM. | | MVS - | | COMPILE: USE JCL PROVIDED IN SAMPLE.AUX(C2PASCPM). | | LINK: USE JCL PROVIDED IN SAMPLE.AUX(C2PASCPM). | | EXECUTE: USE JCL PROVIDED IN SAMPLE.AUX(C2PASCPM). | | TSO - | | COMPILE: PASCAL - USE PASCAL COMPILER. | | C - LC370C C2PASCPC | | LINK: ILCLINK, USING CONTROL CARDS IN SAMPLE.AUX(C2PASCPM). | | EXECUTE: CALL .LOAD(C2PASCPM) | | CMS - | | COMPILE: PASCAL - USE PASCAL COMPILER. | | C - LC370 C2PASCPC | | LINK: ILCLINK, USING CONTROL CARDS IN SAMPLE.AUX(C2PASCPM). | | EXECUTE: CALL C2PASCPM | | 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); printf("Hello, from the C program!\n"); token = mkfmwk("PASCAL",""); if (!token) { printf("Can't create the Pascal framework!\n"); exit(12); } printf("Hello World C calling PASCAL\n"); PASCPROC(pascparm); printf("Successful return from PASCAL\n"); dlfmwk(token); }