///////////////////////////////////////////////////////////////////////////// // // OPERATION: zwTZERRORD_ErrorListSaveToFile // // ///////////////////////////////////////////////////////////////////////////// zOPER_EXPORT zSHORT /*DIALOG */ OPERATION zwTZERRORD_ErrorListSaveToFile( zVIEW vSubtask ) { zVIEW vTZERROR; zULONG ulZFlags = 0; zLONG lLth; zLONG FileHandle; zCHAR szMsg[300]; zCHAR szTool[50]; zCHAR szTitle[ 100 ]; zCHAR szName[ 33 ]; zCHAR szFileName[ zMAX_FILENAME_LTH + 1]; if ( GetViewByName( &vTZERROR, "TZERROR", vSubtask, zLEVEL_TASK ) < 0 ) return( -1 ); if ( CompareAttributeToInteger( vTZERROR, "ErrorList", "MetaType", zSOURCE_ERD_META ) == 0 ) { zstrcpy( szTool, "Data Model" ); zstrcpy( szName, "Entity" ); lLth = 32; } else if ( CompareAttributeToInteger( vTZERROR, "ErrorList", "MetaType", zSOURCE_REPLACE_BMP ) == 0 ) { zstrcpy( szTool, "Bitmap" ); zstrcpy( szName, "Dialog" ); lLth = 8; } else { zstrcpy( szTool, "" ); zstrcpy( szName, "" ); lLth = 1; } szFileName[ 0 ] = 0; ulZFlags = zOFN_OVERWRITEPROMPT | zOFN_CREATEPROMPT | zOFN_SAVEAS | zOFN_HIDEREADONLY; if ( OperatorPromptForFile( vSubtask, szFileName, sizeof( szFileName ), "Text Files (*.txt)|*.txt|", "txt", ulZFlags ) == 1 ) { FileHandle = SysOpenFile( vSubtask, szFileName, COREFILE_WRITE ); if ( FileHandle == -1 ) { zstrcpy( szMsg, "Unable to open " ); zstrcat( szMsg, szFileName ); zstrcpy( szTitle, szTool ); zstrcat( szTitle, " Maintenance" ); MessageSend( vSubtask, "FEH001", szTitle, szMsg, zMSGQ_OBJECT_CONSTRAINT_ERROR, 0 ); return( -1 ); } zwfnTZERRORD_WriteErrorListToFile( vTZERROR, FileHandle, szTool, szName, lLth ); SysCloseFile( vSubtask, FileHandle, 0 ); } return( 0 ); } // zwTZERRORD_ErrorListSaveToFile
//: VIEW vReportDef BASED ON LOD TZRPSRCO zOPER_EXPORT zSHORT OPERATION oTZRPSRCO_GenerateXSLT_XML( zVIEW vSourceOI, zPCHAR szReportName, zPCHAR szXMLFileName, zPCHAR szTopEntityName ) { zVIEW vReportDef = 0; //:VIEW vReportLODRecurs BASED ON LOD TZRPSRCO zVIEW vReportLODRecurs = 0; //:VIEW vReportDefRoot BASED ON LOD TZRPSRCO zVIEW vReportDefRoot = 0; //:VIEW vSourceOIHier zVIEW vSourceOIHier = 0; //:VIEW vSourceOIDebug zVIEW vSourceOIDebug = 0; //:VIEW vLOD BASED ON LOD TZZOLODO zVIEW vLOD = 0; //:VIEW vTaskLPLR BASED ON LOD TZCMLPLO zVIEW vTaskLPLR = 0; //:STRING ( 200 ) szMsg zCHAR szMsg[ 201 ] = { 0 }; //:STRING ( 200 ) szFileName zCHAR szFileName[ 201 ] = { 0 }; //:STRING ( 32 ) szReturnedEntityName zCHAR szReturnedEntityName[ 33 ] = { 0 }; //:STRING ( 32 ) szLastReturnedEntityName zCHAR szLastReturnedEntityName[ 33 ] = { 0 }; //:STRING ( 32 ) szParentEntityName zCHAR szParentEntityName[ 33 ] = { 0 }; //:STRING ( 32 ) szDrivingViewName zCHAR szDrivingViewName[ 33 ] = { 0 }; //:STRING ( 50 ) szIndentationValue zCHAR szIndentationValue[ 51 ] = { 0 }; //:STRING ( 50 ) szIndentationSubValue zCHAR szIndentationSubValue[ 51 ] = { 0 }; //:STRING ( 1 ) szInNodeFlag zCHAR szInNodeFlag[ 2 ] = { 0 }; //:STRING ( 5000 ) szOutputLine zCHAR szOutputLine[ 5001 ] = { 0 }; //:INTEGER lFileHandle zLONG lFileHandle = 0; //:INTEGER Indentation zLONG Indentation = 0; //:SHORT ReturnedHierLevel zSHORT ReturnedHierLevel = 0; //:SHORT LastHierLevel zSHORT LastHierLevel = 0; //:SHORT nRC zSHORT nRC = 0; zSHORT lTempInteger_0; zSHORT RESULT; //:// Build an XSLT XML FO object for the passed in application object and Report Definition. //:// First we need to activate the report def... //:SysReadZeidonIni( -1, "[WorkStation]", "ResourcePath", szFileName ) SysReadZeidonIni( -1, "[WorkStation]", "ResourcePath", szFileName ); //://szFileName = "c:\lplr\zencas\bin\" //:szFileName = szFileName + szReportName + ".xrp" ZeidonStringConcat( szFileName, 1, 0, szReportName, 1, 0, 201 ); ZeidonStringConcat( szFileName, 1, 0, ".xrp", 1, 0, 201 ); //:SfActivateSysOI_FromFile( vReportDef, "TZRPSRCO", vSourceOI, szFileName, zSINGLE ) SfActivateSysOI_FromFile( &vReportDef, "TZRPSRCO", vSourceOI, szFileName, zSINGLE ); //:// Get the Name of the Driving object, as we will need that in processing mapping. //:IF vReportDef.DrivingViewObjRef EXISTS lTempInteger_0 = CheckExistenceOfEntity( vReportDef, "DrivingViewObjRef" ); if ( lTempInteger_0 == 0 ) { //:szDrivingViewName = vReportDef.DrivingViewObjRef.Name GetVariableFromAttribute( szDrivingViewName, 0, 'S', 33, vReportDef, "DrivingViewObjRef", "Name", "", 0 ); //:ELSE } else { //:szMsg = "The report must have a 'Driving View' set in the report details." ZeidonStringCopy( szMsg, 1, 0, "The report must have a 'Driving View' set in the report details.", 1, 0, 201 ); //:MessageSend( vReportDef, "", "Generate XSLT", //: szMsg, zMSGQ_OBJECT_CONSTRAINT_WARNING, 0 ) MessageSend( vReportDef, "", "Generate XSLT", szMsg, zMSGQ_OBJECT_CONSTRAINT_WARNING, 0 ); //:RETURN -1 return( -1 ); } //:END //:// Open XML output file. //:SysReadZeidonIni( -1, "[Workstation]", "XSLTDirectory", szFileName ) SysReadZeidonIni( -1, "[Workstation]", "XSLTDirectory", szFileName ); //:szFileName = szFileName + szXMLFileName + ".xml" ZeidonStringConcat( szFileName, 1, 0, szXMLFileName, 1, 0, 201 ); ZeidonStringConcat( szFileName, 1, 0, ".xml", 1, 0, 201 ); //:lFileHandle = SysOpenFile( vReportDef, szFileName, COREFILE_WRITE ) lFileHandle = SysOpenFile( vReportDef, szFileName, COREFILE_WRITE ); //:IF lFileHandle < 0 if ( lFileHandle < 0 ) { //:szMsg = "Cannot open XSLT Output File, " + szFileName ZeidonStringCopy( szMsg, 1, 0, "Cannot open XSLT Output File, ", 1, 0, 201 ); ZeidonStringConcat( szMsg, 1, 0, szFileName, 1, 0, 201 ); //:MessageSend( vReportDef, "", "Generate XSLT", //: szMsg, zMSGQ_OBJECT_CONSTRAINT_WARNING, 0 ) MessageSend( vReportDef, "", "Generate XSLT", szMsg, zMSGQ_OBJECT_CONSTRAINT_WARNING, 0 ); //:RETURN -1 return( -1 ); } //:END //:// Navigate the vSourceOI object/subobject hierarchically and create an XML node for each entity that has a corresponding //:// GroupSet entity in the Report Def. //:// Generate basic header. //:szOutputLine = "<?xml version=" + QUOTES + "1.0" + QUOTES + " encoding=" + QUOTES + "iso-8859-1" + QUOTES + "?>" ZeidonStringCopy( szOutputLine, 1, 0, "<?xml version=", 1, 0, 5001 ); ZeidonStringConcat( szOutputLine, 1, 0, QUOTES, 1, 0, 5001 ); ZeidonStringConcat( szOutputLine, 1, 0, "1.0", 1, 0, 5001 ); ZeidonStringConcat( szOutputLine, 1, 0, QUOTES, 1, 0, 5001 ); ZeidonStringConcat( szOutputLine, 1, 0, " encoding=", 1, 0, 5001 ); ZeidonStringConcat( szOutputLine, 1, 0, QUOTES, 1, 0, 5001 ); ZeidonStringConcat( szOutputLine, 1, 0, "iso-8859-1", 1, 0, 5001 ); ZeidonStringConcat( szOutputLine, 1, 0, QUOTES, 1, 0, 5001 ); ZeidonStringConcat( szOutputLine, 1, 0, "?>", 1, 0, 5001 ); //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ) oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ); //:szOutputLine = "<zOI>" ZeidonStringCopy( szOutputLine, 1, 0, "<zOI>", 1, 0, 5001 ); //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ) oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ); //:// Process the page header. //:SET CURSOR FIRST vReportDef.GroupSet WHERE vReportDef.GroupSet.Type = "PH" RESULT = SetCursorFirstEntityByString( vReportDef, "GroupSet", "Type", "PH", "" ); //:IF RESULT >= zCURSOR_SET if ( RESULT >= zCURSOR_SET ) { //:szOutputLine = "<PageHeader>" ZeidonStringCopy( szOutputLine, 1, 0, "<PageHeader>", 1, 0, 5001 ); //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ) oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ); //:XML_PageHeaderFooter( vReportDef, vSourceOI, szOutputLine, lFileHandle, szIndentationValue ) oTZRPSRCO_XML_PageHeaderFooter( vReportDef, vSourceOI, szOutputLine, lFileHandle, szIndentationValue ); //:szOutputLine = "</PageHeader>" ZeidonStringCopy( szOutputLine, 1, 0, "</PageHeader>", 1, 0, 5001 ); //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ) oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ); } //:END //:szOutputLine = " <GR_" + szTopEntityName + ">" ZeidonStringCopy( szOutputLine, 1, 0, " <GR_", 1, 0, 5001 ); ZeidonStringConcat( szOutputLine, 1, 0, szTopEntityName, 1, 0, 5001 ); ZeidonStringConcat( szOutputLine, 1, 0, ">", 1, 0, 5001 ); //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ) oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ); //:// Process Top Entity Header, if it exists. //:CreateViewFromView( vReportLODRecurs, vReportDef ) CreateViewFromView( &vReportLODRecurs, vReportDef ); //:GenerateXML_LODRecurs( vReportDef, vReportLODRecurs, vSourceOI, szOutputLine, lFileHandle, szIndentationValue ) oTZRPSRCO_GenerateXML_LODRecurs( vReportDef, vReportLODRecurs, vSourceOI, szOutputLine, lFileHandle, szIndentationValue ); //:szOutputLine = " </GR_" + szTopEntityName + ">" ZeidonStringCopy( szOutputLine, 1, 0, " </GR_", 1, 0, 5001 ); ZeidonStringConcat( szOutputLine, 1, 0, szTopEntityName, 1, 0, 5001 ); ZeidonStringConcat( szOutputLine, 1, 0, ">", 1, 0, 5001 ); //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ) oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ); //:// Process the page footer. //:SET CURSOR FIRST vReportDef.GroupSet WHERE vReportDef.GroupSet.Type = "PF" RESULT = SetCursorFirstEntityByString( vReportDef, "GroupSet", "Type", "PF", "" ); //:IF RESULT >= zCURSOR_SET if ( RESULT >= zCURSOR_SET ) { //:szOutputLine = "<PageFooter>" ZeidonStringCopy( szOutputLine, 1, 0, "<PageFooter>", 1, 0, 5001 ); //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ) oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ); //:XML_PageHeaderFooter( vReportDef, vSourceOI, szOutputLine, lFileHandle, szIndentationValue ) oTZRPSRCO_XML_PageHeaderFooter( vReportDef, vSourceOI, szOutputLine, lFileHandle, szIndentationValue ); //:szOutputLine = "</PageFooter>" ZeidonStringCopy( szOutputLine, 1, 0, "</PageFooter>", 1, 0, 5001 ); //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ) oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ); } //:END //:// Terminate and close the XML file. //:szOutputLine = "</zOI>" ZeidonStringCopy( szOutputLine, 1, 0, "</zOI>", 1, 0, 5001 ); //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ) oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine ); //:SysCloseFile( vReportDef, lFileHandle, 0 ) SysCloseFile( vReportDef, lFileHandle, 0 ); return( 0 ); // END }
zSHORT /* LOCAL */ OPERATION zwTZCMRPTD_ExportTextAUX( zVIEW vSubtask, zPCHAR pszFileName ) { zVIEW vTZBRAU3O; zLONG lfFile; zCHAR szMsg[ 256 ]; zCHAR szText[ 1000 ]; zPCHAR szAttr; if ( GetViewByName( &vTZBRAU3O, "TZBRAU3O", vSubtask, zLEVEL_TASK ) > 0 ) { lfFile = SysOpenFile( vSubtask, pszFileName, COREFILE_WRITE ); if ( lfFile < 0 ) { strcpy( szMsg, "Error writing the File '" ); strcat( szMsg, pszFileName ); strcat( szMsg, "'." ); MessageSend( vSubtask, "CM00xxx", "Configuration Management", szMsg, zMSGQ_OBJECT_CONSTRAINT_ERROR, zBEEP ); } strcpy( szText, "AuditTrail Print created with (c) Zeidon 1997" ); SysWriteLine( vSubtask, lfFile, szText ); strcpy( szText, "---------------------------------------------" ); SysWriteLine( vSubtask, lfFile, szText ); // save the CPLR-Name: strcpy( szText, "CPLR:\t\t" ); GetStringFromAttribute( szMsg, vTZBRAU3O, "CPLR", "Name" ); strcat( szText, szMsg ); SysWriteLine( vSubtask, lfFile, szText ); // save the DateTime: strcpy( szText, "Date:\t\t" ); GetStringFromAttributeByContext( szMsg, vTZBRAU3O, "AuditTrail", "TimeStamp", "DD.MM.YYYY HH:MM:SS", 20); strcat( szText, szMsg ); SysWriteLine( vSubtask, lfFile, szText ); // save the User: strcpy( szText, "User:\t\t" ); GetStringFromAttribute( szMsg, vTZBRAU3O, "AuditTrail", "UserName" ); strcat( szText, szMsg ); strcat( szText, " " ); GetStringFromAttribute( szMsg, vTZBRAU3O, "AuditTrail", "UserDesc" ); strcat( szText, szMsg ); SysWriteLine( vSubtask, lfFile, szText ); // save the ShortDesc: strcpy( szText, "ShortDesc:\t" ); GetStringFromAttribute( szMsg, vTZBRAU3O, "AuditTrail", "ShortDesc" ); strcat( szText, szMsg ); SysWriteLine( vSubtask, lfFile, szText ); strcpy( szText, "---------------------------------------------" ); SysWriteLine( vSubtask, lfFile, szText ); GetAddrForAttribute( &szAttr, vTZBRAU3O, "AuditTrail", "Desc" ); SysWriteLine( vSubtask, lfFile, szAttr ); // Close the template file. SysCloseFile( vSubtask, lfFile, 0 ); } else { IssueError( vSubtask, 0, 0, "Object TZCMAU3O does not exist (zwTZCMRPTD_ExportTextAUX)" ); } return( 0 ); }
//:VIEW OperationXOG BASED ON LOD TZZOXOGO zOPER_EXPORT zSHORT OPERATION oTZOGSRCO_GenerateXOG( zVIEW OperationGroup ) { zVIEW OperationXOG = 0; //:VIEW OperationGroupT BASED ON LOD TZOGSRCO zVIEW OperationGroupT = 0; //:VIEW CurrentLPLR BASED ON LOD TZCMLPLO zVIEW CurrentLPLR = 0; //:STRING ( 513 ) XOG_FileName zCHAR XOG_FileName[ 514 ] = { 0 }; //:STRING ( 513 ) POG_FileName zCHAR POG_FileName[ 514 ] = { 0 }; //:STRING ( 200 ) szMsg zCHAR szMsg[ 201 ] = { 0 }; //:INTEGER lFile zLONG lFile = 0; //:SHORT nRC zSHORT nRC = 0; zSHORT RESULT; zCHAR szTempString_0[ 33 ]; zCHAR szTempString_1[ 33 ]; //:// Build the executable Global Object executable for all Operations in the LPLR. //:// Activate or initialize the XOG executable object. //:GET VIEW CurrentLPLR NAMED "TaskLPLR" RESULT = GetViewByName( &CurrentLPLR, "TaskLPLR", OperationGroup, zLEVEL_TASK ); //:XOG_FileName = CurrentLPLR.LPLR.ExecDir + "\" + CurrentLPLR.LPLR.Name + ".XOG" GetStringFromAttribute( XOG_FileName, CurrentLPLR, "LPLR", "ExecDir" ); ZeidonStringConcat( XOG_FileName, 1, 0, "\\", 1, 0, 514 ); GetVariableFromAttribute( szTempString_0, 0, 'S', 33, CurrentLPLR, "LPLR", "Name", "", 0 ); ZeidonStringConcat( XOG_FileName, 1, 0, szTempString_0, 1, 0, 514 ); ZeidonStringConcat( XOG_FileName, 1, 0, ".XOG", 1, 0, 514 ); //:lFile = SysOpenFile( OperationGroup, XOG_FileName, COREFILE_READ ) lFile = SysOpenFile( OperationGroup, XOG_FileName, COREFILE_READ ); //:IF lFile < 0 if ( lFile < 0 ) { //:// Executable has not yet been generated. //:ACTIVATE OperationXOG EMPTY RESULT = ActivateEmptyObjectInstance( &OperationXOG, "TZZOXOGO", OperationGroup, zSINGLE ); //:CREATE ENTITY OperationXOG.TZZOXOGO RESULT = CreateEntity( OperationXOG, "TZZOXOGO", zPOS_AFTER ); //:OperationXOG.TZZOXOGO.NAME = CurrentLPLR.LPLR.Name SetAttributeFromAttribute( OperationXOG, "TZZOXOGO", "NAME", CurrentLPLR, "LPLR", "Name" ); //:ELSE } else { //:SysCloseFile( OperationGroup, lFile, 0 ) SysCloseFile( OperationGroup, lFile, 0 ); //:// Get current executable File. //:ActivateOI_FromFile( OperationXOG, "TZZOXOGO", OperationGroup, XOG_FileName, zSINGLE ) ActivateOI_FromFile( &OperationXOG, "TZZOXOGO", OperationGroup, XOG_FileName, zSINGLE ); //:// Delete current source file entries. //:FOR EACH OperationXOG.GLOBALOPERATIONSOURCEFILE RESULT = SetCursorFirstEntity( OperationXOG, "GLOBALOPERATIONSOURCEFILE", "" ); while ( RESULT > zCURSOR_UNCHANGED ) { //:DELETE ENTITY OperationXOG.GLOBALOPERATIONSOURCEFILE NONE RESULT = DeleteEntity( OperationXOG, "GLOBALOPERATIONSOURCEFILE", zREPOS_NONE ); RESULT = SetCursorNextEntity( OperationXOG, "GLOBALOPERATIONSOURCEFILE", "" ); } //:END } //:END //:NAME VIEW OperationXOG "OperationXOG" SetNameForView( OperationXOG, "OperationXOG", 0, zLEVEL_TASK ); //:// Build the executable components from each POG Operation. //:SET CURSOR FIRST CurrentLPLR.W_MetaType WHERE CurrentLPLR.W_MetaType.Type = 14 // 14 is Global Operation Group RESULT = SetCursorFirstEntityByInteger( CurrentLPLR, "W_MetaType", "Type", 14, "" ); //:FOR EACH CurrentLPLR.W_MetaDef RESULT = SetCursorFirstEntity( CurrentLPLR, "W_MetaDef", "" ); while ( RESULT > zCURSOR_UNCHANGED ) { //:POG_FileName = CurrentLPLR.LPLR.MetaSrcDir + "\" + CurrentLPLR.W_MetaDef.Name + ".POG" GetStringFromAttribute( POG_FileName, CurrentLPLR, "LPLR", "MetaSrcDir" ); ZeidonStringConcat( POG_FileName, 1, 0, "\\", 1, 0, 514 ); GetVariableFromAttribute( szTempString_1, 0, 'S', 33, CurrentLPLR, "W_MetaDef", "Name", "", 0 ); ZeidonStringConcat( POG_FileName, 1, 0, szTempString_1, 1, 0, 514 ); ZeidonStringConcat( POG_FileName, 1, 0, ".POG", 1, 0, 514 ); //:nRC = ActivateOI_FromFile( OperationGroupT, "TZOGSRCO", OperationGroup, POG_FileName, zSINGLE + 8192 ) nRC = ActivateOI_FromFile( &OperationGroupT, "TZOGSRCO", OperationGroup, POG_FileName, zSINGLE + 8192 ); //:IF nRC < 0 if ( nRC < 0 ) { //:szMsg = "Can't open POG file, " + POG_FileName ZeidonStringCopy( szMsg, 1, 0, "Can't open POG file, ", 1, 0, 201 ); ZeidonStringConcat( szMsg, 1, 0, POG_FileName, 1, 0, 201 ); //:IssueError( OperationGroup,0,0, szMsg ) IssueError( OperationGroup, 0, 0, szMsg ); //:RETURN -1 return( -1 ); } //:END //:// Create Source file entry. //:CREATE ENTITY OperationXOG.GLOBALOPERATIONSOURCEFILE RESULT = CreateEntity( OperationXOG, "GLOBALOPERATIONSOURCEFILE", zPOS_AFTER ); //:OperationXOG.GLOBALOPERATIONSOURCEFILE.NAME = OperationGroupT.GlobalOperationGroup.Name SetAttributeFromAttribute( OperationXOG, "GLOBALOPERATIONSOURCEFILE", "NAME", OperationGroupT, "GlobalOperationGroup", "Name" ); //:OperationXOG.GLOBALOPERATIONSOURCEFILE.LANGUAGETYPE = OperationGroupT.GlobalOperationGroup.LanguageType SetAttributeFromAttribute( OperationXOG, "GLOBALOPERATIONSOURCEFILE", "LANGUAGETYPE", OperationGroupT, "GlobalOperationGroup", "LanguageType" ); //:// Create each Operation entry. //:FOR EACH OperationGroupT.Operation RESULT = SetCursorFirstEntity( OperationGroupT, "Operation", "" ); while ( RESULT > zCURSOR_UNCHANGED ) { //:CREATE ENTITY OperationXOG.OPERATION RESULT = CreateEntity( OperationXOG, "OPERATION", zPOS_AFTER ); //:OperationXOG.OPERATION.NAME = OperationGroupT.Operation.Name SetAttributeFromAttribute( OperationXOG, "OPERATION", "NAME", OperationGroupT, "Operation", "Name" ); //:OperationXOG.OPERATION.TYPE = OperationGroupT.Operation.Type SetAttributeFromAttribute( OperationXOG, "OPERATION", "TYPE", OperationGroupT, "Operation", "Type" ); //:FOR EACH OperationGroupT.Parameter RESULT = SetCursorFirstEntity( OperationGroupT, "Parameter", "" ); while ( RESULT > zCURSOR_UNCHANGED ) { //:CREATE ENTITY OperationXOG.PARAMETER RESULT = CreateEntity( OperationXOG, "PARAMETER", zPOS_AFTER ); //:OperationXOG.PARAMETER.NAME = OperationGroupT.Parameter.ShortDesc SetAttributeFromAttribute( OperationXOG, "PARAMETER", "NAME", OperationGroupT, "Parameter", "ShortDesc" ); //:OperationXOG.PARAMETER.DATATYPE = OperationGroupT.Parameter.DataType SetAttributeFromAttribute( OperationXOG, "PARAMETER", "DATATYPE", OperationGroupT, "Parameter", "DataType" ); RESULT = SetCursorNextEntity( OperationGroupT, "Parameter", "" ); } RESULT = SetCursorNextEntity( OperationGroupT, "Operation", "" ); //:END } RESULT = SetCursorNextEntity( CurrentLPLR, "W_MetaDef", "" ); //:END } //:END //:CommitOI_ToFile( OperationXOG, XOG_FileName, zASCII ) CommitOI_ToFile( OperationXOG, XOG_FileName, zASCII ); //:DropObjectInstance( OperationXOG ) DropObjectInstance( OperationXOG ); return( 0 ); // END }