You are on page 1of 21

//dsrn033b job notify=&sysuid,region=0m

//dbdgen proc sys2=


/***********dbd jcl for ims *****************************************/

//c exec pgm=asma90,region=0m,


// parm=(object,nodeck,nodbcs,'size(max,above)')
//syslib dd dsn=ims810.&sys2.sdfsmac,disp=shr
//syslin dd unit=sysda,disp=(,pass),
// space=(80,(100,100),rlse),
// dcb=(blksize=80,recfm=f,lrecl=80)
//sysprint dd sysout=*,dcb=blksize=1089,
// space=(121,(300,300),rlse,,round)
//sysut1 dd unit=sysda,disp=(,delete),
// space=(cyl,(10,5))
//l exec pgm=iewl,parm='xref,list',
// cond=(0,ne,c),region=4m
//syslin dd dsn=*.c.syslin,disp=(old,delete)
//sysprint dd sysout=*,dcb=blksize=1089,
// space=(121,(90,90),rlse)
//syslmod dd disp=shr,
// dsn=ims810.&sys2.dbdlib(&mbr)
//sysut1 dd unit=(sysda,sep=(syslmod,syslin)),
// space=(1024,(100,10),rlse),disp=(,delete)
// pend
//step1 exec dbdgen,mbr=hosdbd1

//c.sysin dd dsn=dsrn033.ims.pgm(&mbr),disp=shr
//l.syslmod dd dsn=dsrn033.dbdlib(&mbr),disp=shr
//

/*********************** psb jcl for ims ******************************/

//dsrn033b job notify=&sysuid,region=0m,prty=15


//psbgen proc rgn=0m,sys2=
//c exec pgm=asma90,region=&rgn,
// parm=(object,nodeck,nodbcs,'size(max,above)')
//syslib dd dsn=ims810.&sys2.sdfsmac,disp=shr
//syslin dd unit=sysda,disp=(new,pass),
// space=(80,(100,100),rlse),
// dcb=(blksize=80,recfm=f,lrecl=80)
//sysprint dd sysout=*,dcb=blksize=1089,
// space=(121,(300,300),rlse,,round)
//sysut1 dd unit=sysda,disp=(,delete),
// space=(cyl,(10,5))
//l exec pgm=iewl,parm='xref,list',
// cond=(0,ne,c),region=4m
//syslin dd dsn=*.c.syslin,disp=(old,delete)
//sysprint dd sysout=*,dcb=blksize=1089,
// space=(121,(90,90),rlse)
//syslmod dd disp=shr,dsn=ims810.&sys2.psblib(&mbr)
//sysut1 dd unit=(sysda,sep=(syslmod,syslin)),
// space=(1024,(100,10),rlse),disp=(,delete)
// pend
//step1 exec psbgen,mbr=hoskpsb
//c.sysin dd dsn=dsrn033.ims.pgm(&mbr),disp=shr
//l.syslmod dd dsn=dsrn033.psblib(&mbr),disp=shr
//
**************************** bottom of data ****************************

/******************** ims compile jcl ******************************/

//dsrn033b job class=a,msgclass=h,notify=dsrn033


