Rocket® Enterprise Developer (formerly a product of Micro Focus or formerly a product of Open Text) documentation, created before Rocket Software acquired certain products from OpenText, may include outdated references to "Micro Focus" or "OpenText", both of which are trademarks of OpenText or its affiliates. Rocket Software is not affiliated with Micro Focus or OpenText and has since rebranded these products as Rocket® products. You may also encounter outdated links in this documentation. If you do, please contact Rocket Support (support@rocketsoftware.com) for assistance.
Open PL/I DB2 SQL サンプル 2 プログラム
filename: sample2.sqp
sample2: proc options(main);
/* Sample program 2 */
/* Example of using a user defined SQLDA */
/* The database this program uses is the IBMSAMPL database that */
/* your DB2 product uses. You must be able to run the IBM DB2 */
/* demo sample program in order to be able to run this program */
/* Uses a table of the form: */
/* create table project */
/* (projno char(6) not null, */
/* projname varchar(24) not null, */
/* deptno char(3) not null, */
/* respemp char(6) not null, */
/* prstaff dec(5,2), */
/* prstdate date) */
dcl k fixed bin(15);
exec sql include sqlca;
exec sql include sqlda;
exec sql begin declare section;
dcl cnt fixed bin(15);
exec sql end declare section;
sqlsize 6; /* Lets only look at the 1st 6 columns */
allocate sqlda set(sqldapntr); /* sets sqln */
sqldaptr->sqld = 6;
dcl projno char(6) based;
sqldaptr->sqlda.sqlvar(1).sqltype = SQL_TYP_CHAR;
allocate projno set(sqldaptr->sqlda.sqlvar(1).sqldata);
sqldaptr->sqlda.sqlvar(1).sqllen = 6;
dcl projname char(24) var based;
saldaptr->sqlda.sqlvar(2).sqltype = SQL_TYP VARCHAR;
allocate projname set(sqldaptr->sqlda.sqlvar(2).sqldata);
sqldaptr->sqlda.sqlvar(2).sqllen = 24;
dcl deptno char(3) based;
sqldaptr->sqlda.sqlvar(3).sqltype = SQL_TYP_CHAR;
allocate deptno set(sqldaptr->sqlda.sqlvar(3).sqldata);
sqldaptr->sqlda.sqlvar(3).sqllen = 3;
dcl respemp char(6) based;
sqldaptr->sqlda.sqlvar(4).sqltype = SQL_TYP_CHAR;
allocate respemp set(sqldaptr->sqlda.sqlvar(4).sqldata);
sqldaptr->sqlda.sqlvar(4).sqllen = 6;
dcl prstaff float(24) binary based;
sqldaptr->sqlda.sqlvar(5).sqltype = SQL_TYP_FLOAT;
allocate prstaff set(sqldaptr->sqlda.salvar(5).sqldata);
sqldaptr->sqlda.sqlvar(5).sqllen = 8;
dcl prstdate char(10) based;
sqldaptr->sqlda.sqlvar(6).sqltype = SQL_TYP_CHAR;
allocate prstdate set(sqldaptr->sqlda.sqlvar(6).sqldata);
sqldaptr->sqlda.sqlvar(6).sqllen = 10;
exec sql connect to IBMSAMPL;
if SQLCA.SQLCODE < 0 THEN do;
put skip list('Connect failed');
return;
end;
else put skip list('Connect OK');
put skip;
exec sql whenever sqlerror goto err_label;
put skip list('Projno Projname Dpt Respemp Prst Prstdate');
put skip;
exec sql declare cl cursor for select * from project;
exec sql open cl;
exec sql whenever not found go to done;
do while ('1'b1); /* do till fetch raises not found error */
exec sql fetch c1 using descriptor :sqldaptr;
put edit (sqldaptr->sqlda.sqlvar(1).sqldata->projno,
sqldaptr->sqlda.sqlvar(2).sqldata->projname,
sqldaptr->sqlda.sqlvar(3).sqldata->deptno,
sqldaptr->sqlda.sqlvar(4).sqldata->respemp,
sqldaptr->sqlda.sqlvar(5).sqldata->prstaff,
sqldaptr->sqlda.sqlvar(6).sqldata->prstdate)
(a(6),x,a(24),x,a(3),x,a(6),x,f(5,2),x,a(10));
put skip;
end;
done:
exec sql whenever not found continue; /* turn off */
put skip;
return;
err_label:
put skip list('Branched to err_label');
put skip list('sqlcode =', sqlcode);
put skip list('sqlerrm =' , sqlerrm);
put skip list('sqlstate =', sqlstate);
return;
end sample2;
出力
Connect OK Projno Projname Opt Respemp Prst Prstdate AD3100 ADMIN SERVICES D01 000010 6.50 01/01/1982 AD3110 GENERAL ADMIN SYSTEMS D21 000070 6.00 01/01/1982 AD3111 PAYROLL PROGRAMMING D21 000230 2.00 01/01/1982 AD3112 PERSONNEL PROGRAMMING D21 000250 1.00 01/01/1982 AD3113 ACCOUNT PROGRAMMING D21 000270 2.00 01/01/1982 1F1000 QUERY SERVICES CO1 000030 2.00 01/01/1982 1F2000 USER EDUCATION CO1 000030 1.00 01/01/1982 MA2100 WELD LINE AUTOMATION DO1 000010 12.00 01/01/1982 MA2110 W L PROGRAMMING D11 000060 9.00 01/01/1982 MA2111 W L PROGRAM DESIGN D11 000220 2.00 01/01/1982 MA2112 W L ROBOT DESIGN D11 000150 3.00 01/01/1982 MA2113 W L PROD CONT PROGS D11 000160 3.00 02/15/1982 OP1000 OPERATION SUPPORT E01 000050 6.00 01/01/1982 OP1010 OPERATION E11 000090 5.00 01/01/1982 OP2000 GEN SYSTEMS SERVICES E01 000050 5.00 01/01/1982 OP2010 SYSTEMS SUPPORT E21 000100 4.00 01/01/1982 OP2011 SCP SYSTEMS SUPPORT E21 000320 1.00 01/01/1982 0P2012 APPLICATIONS SUPPORT E21 000330 1.00 01/01/1982 0P2013 DB/DC SUPPORT E21 000340 1.00 01/01/1982 PL2100 WELD LINE PLANNING B01 000020 1.00 01/01/1982