Here is a sample PL/I program for SCLM service procedures.
FLMPLSM: PROC (PARMS) OPTIONS(MAIN NOEXECOPS);
/********************************************************************/
/* */
/* PL/I PROGRAM WHICH CALLS SCLM SERVICES */
/* */
/* PROCEDURES IN THIS PROGRAM: */
/* */
/* -SCLSTRT START SCLM SESSION */
/* -SCLINIT INIT SCLM_ID */
/* -SCLEDIT EDIT SCLM SOURCE MEMBER */
/* -SCLFREE FREE SCLM_ID */
/* -SCLEND END SCLM SESSION */
/* */
/********************************************************************/
/* */
/* DECLARATIONS */
/* */
/********************************************************************/
DCL PLIRETV BUILTIN ;
DCL FLMLNK ENTRY EXTERNAL OPTIONS(ASM,INTER,RETCODE) ;
DCL ISPLINK ENTRY EXTERNAL OPTIONS(ASM,INTER,RETCODE) ;
/********************************************************************/
/* PARAMETERS USED IN THIS PROGRAM */
/********************************************************************/
DCL PARMS CHAR(80) VARYING;
DCL 1 PARM,
2 PARM1 CHAR(8) INIT('') ,
2 DELM1 CHAR(1) INIT('') ,
2 PARM2 CHAR(8) INIT('') ,
2 DELM2 CHAR(1) INIT('') ,
2 PARMX CHAR(62) INIT('') ;
/********************************************************************/
/* VARIABLES USED BY SCLM SERVICES */
/********************************************************************/
DCL SERVICE CHAR(8) INIT(' ') ;
DCL APPL_ID CHAR(8) INIT(' ') ;
DCL SCLM_ID CHAR(8) INIT(' ') ;
DCL PRJ_DEF CHAR(8) INIT(' ') ;
DCL PROJECT CHAR(8) INIT(' ') ;
DCL MSG_LINE CHAR(80) INIT(' ') ;
DCL Y CHAR(24) INIT('Y '),
C CHAR(24) INIT('C '),
N CHAR(24) INIT('N ');
DCL SLMLIB CHAR(8),
SLMLIB2 CHAR(8),
SLMLIB3 CHAR(8),
SLMLIB4 CHAR(8),
ALL_HIER CHAR(24),
IMAC CHAR(8),
PROF CHAR(8),
CONFIRM CHAR(24),
MIX CHAR(24),
WS CHAR(24),
PRESERVE CHAR(24),
AUTHCODE CHAR(8),
CHGCODE CHAR(8),
VOLSER CHAR(8),
SLMPROJ CHAR(8),
SLMALTP CHAR(8),
SLMTYP CHAR(8),
SLMMEM CHAR(8),
MSGLIST CHAR(80);
DCL BLNK8 CHAR(8) INIT(' '),
DDNAME CHAR(8),
DONE BIT(1);
/********************************************************************/
/* MAIN PROGRAM LOGIC */
/********************************************************************/
PARM1 = 'PROJECT ';
PARM2 = 'ALT_PROJ';
PROJECT = PARM1;
PRJ_DEF = PARM2;
IF PRJ_DEF = ' ' THEN PRJ_DEF = PROJECT ;
CALL SCLSTRT ;
CALL SCLINIT ;
CALL SCLEDIT ;
CALL SCLFREE ;
CALL SCLEND ;
/********************************************************************/
/* GENERATE AN APPLICATION ID FOR SCLM SESSION */
/********************************************************************/
SCLSTRT: PROC ;
SERVICE = 'START';
APPL_ID = '';
CALL FLMLNK (SERVICE , APPL_ID) ;
RETCODE = PLIRETV() ;
END SCLSTRT ;
/********************************************************************/
/* INITIALIZE SCLM ID FOR SERVICES */
/********************************************************************/
SCLINIT: PROC ;
SERVICE = 'INIT' ;
SCLM_ID = '';
CALL FLMLNK (SERVICE , APPL_ID
, PROJECT
, PRJ_DEF
, SCLM_ID
, MSG_LINE) ;
RETCODE = PLIRETV() ;
END SCLINIT ;
/********************************************************************/
/* EDIT A MEMBER IN THE PROJECT HIERARCHY */
/********************************************************************/
SCLEDIT: PROC ;
SLMLIB = 'DEV1 ';
SLMLIB2 = ' ';
SLMLIB3 = ' ';
SLMLIB4 = ' ';
SLMTYP = 'SOURCE ';
SLMMEM = 'MEMBER1 ';
SERVICE = 'EDIT ';
DDNAME = 'EDIT ';
ALL_HIER = N;
IMAC = ' ';
PROF = ' ';
CONFIRM = N;
MIX = N;
WS = N;
PRESERVE = 'Y';
AUTHCODE = ' ';
CHGCODE = ' ';
VOLSER = BLNK8;
CALL FLMLNK(SERVICE,SCLM_ID,SLMLIB,
SLMLIB2,SLMLIB3,SLMLIB4,
SLMTYP,SLMMEM,ALL_HIER,
IMAC,PROF,CONFIRM,MIX,WS,
PRESERVE,AUTHCODE,CHGCODE,
VOLSER,DDNAME);
RETCODE = PLIRETV() ;
IF RETCODE > 0 THEN
CALL ISPLINK('BROWSE ','SCLM.MSGS ');
END SCLEDIT ;
/*********************************************************************/
/* FREE SCLM ID */
/*********************************************************************/
SCLFREE: PROC ;
SERVICE = 'FREE ' ;
CALL FLMLNK (SERVICE, SCLM_ID
, MSG_LINE) ;
RETCODE = PLIRETV() ;
END SCLFREE ;
/*********************************************************************/
/* END AN SCLM SERVICES SESSION */
/*********************************************************************/
SCLEND: PROC ;
SERVICE = 'END ' ;
CALL FLMLNK (SERVICE, APPL_ID
, MSG_LINE ) ;
RETCODE = PLIRETV() ;
END SCLEND ;
END;