// jcllib order=(dsrc999.proc.pds)
//cl exec ibmzcb,parm=(nolist,source)
//pli.sysin dd dsn=dsrn033.ims.pgm(hosload),disp=shr
//bind.syslmod dd dsn=dsrn033.load(hosload),disp=shr
//sdfsresl dd dsn=ims810.sdfsresl,disp=shr
//proclib dd dsn=dsrc999.proc.pds,disp=shr
//bind.sysin dd *
include proclib(plitdli)
/*
**************************** bottom of data ****************************

/************************* ims run jcl ***************************

//dsrn033b job notify=&sysuid,prty=15,time=(0,10)


//dlibatch proc mbr=,psb=,buf=7,
// spie=0,test=0,excpvr=0,rst=0,prld=,
// srch=0,ckptid=,mon=n,loga=0,fmto=t,
// imsid=,swap=,dbrc=,irlm=,irlmnm=,
// bko=n,iob=,ssm=,aparm=,
// rgn=4m,sys2=,
// lockmax=,gsgname=,tminame=,
// rrs=n,imsplex=
//g exec pgm=dfsrrc00,region=&rgn,
// parm=(dli,&mbr,&psb,&buf,
// &spie&test&excpvr&rst,&prld,
// &srch,&ckptid,&mon,&loga,&fmto,
// &imsid,&swap,&dbrc,&irlm,&irlmnm,
// &bko,&iob,&ssm,'&aparm',
// &lockmax,&gsgname,&tminame,
// &rrs,&imsplex)
//steplib dd dsn=ims810.&sys2.sdfsresl,disp=shr
// dd dsn=ims810.&sys2.pgmlib,disp=shr
// dd dsn=dsrn033.load(hosload),disp=shr
//dfsreslb dd dsn=ims810.&sys2.sdfsresl,disp=shr
//ims dd dsn=dsrn033.psblib(&psb),disp=shr
// dd dsn=dsrn033.dbdlib(&dbd),disp=shr
//imslogr dd dsn=dsrn033.ims.log1,disp=(mod,keep),
// dcb=(recfm=vb,blksize=1920,
// lrecl=1916,bufno=2),space=(trk,(5,5))
//iefrder dd dsn=dsrn033.ims.log2,disp=(mod,keep),
// dcb=(recfm=vb,blksize=1920,
// lrecl=1916,bufno=2),space=(trk,(5,5))
//sysudump dd sysout=*,
// dcb=(recfm=fba,lrecl=121,blksize=605),
// space=(605,(500,500),rlse,,round)
//imsmon dd dummy
//anil1 dd dsn=dsrn033.ks.db,disp=shr
//anil2 dd dsn=dsrn033.es.db,disp=shr
//flfla dd dsn=dsrn033.ims.ps1,disp=shr
// pend
//step1 exec dlibatch,mbr=hosload,psb=hoskpsb,dbd=hosdbd1,dbrc=n
//sysprint dd sysout=*
//g.sysprint dd sysout=*
//g.dfsvsamp dd *
vsrbf=2048,4
/*
//sysin dd *
2
/*
//
**************************** bottom of data ****************************

/******************* programs *********************************/

/***************** dbd coding for deleting records *///////

***************************** top of data ******************************


print nogen
dbd name=hosdbd1,access=(hisam,vsam)
dataset dd1=anil1,ovflw=anil2,device=3390
segm name=hospital,parent=0,bytes=40
field name=(hospname,seq,u),bytes=20,start=1,type=c
field name=address,bytes=20,start=21,type=c
segm name=ward,parent=hospital,bytes=15
field name=(wardno,seq,u),bytes=2,start=1,type=c
field name=wardtype,bytes=10,start=3,type=c
field name=wardaval,bytes=3,start=13,type=c
segm name=patient,parent=ward,bytes=25
field name=(patid,seq,u),bytes=5,start=1,type=c
field name=patname,bytes=20,start=6,type=c
dbdgen
finish
end
**************************** bottom of data ****************************

/************************ dbd for hdam **********************

***************************** top of data ******************************


print nogen
dbd name=hospdbd,access=(hdam,vsam), x
rmname=(dfshdc10,1,5,100)
dataset dd1=anil,device=3390
segm name=hospital,parent=0,bytes=40
field name=(hospname,seq,u),bytes=20,start=1,type=c
field name=address,bytes=20,start=21,type=c
segm name=ward,parent=hospital,bytes=15
field name=(wardno,seq,u),bytes=2,start=1,type=c
field name=wardtype,bytes=10,start=3,type=c
field name=wardaval,bytes=3,start=13,type=c
segm name=patient,parent=ward,bytes=25
field name=(patid,seq,u),bytes=5,start=1,type=c
field name=patname,bytes=20,start=6,type=c
dbdgen
finish
end

/**********************psb code

***************************** top of data ******************************


print nogen
pcb type=db,dbdname=hospdbd,keylen=27,procopt=l
senseg name=hospital,parent=0
senseg name=ward,parent=hospital
senseg name=patient,parent=ward
psbgen lang=pli,psbname=emppsb
end
**************************** bottom of data ****************************

/************************ psb

***************************** top of data ******************************


print nogen
pcb type=db,dbdname=hospdbd,keylen=27,procopt=a
senseg name=hospital,parent=0
senseg name=ward,parent=hospital
senseg name=patient,parent=ward
psbgen lang=pli,psbname=emppsb1
end
**************************** bottom of data ****************************

/***************************psb

***************************** top of data ******************************


print nogen
pcb type=db,dbdname=hospdbd,keylen=27,procopt=a
senseg name=hospital,parent=0
senseg name=ward,parent=hospital
senseg name=patient,parent=ward
psbgen lang=pli,psbname=h1p
end
**************************** bottom of data ****************************
/*********************** program 1

/***************************************************************/
/* program to load records into esds file as database*/
/**************************************************************/
hosload: proc(hosp_pcb) options(main);

