Created
April 10, 2017 18:58
-
-
Save JohnArchieMckown/5b973d46108bd24e0c6f9233c96176b0 to your computer and use it in GitHub Desktop.
Example static CALLs to C language sub-routines
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PROCESS ADV,AWO,NOC(W),DATA(31),FSRT,FLAG(I,I) | |
PROCESS INTDATE(ANSI),LANG(EN),LIB,LIST,MAP | |
PROCESS NONUM,NUMPROC(PFD),OBJ,OPT(FULL),APOST | |
PROCESS RENT,RMODE(AUTO),NOSEQ,SOURCE,NOSSRANGE, | |
PROCESS NOTERM,TEST(NONE,NOSYM),TRUNC(BIN),VBREF, | |
PROCESS XREF(FULL),ZWB,FASTSRT,AR(E) | |
*PROCESS DYNAM <-- cannot use with C run-time | |
* Be sure to use a "static" CALL for C run-time routines | |
ID DIVISION. | |
PROGRAM-ID. 'COB$C'. | |
AUTHOR. JOHN MCKOWN. | |
INSTALLATION. UICI LIFE INSURANCE CENTER. | |
DATE-WRITTEN. | |
DATE-COMPILED. | |
SECURITY. NONE. | |
* | |
ENVIRONMENT DIVISION. | |
CONFIGURATION SECTION. | |
SOURCE-COMPUTER. IBM-370. | |
OBJECT-COMPUTER. IBM-370. | |
SPECIAL-NAMES. | |
INPUT-OUTPUT SECTION. | |
FILE-CONTROL. | |
I-O-CONTROL. | |
* APPLY WRITE-ONLY ON REPORT1-FD. | |
* | |
DATA DIVISION. | |
* | |
WORKING-STORAGE SECTION. | |
* | |
LOCAL-STORAGE SECTION. | |
01 SYSIN-INPUT PIC X(80). | |
01 USERID-PLUS-1. | |
05 USERID PIC X(8). | |
05 FILLER PIC X. | |
77 STRING-POINTER POINTER | |
VALUE IS NULL. | |
77 STRING-VALUE PIC X(100) | |
VALUE IS SPACES. | |
77 INTEGER-VALUE PIC S9(9) BINARY | |
VALUE IS +1. | |
77 PACKED-VALUE PIC S9(5) PACKED-DECIMAL | |
VALUE IS +2. | |
77 FLOAT-VALUE COMP-2. | |
77 SSCANF-FORMAT-1 PIC X(100) | |
VALUE IS Z"%d %D(5,0) %e". | |
77 SSCANF-FORMAT-2 PIC X(100) | |
VALUE IS Z"%s". | |
LINKAGE SECTION. | |
01 INPUT-PARM PIC X(8). | |
* | |
PROCEDURE DIVISION USING INPUT-PARM. | |
START-UP. | |
MOVE LOW-VALUES TO USERID-PLUS-1. | |
CALL 'cuserid' USING USERID-PLUS-1 | |
RETURNING STRING-POINTER. | |
* NOTE THAT cuserid TERMINATES THE USERID | |
* WITH A LOW-VALUE 0x00 CHARACTER. | |
* TRANSLATE THAT TO A BLANK. | |
CALL 'strlen' USING USERID-PLUS-1 | |
RETURNING INTEGER-VALUE. | |
INSPECT USERID REPLACING ALL LOW-VALUES | |
BY SPACES. | |
DISPLAY '~' USERID-PLUS-1(1:INTEGER-VALUE) '~' | |
UPON SYSOUT. | |
DISPLAY '~' USERID '~' | |
UPON SYSOUT. | |
MOVE +1 TO INTEGER-VALUE. | |
MOVE +2 TO PACKED-VALUE. | |
MOVE +3.5 TO FLOAT-VALUE. | |
DISPLAY 'ENTER 3 NUMBERS:' UPON SYSOUT. | |
ACCEPT SYSIN-INPUT FROM SYSIN. | |
DISPLAY SYSIN-INPUT UPON SYSOUT. | |
CALL 'sscanf' USING SYSIN-INPUT, | |
SSCANF-FORMAT-1, | |
INTEGER-VALUE, | |
PACKED-VALUE, | |
FLOAT-VALUE. | |
DISPLAY 'SSCANF RC=' RETURN-CODE UPON SYSOUT. | |
DISPLAY "INTEGER-VALUE " INTEGER-VALUE UPON SYSOUT. | |
DISPLAY "PACKED-VALUE " PACKED-VALUE UPON SYSOUT. | |
DISPLAY "FLOAT-VALUE " FLOAT-VALUE UPON SYSOUT. | |
CALL 'sscanf' USING SYSIN-INPUT, | |
SSCANF-FORMAT-2, | |
STRING-VALUE. | |
DISPLAY 'SSCANF RC=' RETURN-CODE UPON SYSOUT. | |
DISPLAY STRING-VALUE UPON SYSOUT. | |
* | |
* The C subroutines may have implicitly set RETURN-CODE | |
* to some value. So I'll just set it to zero. | |
* | |
MOVE ZERO TO RETURN-CODE. | |
GOBACK | |
. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment