///////////////////////////////////////////////////////////////////////////// // // ENTRY: // // PURPOSE: Create a HK if one doesn't exist for LPLR upon entry // to the HK Dialog. // ///////////////////////////////////////////////////////////////////////////// zOPER_EXPORT zSHORT OPERATION zwTZHKEYAD_PreBAppl( zVIEW vSubtask ) { // Call configuration management to set up the default LPL. InitializeLPLR( vSubtask, "" ); zwTZHKEYAD_InitHK_ForLPLR( vSubtask ); zwTZHKEYAD_SetTitle( vSubtask ); return( 0 ); }
///////////////////////////////////////////////////////////////////////////// // // OPERATION: zwTZZMAIND_Postbuild // // PURPOSE: // ///////////////////////////////////////////////////////////////////////////// zOPER_EXPORT zSHORT OPERATION zwTZZMAIND_PostBuild( zVIEW vSubtask ) { zSHORT nRC; zCHAR szLPL_Name[ 34 ]; zVIEW vLPL; zVIEW vMetaList; InitializeLPLR( vSubtask, "" ); nRC = GetViewByName( &vLPL, "TaskLPLR", vSubtask, zLEVEL_TASK ); if ( nRC > 0 ) { GetStringFromAttribute( szLPL_Name, vLPL, "LPLR", "Name" ); SetWindowCaptionTitle( vSubtask, 0, szLPL_Name ); } // Get view to all list types RetrieveViewForMetaList( vSubtask, &vMetaList, zSOURCE_SA_META ); SetNameForView( vMetaList, "TZERDS", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zREFER_SA_META ); SetNameForView( vMetaList, "TZERDR", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zSOURCE_DOMAIN_META ); SetNameForView( vMetaList, "TZDMNS", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zREFER_DOMAIN_META ); SetNameForView( vMetaList, "TZDMNR", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zSOURCE_DTE_META ); SetNameForView( vMetaList, "TZDBMS", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zREFER_DTE_META ); SetNameForView( vMetaList, "TZDBMR", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zSOURCE_LOD_META ); SetNameForView( vMetaList, "TZLODS", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zREFER_LOD_META ); SetNameForView( vMetaList, "TZLODR", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zSOURCE_DIALOG_META ); SetNameForView( vMetaList, "TZDLGS", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zREFER_DIALOG_META ); SetNameForView( vMetaList, "TZDLGR", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zSOURCE_PENV_META ); SetNameForView( vMetaList, "TZPENS", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zREFER_PENV_META ); SetNameForView( vMetaList, "TZPENR", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zSOURCE_GO_META ); SetNameForView( vMetaList, "TZOPRS", vSubtask, zLEVEL_TASK ); RetrieveViewForMetaList( vSubtask, &vMetaList, zREFER_GO_META ); SetNameForView( vMetaList, "TZOPRR", vSubtask, zLEVEL_TASK ); MB_SetMessage( vSubtask, 1, "?" ); MB_SetMessage( vSubtask, 2, "*" ); return( 0 ); }
void RunAppl( HWND hWnd ) { zVIEW vSubtask = NULL; zSHORT nRC; char cError = '\0' ; char cRemReadOnly = 'N'; char cApplication[ 32 ], cLogFile[ 256 ] ; char *pc; HANDLE hInstance = (HANDLE) GetWindowLong( hWnd, GWL_HINSTANCE ); LPSTR lpCmdLine = (LPSTR) GetWindowLong( hWnd, GWL_USERDATA ); // Analyze the Command Line // The command line is // "-p Application" "-t TE-Name" "[-n]" ["Log-File"] // "Application" and "TE-Name" are required cApplication[ 0 ] = cLogFile[ 0 ] = '\0'; pc = lpCmdLine + strspn( lpCmdLine, " "); // Blank-Eli do { if ( *pc != '-' ) { cError = 'E'; break; } ++pc; pc = pc + strspn( pc, " "); // Blank-Eli switch ( *pc ) { case 'p': // Application name ++pc; pc = extract_name( pc, cApplication, sizeof( cApplication ) ); break; case 'l': // Log file ++pc; pc = extract_name( pc, cLogFile, sizeof( cLogFile ) ); break; case 'r': // Network switch cRemReadOnly = 'Y'; ++pc; pc = pc + strspn( pc, " "); // Blank-Eli break; default: cError = 'E'; break; } } while ( *pc != '\0' && cError == '\0' ); if ( cApplication[ 0 ] == '\0' || cError != '\0' ) { MessageBox( hWnd, "Invalid Command Line - Application required", "Error Running xwdgen", MB_OK | MB_ICONSTOP | MB_APPLMODAL ); return; } RegisterZeidonApplication( &vSubtask, 0L, 0L, WM_USER + 1, "~~Zeidon_Tools~", 0, 0 ); InitializeLPLR( vSubtask, cApplication ); ProcessXwds( hWnd, vSubtask, cLogFile, cRemReadOnly); UnregisterZeidonApplication( ); }
zOPER_EXPORT zLONG OPERATION InvokeInterp( zVIEW lpInterpSubtask, // Interpretor's subtask zVIEW lpAppSubtask, // application's subtask zPCHAR szSrcDLLName, // name of the dialog zPCHAR szOperationName, // operation to interp zPLONG plRC ) { zVIEW vXChecker; zSHORT nRC; zLONG lStepRC; zVIEW vStackObject; // view to the stack object zVIEW vS_View; zVIEW vZ_View; zVIEW vSO; zVIEW vSubtask = 0; zVIEW vTaskLPLR; zPVOID hWRKS = NULL; // Check to make sure the LPLR is active. GetViewByName( &vTaskLPLR, "TaskLPLR", lpAppSubtask, zLEVEL_TASK ); if ( vTaskLPLR == 0 ) InitializeLPLR( lpInterpSubtask, "" ); aInterpreterSave[ lMultiple ].vSubtask = lpInterpSubtask; if ( lMultiple > 0 ) { if ( lMultiple >= MAX_INTEPRETER_ENTRY ) { // Error, because number of recursive entries // is greater than MAX_INTEPRETER_ENTRY return( -99 ); } vSubtask = aInterpreterSave[ lMultiple -1 ].vSubtask; // save the global variables aInterpreterSave[ lMultiple -1 ].nStackPtr = g_nStackPtr; g_nStackPtr = 0; memcpy( aInterpreterSave[ lMultiple -1 ].nCallStack, g_nCallStack, zsizeof( g_nCallStack ) ); memset( g_nCallStack, 0, zsizeof( g_nCallStack ) ); aInterpreterSave[ lMultiple -1 ].vXPGView = g_vXPGView; g_vXPGView = 0; GetViewByName( &g_vStatementView, "StatementView", vSubtask, zLEVEL_SUBTASK ); aInterpreterSave[ lMultiple -1 ].vStatementView = g_vStatementView; g_vStatementView = 0; GetViewByName( &vSO, "StackObject", vSubtask, zLEVEL_SUBTASK ); aInterpreterSave[ lMultiple -1 ].vStackObject = vSO; memcpy( aInterpreterSave[ lMultiple -1 ].sValueStack, sValueStack, zsizeof( sValueStack ) ); memset( sValueStack, 0, zsizeof( sValueStack ) ); } lMultiple++; // see if we can load the XPG. if not, don't parse for now, exit out nRC = InitInterp( lpInterpSubtask, lpAppSubtask, szSrcDLLName ); if ( nRC < 0 ) { lStepRC = 1; // if the init failed return. goto EndOfInvokeInterp; } // Initialize the Working Storage Manager if ( WRKS_Init( &hWRKS ) < 0 ) { // Error in WRKS system MessageSend( vSubtask, "VM03002", "VML Interpretor", "Error Initializing Work Storage", zMSGQ_OBJECT_CONSTRAINT_ERROR, zBEEP ); TraceLineS( "VML Interpreter Error ","Initializing Work Storage" ); lStepRC = 1; // if the init failed return. goto EndOfInvokeInterp; } if ( setjmp( g_jbWRKS ) != 0 ) { // Error return from longjmp WRKS_Close( &hWRKS ); lStepRC = 1; goto EndOfInvokeInterp; } // get the program object as it was loaded by the init function. GetViewByName( &g_vXPGView, "XPG", lpInterpSubtask, zLEVEL_SUBTASK ); // try to position at the correct operation in the Subtask nRC = SetCursorFirstEntityByString( g_vXPGView, "Operation", "Name", szOperationName, "" ); if ( nRC != zCURSOR_SET ) { // no error message here, as we assume that the operation // to be called is a C operation. // Returning -1, the driver will try to load it from the DLL lStepRC = -1; goto EndOfInvokeInterp; } SetCursorFirstEntityByEntityCsr( g_vXPGView, "SourceFile", g_vXPGView, "SourceFileOfOperation", "" ); SetCursorFirstEntityByEntityCsr( g_vXPGView, "OperationSource", g_vXPGView, "Operation", "" ); SetCursorFirstEntity( g_vXPGView, "OperationText", "" ); SetCursorFirstEntity( g_vXPGView, "Statement", "" ); CreateViewFromViewForTask( &g_vStatementView, g_vXPGView, 0 ); // Create all of the entities needed in the stack object SetStackObjectFromViews( lpInterpSubtask, g_vXPGView, // View to the XPG g_vStatementView, // View to the statement 0 ); // index into the expression // Get the stack object as it was loaded with the XPG GetViewByName( &vStackObject, "StackObject", lpInterpSubtask, zLEVEL_SUBTASK ); // ###blob SetAttributeFromInteger( vStackObject, // "Variable", "Value", (zLONG)lpAppSubtask ); SetAttributeFromBlob( vStackObject, "Variable", "Value", &lpAppSubtask, sizeof( void * ) ); SetNameForView( g_vStatementView, "StatementView", lpInterpSubtask, zLEVEL_SUBTASK ); SetNameForView( lpAppSubtask, "ApplicationView", lpInterpSubtask, zLEVEL_SUBTASK ); GetViewByName( &vXChecker, "TZVSXCOO", lpInterpSubtask, zLEVEL_APPLICATION ); if ( vXChecker != 0 ) { nRC = SetCursorFirstEntityByString( vXChecker, "DialogOperation", "Name", szOperationName, "" ); if ( nRC == zCURSOR_SET ) { GetViewByName( &vZ_View, "ZeidonVML", vSubtask, zLEVEL_TASK ); GetViewByName( &vS_View, "XPG", vZ_View, zLEVEL_SUBTASK ); SetAttributeFromString( vS_View, "Operation", "CurrentDebugFlag", "Y" ); lStepRC = zXC_SETUP_DEBUGGER; goto EndOfInvokeInterp; } } // lStepRC = zXC_STEP_EXECUTED; #if 0 OperationCount( 3 ); OperationCount( 1 ); #endif // Loop through each statement using the Go function. lStepRC = Go( lpAppSubtask, hWRKS, plRC ); EndOfInvokeInterp: // close work storage manager if ( hWRKS ) WRKS_Close( &hWRKS ); lMultiple--; if ( lMultiple > 0 ) { vSubtask = aInterpreterSave[ lMultiple - 1 ].vSubtask; // restore the global variables g_nStackPtr = aInterpreterSave[ lMultiple - 1 ].nStackPtr; memcpy( g_nCallStack, aInterpreterSave[ lMultiple -1 ].nCallStack, zsizeof( g_nCallStack ) ); g_vXPGView = aInterpreterSave[ lMultiple - 1 ].vXPGView; SetNameForView( g_vXPGView, "XPG", vSubtask, zLEVEL_SUBTASK ); g_vStatementView = aInterpreterSave[ lMultiple - 1 ].vStatementView; SetNameForView( g_vStatementView, "StatementView", vSubtask, zLEVEL_SUBTASK ); vSO = aInterpreterSave[ lMultiple - 1 ].vStackObject; SetNameForView( vSO, "StackObject", vSubtask, zLEVEL_SUBTASK ); memcpy( sValueStack, aInterpreterSave[ lMultiple - 1 ].sValueStack, zsizeof( sValueStack ) ); } return( lStepRC ); }