dcl flfla file record input;

dcl 1 file_rec, /* input file description */


3 seg_code char(02),
3 in_rec char(78);

dcl 1 hosp_rec, /* input file description */


3 hosp_name char(20),
3 hosp_addr char(20);

dcl 1 ward_rec,
3 ward_no char(02),
3 ward_name char(10),
3 ward_aval char(03);

dcl 1 pat_rec,
3 pat_id char(05),
3 pat_name char(20);

dcl mo_da bit(01) init ('1'b);

dcl 1 hosp_pcb,
3 io_dbd_name char(08),
3 io_segment_level char(02),
3 io_status_code char(02),
3 io_proc_option char(04),
3 filler fixed bin(31),
3 io_segment_name char(08),
3 io_key_length fixed bin(31),
3 io_num_sen_seg fixed bin(31),
3 io_pcb_key char(10);

dcl 1 dli_function,
5 dli_isrt char(04) init('isrt');

dcl 1 hosp_ssa char(09) init('hospital ');


dcl 1 ward_ssa char(09) init('ward ');
dcl 1 pat_ssa char(09) init('patient ');

dcl 1 cnt fixed bin(31,0) init(4);


dcl 1 cnt1 fixed bin(31,0) init(3);

dcl plitdli entry external;

on endfile(flfla)
begin;
mo_da='0'b;
put skip list('end of file');
end;

open file(flfla);

read file(flfla) into(file_rec);

do while(mo_da);

select (seg_code);
when('01')
call hosp_proc;
when('02')
call ward_proc;
when('03')
call pat_proc;
otherwise
put skip list ('invalid record type _ ', file_rec );
end;

read file(flfla) into(file_rec);

end;

hosp_proc:proc;

hosp_rec = in_rec;
hosp_name=substr(in_rec,1,20);
hosp_addr=substr(in_rec,21,40);
put skip list('in_rec-->',in_rec);
put skip list('hos_name-->',hosp_name);
put skip list('hos_addr-->',hosp_addr);
call plitdli (cnt,
dli_isrt,
hosp_pcb,
hosp_rec,
hosp_ssa
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level);
put skip list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);

if ( io_status_code �= ' ' )


then do;
put skip list ('invalid ', io_status_code);
end;
else do;
put skip list ('valid ', io_status_code);
end;

end hosp_proc;
ward_proc:proc;

ward_rec = in_rec;
ward_no=substr(in_rec,1,2);
ward_name=substr(in_rec,3,10);
ward_aval=substr(in_rec,13,3);

put skip list('in_rec-->',in_rec);


put skip list('ward_no-->',ward_no);
put skip list('ward_name-->',ward_name);
put skip list('ward_aval-->',ward_aval);
call plitdli (cnt,
dli_isrt,
hosp_pcb,
ward_rec,
ward_ssa
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level);
put skip list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);

if ( io_status_code �= ' ' )


then do;
put skip list ('invalid ', io_status_code);
end;
else do;
put skip list ('valid ', io_status_code);
end;

end ward_proc;

pat_proc:proc;

pat_rec = in_rec;
pat_id=substr(in_rec,1,5);
pat_name=substr(in_rec,6,20);
put skip list('in_rec-->',in_rec);
put skip list('pat_id-->',pat_id);
put skip list('pat_name-->',pat_name);
call plitdli (cnt,
dli_isrt,
hosp_pcb,
pat_rec,
pat_ssa
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level);
put skip list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);

if ( io_status_code �= ' ' )


