




已阅读5页,还剩237页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,.,TXSeries(CICS)应用开发培训,2,.,课程安排(Agenda),Topic1:TXSeries(CICS)IntroductionandOverviewTopic2:TXSeries(CICS)SystemAdministrationTopic3:TXSeries(CICS)ServerDevelopmentTopic4:TXSeries(CICS)Client(ECI)DevelopmentTopic5:TXSeries(CICS)InterSystemCommunication(ISC)Topic6:TXSeries(CICS)ProblemDeterminationTopic7:EasyCicsDevelopmentNotes!AlltopicisbasedonOpenSystemAlldetailedactionsisbasedonIBMAIXSystemAssumedPremiss!HavingthebasicknowledgesaboutTxseries(CICS)HavingcodingexperienceaboutC,3,.,Topic1:TXSeries(CICS)IntroductionandOverviewTopic2:TXSeries(CICS)SystemAdministrationTopic3:TXSeries(CICS)ServerDevelopmentTopic4:TXSeries(CICS)Client(ECI)DevelopmentTopic5:TXSeries(CICS)InterSystemCommunication(ISC)Topic6:TXSeries(CICS)ProblemDeterminationTopic7:EasyCicsDevelopment,课程安排(Agenda),4,.,三层次的客户机/服务器架构着重于客户机对应用服务的请求,而有别于二层次架构着重于数据请求(连接数,通讯量),三层次的客户机/服务器架构基础,5,.,logical3-tierandphysical3-tier关系,6,.,CICS:胜任实现三层次架构,是一个强大的交易中间件,7,.,概念及结构逻辑交易处理机制管理逻辑资源机制存储机制(sharedmem,sharedpool,privatepool,regionpooletc.)数据交换机制锁存机制队列机制程序控制机制安全机制扩展机制(UserExit)编程接口.,丰富的机制和统一的编程接口,8,.,IBMTXSeries(CICS)Overview,9,.,TXSeries(CICS)Server层次结构,10,.,IBMTXSeries(CICS)典型架构,11,.,TXSeries事务事务监视器(Transactionprocessingmonitors)DCE(DistributedComputingEnvironment)RPC(RemoteProcedureCall)SFS(StructuredFileServer)CICSREGIONXALUW(LogicalUnitworking),CICS相关的基本概念,12,.,CICSDCE-RPCOnly环境DCE-RPC是DCECellDirectoryServer、DCESecurityServer的基础DCE支持的核心是RPC。RPC提供了分布式系统中两个进程间的一种网络透明通信形式。进程使用RPC以完全相同的方式进行通信。,DCE服务-RPC,13,.,l结构化文件服务器(SFS)SFS是一个面向记录的文件系统,它在支持大量并行用户和可跨越多个磁盘的大文件时,提供事务完整性和基于日志的恢复。SFS能够提供数据处理与管理功能。数据处理功能提供访问和修改数据所必需的标准操作:读、插入、更新、删除、锁定、解锁等等。管理功能允许程序查询和修改SFS文件和卷、复制和删除文件等等。SFS使用RPC与其它服务器通信。,什么是SFS?,14,.,REGION示例,15,.,XA接口是提供事务管理器和资源管理器之间互相调用的规范,什么是XA?,16,.,CICS区域处理一个或多个客户请求的事务。通常,区域经过访问数据库、完成一些商业逻辑,然后才答复客户。CICS区域维护并使用一个多线程的进程池,其中每个进程提供一个处理事务的完整环境,这样的进程称为应用程序服务器(cicsas)。每个CICS区域协调它的应用程序服务器所需要的所有资源服务。例如,CICS区域协调应用程序服务器的安全性,获得它们需要的数据与存储器并记录它们的事务。除了以上优点,多个CICS区域还可用来为分散工作负载提供一个分布式事务处理环境,提供事务处理的能力。CICS区域将许多服务分给其他更有能力做此工作的服务器,例如,CICS区域可使用SFS文件或DB2数据库来存储和管理用户数据MEMERY+ProcessDaemons,什么是区域(region),17,.,Region资源管理,CommunicationDefinition(CD)ListenDefinition(LD)XADefinition(XAD)UserDefinition(UD)ProgramDefinition(PD)TransactionDefinition(TD)TemporaryStorageDefinition(TSD)TransientDataQueueDefinition(TDD)GatewayDefinition(GD)GatewayServerDefinitions(GSD)JournalDefinition(JD)MonitorDefinition(MD)FileDefinition(FD),18,.,CICSonOpenSystemsUsesMultipleProcesses,RegionPoolRCA(CSA)ProgramtoProgram,CICS1,CICS2,CICSISCFunctions,22,.,课程安排(Agenda),Topic1:TXSeries(CICS)IntroductionandOverviewTopic2:TXSeries(CICS)SystemAdministrationTopic3:TXSeries(CICS)ServerDevelopmentTopic4:TXSeries(CICS)Client(ECI)DevelopmentTopic5:TXSeries(CICS)InterSystemCommunication(ISC)Topic6:TXSeries(CICS)ProblemDeterminationTopic7:EasyCicsDevelopment,23,.,TXSeries目录结构(CodeDirectories),include:cheaderscobolcopybookspl1includesamples:ivps,epi,eciuserexitsextfhstatisticsformatterexamples:xa,nonxa,1phaseisc,sdt,backupwindowsmanager,24,.,ConfigurationSteps,EnvironmentVariablesTCP/IPDCE(onlyrpc)EncinaLogicalVolumesEncinaSFSCICSRegionCICSResources,25,.,/etc/environment(partial),PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/lpp/cics/binNLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/en_US/%NLANG=en_US#CICSforAIXEnvironmentVariables#CICSREGION=CICST01CICS_SFS_SERVER=/.:/cics/sfs/SFST01CICS_SFS_VG=rootvgCICS_SFS_SIZE=4CICS_SFS_DATA_SIZE=4CICS_SFS_LOG_SIZE=4CICS_PPCGWY_SERVER=/.:/cics/ppc/gatewayGWYT01CICS_PPCGWY_VG=rootvgCICS_PPCGWY_SIZE=4CICSPATH=/usr/lpp/cicsCICS_BROWSE_CACHE=0,/etc/environment/var/cics_regions/$CICSREGION/environment,CICSonOpenSystemsAdminReference:,26,.,Warning!,coldstartingSFSwillcausethelossofalluserdata!,AfterconfiguringEncinaSFS.Alwaysuseautostart,27,.,RegionpoolstorageTask-privatepoolstorageTask-sharedpoolstorageRegionconsistencychecksDump,trace,链接libclntsh.a至路径/usr/libln-s$ORACLE_HOME/lib/libclntsh.a/usr/lib/libclntsh.a编译SwitchLoadFilecd/usr/lpp/cics/src/examples/RM_support/Oracle/make-foraclexa.mk将编译好的SwitchLoadFile复制到CICS域的bin目录下cp/usr/lpp/cics/src/examples/RM_support/Oracle/oraclexa/var/cics_regions/bin加入XA定义cicsupdate-cxad-r-rSwitchLoadFile=oraclexaXAOpen=Oracle_XA+Acc=P/+SesTm=35+SqlNet=dbccpc2+LogDir=/tmp环境变量设置ORACLE_HOME举例:修改/var/cics_regions/environment文件ORACLE_HOME=/home/oracle/app/oracle/product/8.1.7,TXSeriesCICS与OracleXA配置,36,.,DefineCICSRegionProgramsmittycicsManageCICSRegionsDefineCICSResourcesProgramAddNewKey(programname):MYTESTPathName(Programpathname)/var/cics_regions/CICS01/bin/mytestRSLKey(ResourceLevelSecurityKey)1-24Resident(Isthisaprogramthatshouldbecached?)no|yesRemoteSysId(Remotesystemonwhichtorunprogram)RemoteName(Nametouseforprogramonremotesystem),CICSRegionProgramDefinition,37,.,cicssfscreateCreateanewEncinaSFSservercicssfsdestroyDestroyanexistingSFSservercicsppcgwycreateCreateEncinaPPCGatewayservercicsppcgwydestroyDestroyanexistingEncinaGatewaycicsdefaultCreateadefaultCICSRegion(server)cicsexportExport(save)aCICSRegioncicsimportCreateanewCICSRegion(server)cicsdestroyDestroyaCICSRegioncicssfsconfConfigureSFSforCICSRegioncicsmkcobolCreateMFCOBOLRun-TimeObject,ConfigurationCommands,38,.,cicssfsStartanSFSservercicssfsshutStopanSFSservercicssfslockRemoveanSFSserverlockcicsppcgwyStartaPPCGatewayservercicsppcgwyshutStopaPPCGatewayservercicsppcgwylockRemoveaPPCGatewayserverlockstartsrcStartaCICSRegionstopsrcStopaCICSRegioncicsnotifyForce/terminateaCICSRegioncicsrlckRemoveaCICSRegionlocklssrcCheckserverstatus,OperationalCommands,39,.,MovecursortodesireditemandpressEnter.ManageCICSRegionsManageEncinaPPCGatewayServersManageFilesystemF1=HelpF2=RefreshF3=CancelF8=ImageF9=ShellF10=ExitEnter=Do,CustomerInformationControlSystem(CICS)Version5.0,Fastpath:smittycics,SMITCICS,40,.,cicscpexamples,cicscpstartregion-dattribute-overrides,cicscpdestroyregion-f-s,cicscpcreatedce-n,cicscpcreateppcgwy_server-mGSDattribute-overrides,cicscpcreateregion-g-i-lmyprog.dllmyprogCxlC_r4myprog.cmyprog.ibmcppC+cob-umyprog.cblmyprog.gntMFCOBOLcob2_rmyprog.cblmyprog.ibmcobIBMCOBOL,TRANSLATE,COMPILE,cics_char_t*commArea;EXECCICSADDRESSEIB(dfheiptr)RESP(respCode);if(respCode!=DFHRESP(NORMAL)/*YourErrorHandling*/EXECCICSRETURN;EXECCICSADDRESSCOMMAREA(commArea)RESP(respCode);if(respCode!=DFHRESP(NORMAL)/*YourErrorHandling*/EXECCICSRETURN;.EXECSQL.EXECCICSSYNCPOINT;strcpy(commArea,ReturnfromServer.n);EXECCICSRETURN;,mustbeenteredatmainmustaddressExecuteInterfaceBlockmustcheckEIBRESPmayrequireCICSheaders,SampleofCProgram,121,.,AllCommandsassumeNOHANDLEHANDLEABENDissupportedNoPUSH|POPHANDLEEIBmustbeexplicitlyreferencedCOMMAREAmustbeexplicitlyreferencedLengthoptionsmustbesuppliedStaticLocalsNotrefreshedinrecursivecallsStaticGlobalsNotrefreshedifresidentprogramCICSStringDataPaddedwithblanksnotnullsUnixResourcesnotauto-releasedFilehandles|locks|malloc()|semaphores.,CProgramConsiderations,122,.,EXECCICSLINK|XCTLanytoanySearchedin$CICSREGIONbinor$CICSPATHbinCalledSubroutinesSearchedin$PATHor$COBPATHCOBOLtoCOBOL,CtoC,orC+toC+COBOLtoCMFrequiresRTSsupport(cicsmkcobol)CtoCOBOLNotsupportedSubroutinesmaycontainEXECCICSstatementsonlyifthesamelanguageisusedie:noC+inti;sizeof(structcommAreaStruct)=?编译选项#pragmaoptionsalign=packed#pragmaoptionsalign=reset,注意事项(五),133,.,有关数据库游标使用:EXECSQLDECLARECURSOR;EXECSQLOPENCURSOR;EXECSQLCLOSECURSOR;EXECSQLDEALLOCATECURSOR;有关数据库临时表使用:EXECSQLSELECT*FROMtable1INTOTEMPtempTable;EXECSQLDROPTABLEtempTable;/主动清除临时表,注意事项(六),134,.,CECIcommandinterpreterCECSsyntaxcheckerCEBRtemporarystoragebrowseCEDFexecutiondiagnosticfacilityCMLVconsolelogviewerCDCNIBMDebugger,CESNsignonCESFsignoffCRTEtransactionroutingCEMTmasterterminalCSTDstatisticsdisplayCALFconvertandloadfile,SuppliedTransactions,135,.,CICSapplicationprogramexamples:,ServerProgram:程序框架makefileClientProgram:程序框架makefile,136,.,Topic1:TXSeries(CICS)IntroductionandOverviewTopic2:TXSeries(CICS)SystemAdministrationTopic3:TXSeries(CICS)ServerDevelopmentTopic4:TXSeries(CICS)Client(ECI)DevelopmentTopic5:TXSeries(CICS)InterSystemCommunication(ISC)Topic6:TXSeries(CICS)ProblemDeterminationTopic7:EasyCicsDevelopment,课程安排(Agenda),137,.,CICSClient分类,UnixDCEClients(RPCClient)UnixCICSUniversalClientsOrCICSTransactionGatewayPCCICSUniversalClientsOrCICSTransactionGateway,138,.,ExternalCallInterface,non-CICSApplicationTOCICSProgramCOMMAREA,139,.,ExternalPresentationInterface,non-3270presentationproductToCICSTransaction3270datastreamsEventDrivenAPI,140,.,ClientControl,Client控制命令cicscliStartorstoptheclientprocessListconnectedserversTurnclienttraceonoroffSpecifytheclientcomponentstobetracedSpecifytheconfigurationfiletobeusedSetupsecuritybyspecifyinguserIDsandpasswordsforaCICSserverEnableanddisablethedisplayofmessages,141,.,ClientControl,142,.,TelnetSupport,cicsteld支持telnet3270Client访问CICSServerMultipletn3270terminalsconnecttoCICSserversviaasingleCICSUniversalClient,143,.,CICSClient编程概述,功能从CICS客户程序(非CICS程序)调用CICSServer交易方式ExternalCallInterface,简称ECIExternalPresentationInterface,简称EPI,144,.,ECI(ExternalCallInterface),145,.,EPI(ExternalPresentationInterface,146,.,ECI与EPI,ECI基于对Server程序(Program)的请求通过通讯缓冲数据区(COMMAREA)与Server交换数据ECI应用程序被Server视为发出DPL请求的对等ServerEPI基于对Server交易(Transaction)的请求通过3270数据流与Server交换数据EPI应用程序被Server视为3270终端多用于内部管理应用,不宜用于业务应用,147,.,ECI调用分类,CICS_ExternalCallcics_sshort_tCICSCALLCICS_ExternalCall(ECI_PARMSCICSPTR*EciParms);实现了ECI的大部分功能只有一个参数,称为ECI参数模块(ECIparameterblock)该模块描述了ECI调用实现的功能及输入输出的数据CICS_EciListSystems获得Client定义的可连接的Server名称及描述,148,.,ECICICS_ExternalCall调用分类,程序执行调用(Programlinkcalls)请求执行Server程序同步调用异步调用异步调用后必须使用回复信息查询调用获得结果状态查询调用(Statusinformationcalls)查询Server属性及状态信息同步调用异步调用回复查询调用(Replysolicitationcalls)获得异步调用的结果获得任何类型的异步调用结果获得指定异步调用的返回结果(eci_message_qualifier),CICS_ExternalCall通过设置ECI参数模块中的eci_call_type栏位来控制调用类型,149,.,ECICICS_ExternalCall参数设置,eci_system_nameCICSServer名称RegionName(RPCClient)Client定义的ServerInstance名称(UniversalClient)eci_userideci_passwordeci_commarea通讯数据区(线性缓冲区)调用前存放将要传至Server的数据调用返回后,其中存放Server传回的数据eci_commarea_length数据区的长度该值应设为上传和返回数据长度两者中的较大值若上传实际数据长度小于该值,数据后的空间应以NULL字符填充eci_call_type调用类型,150,.,程序执行调用(Programlinkcalls),eci_program_name请求执行的Server程序名同步调用eci_call_type=ECI_SYNC异步调用eci_call_type=ECI_ASYNCeci_message_qualifier=xxxx(可选)标示每一个异步调用回复查询调用时使用,以便获得特定的调用返回结果eci_callback回调函数,151,.,LUW可以由唯一一个程序执行调用构成或通过扩展(Extend)调用由多个顺序执行的程序调用构成eci_luw_token栏位来标识LUWeci_luw_token取值由ECI自动生成,LUW中的第一个程序调用时,eci_luw_token应设为ECI_LUW_NEW该调用返回后,eci_luw_token中即保存了ECI生成的数值,该LUW中后续程序调用的eci_luw_token应保持该值不变eci_extend_mode栏位LUW是否扩展、提交或回滚ECI_NO_EXTENDECI_EXTENDEDECI_COMMIT(不能和eci_program_name栏位同时设置)ECI_BACKOUT(不能和eci_program_name栏位同时设置)若程序执行出错,eci_extend_mode的值,表示LUW的状态,逻辑工作单元(LogicalUnitofWork)的管理,152,.,状态查询调用(Statusinformationcalls),ECI状态模块状态信息存放在ECI状态模块(ECIstatusblock)中状态模块的输入输出通过eci_commarea栏位完成ECI中包括如下信息:连接类型(连接到Server、Client或Nothing)Server状态(available,unavailable,orunknown)Client状态(available,notapplicable,orunknown)状态查询调用可以完成的功能请查询当前状态检测状态变化取消状态检测,153,.,如何请查询当前状态,eci_commarea指向ECI状态模块的指针,返回结果存放其中eci_commarea_length=ECI_STATUS_LENGTHeci_extend_mode=ECI_STATE_IMMEDIATE同步调用eci_call_type=ECI_STATE_SYNC异步调用eci_call_type=ECI_STATE_ASYNCeci_message_qualifier=xxxx(可选)标示每一个异步调用回复查询调用时使用,以便获得特定的调用返回结果,154,.,如何检测状态变化,为ECI指定一个特定的状态,一旦实际状态与指定状态不符,将得到ECI提示只能是异步调用eci_commarea指向ECI状态模块的指针,返回结果存放其中eci_commarea_length=ECI_STATUS_LENGTHeci_extend_mode=ECI_STATE_CHANGEDeci_call_type=ECI_STATE_ASYNCeci_message_qualifier=xxxx(可选)标示每一个异步调用回复查询调用时使用,以便获得特定的调用返回结果eci_luw_token=ECI_LUW_NEW调用返回后,该栏位存放一个有ECI生成的值,标示该检测用于取消检测时,指定操作对象,155,.,如何取消状态检测,取消一个状态检测请求eci_commareaNULLeci_commarea_length=0eci_extend_mode=ECI_STATE_CANCELeci_call_type=ECI_STATE_SYNCeci_luw_token请求检测状态调用该栏位的返回值,156,.,回复查询调用(Replysolicitationcalls),获得异步调用的返回结果回复查询调用分为如下类型:ECI_GET_REPLY获得任何异步调用的返回结果,若无回应,立即返回ECI_GET_REPLY_WAIT获得任何异步调用的返回结果,若无回应,等待ECI_GET_SPECIFIC_REPLY获得指定异步调用的返回结果,若无回应,立即返回ECI_GET_SPECIFIC_REPLY_WAIT获得指定异步调用的返回结果,若无回应,等待,157,.,ECI_GET_REPLY和ECI_GET_REPLY_WAIT,eci_call_typeECI_GET_REPLYECI_GET_REPLY_WAITeci_message_qualifier该栏位的返回值标示了此回应所属的异步调用eci_commarea若取得程序执行调用的回复,其中存放Server返回的数据若取得状态查询调用的回复,其中存放ECI状态模块eci_commarea_length相应COMMAREA的长度,158,.,ECI_GET_SPECIFIC_REPLY和ECI_GET_SPECIFIC_REPLY_WAIT,eci_call_typeECI_GET_SPECIFIC_REPLYECI_GET_SPECIFIC_REPLY_WAITeci_message_qualifier设为相应异步调用该栏位的返回值eci_commarea若取得程序执行调用的回复,其中存放Server返回的数据若取得状态查询调用的回复,其中存放ECI状态模块eci_commarea_length相应COMMAREA的长度,159,.,程序的编译链接UniversalClient,目录结构$(INSTAPATH)include/CICS_ECI.Hlib/例子ECI_PARMSEciBlock;cics_sshort_tResponse;.Response=CICS_ExternalCall(编译cl/c/DWIN32/D_WIN32/D_X86_=1/DCICS_W32program.ccc_r-c-DCICS_AIX-I/usr/lpp/cicscli/includeprogram.c链接linkprogram.objcclwin32.libcc_r-oprogramprogram.o-lpthreads-lc_r-lcclaix,160,.,CICSClientprogramexamples:,ServerProgram:程序框架makefileClientProgram:程序框架makefile,161,.,Topic1:TXSeries(CICS)IntroductionandOverviewTopic2:TXSeries(CICS)SystemAdministrationTopic3:TXSeries(CICS)ServerDevelopmentTopic4:TXSeries(CICS)Client(ECI)DevelopmentTopic5:TXSeries(CICS)InterSystemCommunication(ISC)Topic6:TXSeries(CICS)ProblemDeterminationTopic7:EasyCicsDevelopment,课程安排(Agenda),162,.,CICS1,CICS2,BeiJing,GuangZhou,TransactionRoutingTRFunctionShippingFSAsynchronousTransactionProcessingATPDistributedProgramLinkDPLDistributedTransactionProcessingDTP,AcrossalltheCICSFamilyPlatformsandDTPtonon-CICSSystems,CICSISCFunctions,163,.,CRTETransactionRemoteTransactionDefinitionDynamicTransactionRoutingASCII3270-to-EBCDIC3270NoConversionTemplatesNoSCSorIPDSConversionExitTCTUA/COMMAREA,TransactionRouting,164,.,EXECCICSREAD|WRITEFILEREADQ|WRITEQTDREADQ|WRITEQTSRemoteFile/QueueDefinititionExplicitRequest(SYSID=)UserConversionTemplatesSingleLUW,FunctionShipping,165,.,EXECCICSLINKRemoteProgramDefinitionExplicitRequest(SYSID=)DynamicProgramLink32KCOMMAREAUserConversionTemplatesCoordinatedorSeparateLUWs,DistributedProgramLink,166,.,EXECCICSSTARTRemoteTransactionDefinitionExplicitRequest(SYSID=)DynamicTransactionRoutingWithorWithout:DataTerminalFacilityNoConversionTemplatesMultipleLUWs,AsynchronousTransactionProcessing,167,.,AdvancedProgramtoProgramCommunicationsExplicitOnly(SYSID=)EXECCICSALLOCATEEXECCICSCONNECTPROCESSEXECCICSSEND|RECEIVEEXECCICSFREEUnlimitedDataTransferUserDataConversionUserLUWCoordination,DistributedTransactionProcessing,168,.,EncinaPPCGateway,CICS/FamilySNA,SyncLevel2,MultipleCICSServermachines,CICS/unixTCP/IP,CICS/Unix初始化EasyCics环境ReturnCode0-succeed非0-failedvoidExitEasyCics();退出EasyCics程序voidBeginWrite();清空缓冲区,并对公共数据区开始写操作voidCicsSleep(intnSeconds);休眠指定时间段(nSeconds);需要休眠时不能调用sleep(),215,.,服务器API一维数据传输,voidGetValue(char*KeyName,char*Vlu);根据键名(KeyName)取键值(Vlu)voidSetValue(char*KeyName,char*Vlu);根据键名(KeyName)设置键值(Vlu)voidGetValue1(char*KeyName,char*Vlu,intNum);根据键名(KeyName)取键值(Vlu)Num指定接受的最大字符数(包括结尾的0)voidSetValueA(char*KeyName,char*Vlu);特殊功能,使指定键值在第一个COMMAREA中传回谨慎使用,数据量尽量小,216,.,voidRsCreate(intColNum);建立指定列数(ColNum)的结果集(resultset)voidRsAddRow();向resultset增加一行voidRsSaveRow();令resultset存储当前行voidRsSetCol(intCol,char*Vlu);设置resultset当前行的指定列值,服务器API二维表传输SEND,217,.,voidRsOpen();打开resultsetintRsGetRowNum();获取resultset行数intRsGetColNum();获取resultset列数voidRsFetchRow();从resultset获取下一行voidRsGetCol(intCol,char*Vlu);从resultset当前行获取指定列的值voidRsGetCol1(intCol,char*Vlu,intNum);从resultset当前行获取指定列的值Num指定接受的最大字符数(包括结尾的0),服务器API二维表传输RECEIVE,Note:现已支持一次调用中同时传输多个结果集,218,.,voidCicsCommit();提交事务voidCicsRollBack();回滚事务voidCicsAbend(char*Abcode);异常终止事物Abcode为异常终止代码,服务器API事物控制,219,.,intCallProgram(char*prg);调用另一CICS定义的程序(program)等待被调用program结束后再继续执行(同步)intCallProgramXCTL(char*prg);调用另一CICS定义的程序(program)调用后调用程序剩余代码将不再执行,进程由被调程序取代。intCallProgramSys(char*prg,char*sys_id);调用远程CICS定义的程序(program)sys_id指定远程系统,服务器API程序调用,220,.,voidPrintStatus(char*statusbuf);向Console输出调试信息。可用cicstail命令观察输出结果结果存在CSMT.out文件中void*CicsMallocLocal(nBytes);动态分配私有的内存void*CicsMallocShared(nBytes);动态分配(Region)共用的内存voidCicsFree(char*pMem);释放内存,服务器API功能函数,221,.,voidSaveToCwa(intnPos,void*pMem,intlen);将数据存入CWAvoidLoadFromCwa(intnPos,void*pMem,intlen);从CWA中获取数据intCicsLock(char*LockPtr,intIfPtr,intIfDsync);锁内存或标示符intCicsUnLock(char*LockPtr,intIfPtr);释放对内存或标示符的锁定,服务器API功能函数,222,.,服务器应用的编译与链接,non-CICS嵌入语言的预编译EXECSQL.CICSAPI预编译EXECCICS.cicstran预编译cicstcl预编译,编译,链接宿主语言的编译链接将程序在CICSRegion中定义(PD),223,.,服务器-注意事项及建议,程序入口处必须调用InitEasyCics函数程序出口处必须调用ExitEasyCics函数所有一维数据传输函数应在二维数据传输函数调用前执行在接收数据时尽可能使用GetValue1、RsGetCol1,以避免内存越界问题程序中的系统调用及库函数调用需保证线程安全程序中不可使用的系统函数fork、execl、system,用CallProgram、CallProgramXCTL替代gethostbyname、gethostbyaddr、getprotent、getservbyname,用gethostbyname_r、gethostbyaddr_r、getprotent_r、getservbyname_r替代exit,abort用ExitEasyCics替代malloc系列,kill,sleep,assert,signals等静态变量CachedProgramsProgramsCalledRecursively,224,.,客户端API基本调用流程,225,.,客户端APIBASE,ConnectServer(ConnectServer2)intConnectServer(char*ServerName,char*UserName,char*Password);FunctionConnectServer(ByValServerNameAsString,ByValUserNameAsString,ByValPasswordAsString)AsInteger连接CICS的服务器返回值0表示成功非0表示失败BeginWritevoidBeginWrite();SubBeginWrite()清空缓冲区,并对公共数据区开始写操作,226,.,客户端API一维数据传输,GetValuevoidGetValue(char*KeyName,char*Vlu);FunctionGetValue(ByValKeyNameAsString)AsString根据键名(KeyName)取键值(Vlu)GetValue1(OnlyC/C+)voidGetValue1(char*Key,char*Value,intNum);根据键名(KeyName)取键值(Vlu)Num指定接受的最大字符数(包括结尾的0)。SetValueSubSetValue(ByValKeyNameAsString,ByValStrValueAsString)voidSetValue(char*KeyName,char*Vlu);根据键名(KeyName)设置键值(StrValue),227,.,客户端API二维传输RECEIVE1/2,RsOpenvoidRsOpen();SubRsOpen()打开resultsetRsGetColNumintRsGetColNum();FunctionRsGetColNum()AsInteger获取resultset行数RsGetRowNumintRsGetRowNum();FunctionRsGetRowNum()AsInteger获取resultset列数,228,.,客户端API二维传输RECEIVE2/2,RsFetchRowvoidRsFetchRow();FunctionRsFetchRow()从resultset获取下一行RsGetColvoidRsGetCol(intCol,char*Vlu);FunctionRsGetCol(ColAsInteger)从resultset当前行获取指定列的值RsGetCol1(C/C+Only)voidRsGetCol1(intCol,char*Vlu,intNum);从resultset当前行获取指定列的值Num指定接受的最大字符数(包括结尾的0),229,.,客户端API二维传输SEND,RsCreatevoidRsCreate(intColNum);SubRsCreate(ByValColNumAsInteger)建立指定列数(ColNum)的resultsetRsAddRowvoidRsAddRow();SubRsAddRow()向resultset增加一行RsSaveRowvoidRsSaveRow();SubRsSaveRow()令resultset存储当前行RsSetColvoidR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教部编版三年级上册第八单元26 手术台就是阵地教案设计
- 2024四川石棉县晟丰农业发展有限责任公司招聘配送员1人笔试参考题库附带答案详解
- 人教部编版八年级下册名著导读 《钢铁是怎样炼成的》:摘抄和做笔记教学设计
- 人教部编版一年级下册古对今教案
- 2024四川新传媒集团有限公司公开招聘6人笔试参考题库附带答案详解
- 2024四川九州电子科技股份有限公司招聘技安管理等岗位3人笔试参考题库附带答案详解
- 人教版九年级化学上册教学设计
- 2024华能四川能源开发有限公司下属单位招聘笔试参考题库附带答案详解
- 人教版四年级上册画角教案及反思
- 学校优良作业评选方案
- 山东省高中名校2025届高三4月校际联合检测大联考生物试题及答案
- 2025年03月如东县事业单位工作人员120人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2024北京八中高一(下)期中英语试题及答案
- 槟榔合作协议合同
- 欢乐购物街(教案)-2024-2025学年一年级下册数学人教版
- 【9物一模】2025年安徽省合肥市蜀山区九年级中考一模物理试卷(含答案)
- 浅谈南京市区地形地貌和工程地质层构成
- 【模型与方法】2025届高考物理二轮复习热点题型归类计算4 电磁感应综合计算问题(原卷版)
- Unit5Whatwereyoudoingwhentherainstormcame?SectionB1a-1d课件人教版八年级英语下册
- GB/T 45255-2025公共信用综合评价规范
- 湖北省武汉市青山区2023-2024学年八年级下学期物理期中试题(含答案)
评论
0/150
提交评论