/*--------------------------------------------------------------------+ | | | Copyright (c) 1996, SAS Institute Inc. | | Unpublished - All Rights Reserved | | | | S A S / C S A M P L E | | | | Name: SPFLOAD | | | | Language: C | | | | EntryPoint: MAIN | | | | Entry Type: Standard OS Entry Linkage | | | | Files Note: 'prefix' is the installation defined high level | | qualifier for the SAS/C product. | | | | Function: Dynamically load the ISPF ISPLINK function using a | | C version of the MVS LOAD macro (SVC 8) and then | | call it. | | | | | | Returns: The last return code from ISPLINK. | | | | Files: | | - prefix.SAMPLE.C: | | .SPFLOAD - sample using MVS LOAD macro | | .SPFLOADM - sample using SAS/C LOADM() function | | instead of the MVS LOAD macro | | | | - prefix.SAMPLE.AUX(LOAD) | | .SPFLOADH - header file for SPFLOAD with C macro | | versions of the MVS LOAD and DELETE | | macros | | .SPFLOADJ - JCL to compile/link the samples | | | | | | MVS - Compile/Link: submit prefix.SAMPLE.AUX(SPFLOADJ) | | | | CMS - Not Tested | | | | Misc Notes: | | - SPFLOAD is a two part sample, this is part 1 which | | uses the MVS LOAD macro, the second part uses the | | SAS/C LOADM() function to accomplish the same | | capability. | | | +--------------------------------------------------------------------*/ #include #include "spfloadh.h" /* LOAD & DELETE C macros */ void main() { __asm int(*asmtest)(); int lrc=0, rc=0, size=0; /* Dynamically load the asm func */ lrc = LOAD("ISPLINK ", &asmtest, &size); /* If loaded ok, run it */ if (!lrc) { printf("ISPLINK LOADED OK\n"); } else { printf("ISPLINK DID NOT LOAD\n"); exit(lrc); } rc = asmtest("CONTROL ","ERRORS ", "RETURN "); if (rc) printf("ISPLINK: CONTROL Failed.\n"); else printf("ISPLINK: CONTROL succedded.\n"); rc = asmtest("DISPLAY ","LSC##TT2", " ", " "); if (rc) printf("ISPLINK: DISPLAY Failed.\n"); else printf("ISPLINK: DISPLAY succedded.\n"); if (!lrc) /* If loaded ok, DELETE it. */ rc = DELETE("ISPLINK "); exit(rc); }