then do;
put skip list ('invalid ', io_status_code);
end;
else do;
put skip list ('valid ', io_status_code);
end;

end pat_proc;

end hosload;
**************************** bottom of data ****************************

/********************* program2

***************************** top of data ******************************


/********************************************************************/
/*to read record from database using procoption=a
using gu as dli function will read first record */
/*******************************************************************/
hosread: proc(hosp_pcb) options(main);

dcl 1 hosp_rec, /* io area description */


3 hosp_name char(20),
3 hosp_addr char(20);

/*dcl 1 ward_rec,
3 ward_no char(02),
3 ward_name char(10),
3 ward_aval char(03);
dcl 1 pat_rec,
3 pat_id char(05),
3 pat_name char(20); */

dcl 1 hosp_pcb,
3 io_dbd_name char(08),
3 io_segment_level char(02),
3 io_status_code char(02),
3 io_proc_option char(04),
3 filler fixed bin(31),
3 io_segment_name char(08),
3 io_key_length fixed bin(31),
3 io_num_sen_seg fixed bin(31),
3 io_pcb_key char(10);
dcl 1 dli_function,
5 dli_gu char(04) init('gu ');

dcl 1 hosp_pcb,
3 io_dbd_name char(08),
3 io_segment_level char(02),
3 io_status_code char(02),
3 io_proc_option char(04),
3 filler fixed bin(31),
3 io_segment_name char(08),
3 io_key_length fixed bin(31),
3 io_num_sen_seg fixed bin(31),
3 io_pcb_key char(10);

dcl 1 dli_function,
5 dli_gu char(04) init('gu ');

/* unqualified ssa 9th character is blank*/


dcl 1 hosp_ssa char(09) init('hospital ');
/*dcl 1 ward_ssa char(09) init('ward ');
dcl 1 pat_ssa char(09) init('patient '); */

dcl 1 cnt fixed bin(31,0) init(4);


dcl 1 cnt1 fixed bin(31,0) init(3);

dcl plitdli entry external;

call plitdli (cnt,


dli_gu,
hosp_pcb,
hosp_rec,
hosp_ssa
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level); put skip
list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);
put skip list( 'hosp_rec=', hosp_rec);

if ( io_status_code �= ' ' )


then do;
put skip list ('invalid ', io_status_code);
end;
else do;
put skip list ('valid ', io_status_code);
end;
end hosread;

*************************** bottom of data ****************************


/******************* program3....

***************************** top of data ******************************


/********************************************************************/
/*to read record from database using procoption=a
using gu as dli function will read first record */
/*******************************************************************/
hosrep: proc(hosp_pcb) options(main);

dcl 1 hosp_rec, /* io area description */


3 hosp_name char(20),
3 hosp_addr char(20);

dcl 1 hosp_pcb,
3 io_dbd_name char(08),
3 io_segment_level char(02),
3 io_status_code char(02),
3 io_proc_option char(04),
3 filler fixed bin(31),
3 io_segment_name char(08),
3 io_key_length fixed bin(31),
3 io_num_sen_seg fixed bin(31),
3 io_pcb_key char(10);

dcl 1 dli_function,
5 dli_ghu char(04) init('ghu '),
5 dli_repl char(04) init('repl');
dcl 1 hosp_ssa,
5 hos_seg char(09) init('hospital('),
5 fldname char(10) init('hospname ='),
5 val char(20) init('lalithabai hospital '),
5 f1 char(1) init(')');

dcl 1 cnt fixed bin(31,0) init(4);


dcl 1 cnt1 fixed bin(31,0) init(3);

dcl plitdli entry external;

call plitdli (cnt,


dli_ghu,
hosp_pcb,
hosp_rec,
hosp_ssa
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level);
put skip list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);
put skip list( 'hosp_rec=', hosp_rec);

hosp_addr='chicago southamerica';

call plitdli (cnt,


dli_repl,
hosp_pcb,
hosp_rec
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level);
put skip list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);
put skip list( 'hosp_rec=', hosp_rec);
if ( io_status_code �= ' ' )
then do;
put skip list ('invalid ', io_status_code);
end;
else do;
put skip list ('valid ', io_status_code);
end;

end hosrep;

*************************** bottom of data ****************************

/***************** program4......

***************************** top of data ******************************


/********************************************************************/
/*to read record from database using procoption=a
using gu as dli function will read first record */
/*******************************************************************/
hosdel1: proc(hosp_pcb) options(main);

dcl 1 hosp_rec, /* io area description */


3 hosp_name char(20),
3 hosp_addr char(20);

dcl 1 ward_rec,
3 ward_no char(02),
3 ward_name char(10),
3 ward_aval char(03);
dcl 1 pat_rec,
3 pat_id char(05),
3 pat_name char(20);

dcl 1 hosp_pcb,
3 io_dbd_name char(08),
3 io_segment_level char(02),
3 io_status_code char(02),
3 io_proc_option char(04),
3 filler fixed bin(31),
3 io_segment_name char(08),
3 io_key_length fixed bin(31),
3 io_num_sen_seg fixed bin(31),
3 io_pcb_key char(27);

dcl 1 dli_function,
5 dli_ghu char(04) init('ghu '),
5 dli_dlet char(04) init('dlet');
dcl 1 hosp_ssa,
5 hos_seg char(09) init('hospital('),
5 fldname char(10) init('hospname ='),
5 val char(20) init('lalithabai hospital '),
5 f1 char(1) init(')');

dcl 1 ward_ssa,
5 ward_seg char(09) init('ward ('),
5 fldname char(10) init('wardno ='),
5 val char(02) init('a2'),
5 f1 char(1) init(')');
dcl 1 pat_ssa,
5 pat_seg char(09) init('patient ('),
5 fldname char(10) init('patid ='),
5 val char(05) init('a0002'),
5 f1 char(1) init(')');
dcl 1 cnt fixed bin(31,0) init(6);
dcl 1 cnt1 fixed bin(31,0) init(3);

dcl plitdli entry external;

call plitdli (cnt,


dli_ghu,
hosp_pcb,
pat_rec,
hosp_ssa,
ward_ssa,
pat_ssa
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level);
put skip list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);
put skip list( 'hosp_rec=', hosp_rec);

call plitdli (cnt1,


dli_dlet,
hosp_pcb,
pat_rec
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level);
put skip list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);
/* put skip list( 'hosp_rec=', hosp_rec); */
if ( io_status_code �= ' ' )
then do;
put skip list ('invalid ', io_status_code);
end;
else do;
put skip list ('valid ', io_status_code);
end;

end hosdel1;

/********************* program5......

***************************** top of data ******************************


/********************************************************************/
/*to read record from database using procoption=a
using gn as dli function will read from first to last record */
/*******************************************************************/
hosgn: proc(hosp_pcb) options(main);

dcl 1 hosp_rec, /* io area description */


3 hosp_name char(20),
3 hosp_addr char(20);

dcl 1 hosp_pcb,
3 io_dbd_name char(08),
3 io_segment_level char(02),
3 io_status_code char(02),
3 io_proc_option char(04),
3 filler fixed bin(31),
3 io_segment_name char(08),
3 io_key_length fixed bin(31),
3 io_num_sen_seg fixed bin(31),
3 io_pcb_key char(27);

dcl 1 dli_function,
5 dli_gn char(04) init('gn ');

/* unqualified ssa 9th character is blank*/


dcl 1 hosp_ssa char(09) init('hospital ');

dcl 1 cnt fixed bin(31,0) init(4);


dcl 1 cnt1 fixed bin(31,0) init(3);

dcl plitdli entry external;

do until(io_status_code = 'gb');
do;
call plitdli (cnt,
dli_gn,
hosp_pcb,
hosp_rec,
hosp_ssa
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level);
put skip list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);
put skip list( 'hosp_rec=', hosp_rec);

if ( io_status_code �= ' ' )


then do;
put skip list ('invalid ', io_status_code);
end;
else do;
put skip list ('valid ', io_status_code);
end;
end;
end;
end hosgn;

*************************** bottom of data ****************************

/****************** program 6......

***************************** top of data ******************************


/********************************************************************/
/*to read record from database using procoption=a
using gu first and then gn...will read the cursor at the gu pointed
record
as dli function will read first record */
/*******************************************************************/
hosgugn: proc(hosp_pcb) options(main);

dcl 1 hosp_rec, /* io area description */


3 hosp_name char(20),
3 hosp_addr char(20);

dcl 1 hosp_pcb,
3 io_dbd_name char(08),
3 io_segment_level char(02),
3 io_status_code char(02),
3 io_proc_option char(04),
3 filler fixed bin(31),
3 io_segment_name char(08),
3 io_key_length fixed bin(31),
3 io_num_sen_seg fixed bin(31),
3 io_pcb_key char(27);

dcl 1 dli_function,
5 dli_gu char(04) init('gu '),
5 dli_gn char(04) init('gn ');

dcl 1 ho_seg char(09) init('hospital ');

dcl 1 hosp_ssa,
5 hos_seg char(09) init('hospital('),
5 fldname char(10) init('hospname ='),
5 val char(20) init('kasthuribai hospital'),
5 f1 char(1) init(')');

dcl 1 cnt fixed bin(31,0) init(4);


dcl 1 cnt1 fixed bin(31,0) init(3);

dcl plitdli entry external;

call plitdli (cnt,


dli_gu,
hosp_pcb,
hosp_rec,
hosp_ssa
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level); put skip
list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);
put skip list( 'hosp_rec=', hosp_rec);

do until(io_status_code = 'gb');
put skip list('no');

call plitdli (cnt,


dli_gn,
hosp_pcb,
hosp_rec,
ho_seg
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level);
put skip list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);
put skip list( 'hosp_rec=', hosp_rec);

if ( io_status_code �= ' ' )


then do;
put skip list ('invalid ', io_status_code);
end;
else do;
put skip list ('valid ', io_status_code);
end;
end;
end hosgugn;

**************************** bottom of data ****************************

/************psb mask......... *******************************************/

***************************** top of data ******************************


print nogen
pcb type=db,dbdname=hosdbd1,keylen=27,procopt=is
senseg name=hospital,parent=0
senseg name=ward,parent=hospital
senseg name=patient,parent=ward
psbgen lang=pli,psbname=ksdspsb
end
**************************** bottom of data ****************************

***************************** top of data ******************************


/********************************************************************/
/* to read record using qualified ssa */
/********************************************************************/
qupat: proc(q) options(main);

dcl 1 hosp_rec, /* io area description */


3 hosp_name char(20),
3 hosp_addr char(20);
dcl 1 ward_rec,
3 ward_no char(02),
3 ward_name char(10),
3 ward_aval char(03);

dcl 1 pat_rec,
3 pat_id char(05),
3 pat_name char(20);
dcl 1 q pointer;
dcl 1 hosp_pcb based(q),
3 io_dbd_name char(08),
3 io_segment_level char(02),
3 io_status_code char(02),
3 io_proc_option char(04),
3 filler fixed bin(31),
3 io_segment_name char(08),
3 io_key_length fixed bin(31),
3 io_num_sen_seg fixed bin(31),
3 io_pcb_key char(27);

dcl 1 dli_function,
5 dli_gu char(04) init('gu ');

/* qualified ssa 9th character is ( */


dcl 1 hosp_ssa,
5 hos_seg char(09) init('hospital('),
5 fldname char(10) init('hospname ='),
5 val char(20) init('kasthuribai hospital'),
5 f1 char(1) init(')');

dcl 1 ward_ssa,
5 ward_seg char(09) init('ward ('),
5 fldname char(10) init('wardno ='),
5 val char(02) init('a2'),
5 f1 char(1) init(')');
dcl 1 pat_ssa,
5 pat_seg char(09) init('patient ('),
5 fldname char(10) init('patid ='),
5 val char(05) init('a0004'),
5 f1 char(1) init(')');
dcl 1 cnt fixed bin(31,0) init(6);
dcl 1 cnt1 fixed bin(31,0) init(3);

dcl plitdli entry external;

call plitdli (cnt,


dli_gu,
q,
pat_rec,
hosp_ssa,
ward_ssa,
pat_ssa
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level);
put skip list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);
put skip list( 'pat_rec=', pat_rec);

if ( io_status_code �= ' ' )


then do;
put skip list ('invalid ', io_status_code);
end;
else do;
put skip list ('valid ', io_status_code);
end;

end qupat;

**************************** bottom of data ****************************

/*********************** program 8.................. ************************/

***************************** top of data ******************************


/********************************************************************/
/*unqualified ssa gu will fetch the first occurance of segment1
/*******************************************************************/
qussa: proc(hosp_pcb) options(main);

dcl 1 hosp_rec, /* io area description */


3 hosp_name char(20),
3 hosp_addr char(20);

dcl 1 hosp_pcb,
3 io_dbd_name char(08),
3 io_segment_level char(02),
3 io_status_code char(02),
3 io_proc_option char(04),
3 filler fixed bin(31),
3 io_segment_name char(08),
3 io_key_length fixed bin(31),
3 io_num_sen_seg fixed bin(31),
3 io_pcb_key char(20);

dcl 1 dli_function,
5 dli_gu char(04) init('gu ');

/* qualified ssa 9th character is ( */


dcl 1 hosp_ssa,
5 hsp_seg char(09) init('hospital('),
5 fldname char(10) init('hospname ='),
5 val char(20) init('kasthuribai hospital'),
5 f1 char(1) init(')');
dcl 1 cnt fixed bin(31,0) init(4);
dcl 1 cnt1 fixed bin(31,0) init(3);

dcl plitdli entry external;

call plitdli (cnt,


dli_gu,
hosp_pcb,
hosp_rec,
hosp_ssa
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level);
put skip list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);
put skip list( 'hosp_rec=', hosp_rec);

if ( io_status_code �= ' ' )


then do;
put skip list ('invalid ', io_status_code);
end;
else do;
put skip list ('valid ', io_status_code);
end;

end qussa;

**************************** bottom of data ****************************

/********************** program 9.... *****************************/

***************************** top of data ******************************


/********************************************************************/
/* level 0 and level 1 are unqulified ssa and level2 is qualified ssa
then also it will fetch specified qualified record*/
/*********************************************************************/
unpat: proc(q) options(main);

dcl 1 hosp_rec, /* io area description */


3 hosp_name char(20),
3 hosp_addr char(20);

dcl 1 ward_rec,
3 ward_no char(02),
3 ward_name char(10),
3 ward_aval char(03);
dcl 1 pat_rec,
3 pat_id char(05),
3 pat_name char(20);
dcl 1 q pointer;
dcl 1 hosp_pcb based(q),
3 io_dbd_name char(08),
3 io_segment_level char(02),
3 io_status_code char(02),
3 io_proc_option char(04),
3 filler fixed bin(31),
3 io_segment_name char(08),
3 io_key_length fixed bin(31),
3 io_num_sen_seg fixed bin(31),
3 io_pcb_key char(27);

dcl 1 dli_function,
5 dli_gu char(04) init('gu ');
/* qualified ssa 9th character is ( */
dcl 1 hosp_ssa char(09) init('hospital ');

dcl 1 ward_ssa char(09) init('ward ');


dcl 1 pat_ssa,
5 pat_seg char(09) init('patient ('),
5 fldname char(10) init('patid ='),
5 val char(05) init('a0004'),
5 f1 char(1) init(')');
dcl 1 cnt fixed bin(31,0) init(6);
dcl 1 cnt1 fixed bin(31,0) init(3);

dcl plitdli entry external;

call plitdli (cnt,


dli_gu,
q,
pat_rec,
hosp_ssa,
ward_ssa,
pat_ssa
);

put skip list('io_dbd_name=' , io_dbd_name);


put skip list('io_segment_level=', io_segment_level);
put skip list('io_status_code=', io_status_code);
put skip list('io_proc_option=', io_proc_option);
put skip list( 'filler=', filler);
put skip list( 'io_segment_name=', io_segment_name);
put skip list( 'io_key_length=', io_key_length);
put skip list( 'io_num_sen_seg=', io_num_sen_seg);
put skip list( 'io_pcb_key=', io_pcb_key);
put skip list( 'pat_rec=', pat_rec);
if ( io_status_code �= ' ' )
then do;
put skip list ('invalid ', io_status_code);
end;
else do;
put skip list ('valid ', io_status_code);
end;

end unpat;

*************************** bottom of data ****************************

You might also like