In this section of the tutorial, you use 
		Enterprise Developer and the 
		Interface Mapper to create a Web Services type service interface from the MFS screens in the MFDEMO application. 
	 
 
	 Create the IMSScreenWS Service Interface
 
		 
		 
		  - From the Solution Explorer in 
			 Enterprise Developer, right-click the 
			 IMSTutorial project; then click 
			 Add > 
			 New Item. 
		  
- In the left pane, expand 
			 COBOL; then click 
			 Native. 
		  
- In the center pane, click 
			 Service Interface. 
		  
- In the 
			 Name field, type 
			 IMSScreenWS; then click 
			 Add. 
		  
- On the Service Interface dialog box, select 
			 Web Service from the 
			 Type of interface drop-down list. This automatically sets the 
			 SOAP transport type.
		  
- In the 
			 Type of source field, select 
			 IMS Screen; then click 
			 OK. 
		  
At this point, 
		  Enterprise Developer adds the 
		  IMSScreenWS service interface to the Solution Explorer and invokes the 
		  Interface Mapper. 
		
 
	 Define IMSScreenWS Operations
 
		 
		Each service interface you create is comprised of a set of operations. For an IMS Screen service interface, most operations address a screen encountered by the program. Others address initialization and termination of the service. 
		
 
		The MFDEMO application is not conversational, meaning it does not maintain state. You could successfully deploy, run, and access your service without providing a way to terminate the application from a terminal. However, if this IMS application were a conversational application, you would need to add this functionality. To show how this is done, this section walks you through the process of defining the service interface to behave as if it were accessing a conversational application, enabling it to: 
		
 
		 
		  - Connect to the MFDEMO application 
		  
- Query a table in the database 
		  
- Show the returned data 
		  
- Exit the application 
		  
- Terminate on an error at any stage 
		  
Create the following operations to accommodate these requirements: 
		
 
		 
		   
			 - Start operation 
			 
- The purpose of the Start operation is to initialize the MFDEMO application by sending the transaction ID and simulating the pressing of the 
				Enter key. 
				 
				  - From the 
					 Interface Mapper, click 
					 Operation > 
					 New. 
					 This opens the Operation Properties window where you specify general information for the new operation. 
					  
- In the 
					 Operation Name field, type 
					 Start. 
					 Because this is the operation that initiates the service, there is no active screen or previous screen to specify. 
					  
- Leave the default values in the 
					 Active Screen and 
					 Previous Screen fields. 
					 The name of the transaction that initiates the MFDEMO application is MFDEMO. 
					  
- In the 
					 Transaction ID field, type 
					 MFDEMO; then click 
					 OK. 
					 To actually initiate the transaction, a user would need to then press 
						Enter. To simulate this action, you create an ATTENTION ID assigned to the 
						Enter key. ATTENTION ID defines which AID key (for example, 
						Enter, 
						PF8, etc.) to use. 
					  
- Right-click anywhere in the 
					 Assignments pane; then select 
					 New Assignment from the popup menu. 
				  
- From the 
					 Assign to drop-down list, click 
					 ATTENTION ID. 
				  
- From the 
					 Field 1/Operand 1 drop-down list, click 
					 ENTER. 
				  
- Click 
					 OK. 
				  
- Click 
					 File > Save IMSScreenWS.svi to save the service interface. 
					 This completes the Start operation. 
					  
 
  
 
- Query Data operation 
			 
-  The purpose of the Query Data operation is to send a query instruction to the application and to provide a return path to the application's main menu. 
				 
				   
					 - Create the Query Data operation 
					 
-  
						 
						  - Click 
							 Operation > 
							 New. 
						  
- In the 
							 Operation Name field, type 
							 Query Data. 
							 Now you want to set the active screen that shows the main menu of the MFDEMO application. The name of this screen is DEMO91. 
							  
- From the 
							 Active Screen drop-down list, click 
							 DEMO91. 
							 DEMO91 is the first screen you want to access, so no previous screen exists. 
							  
- From the 
							 Previous Screen drop-down list, click 
							 <None>. 
							 This operation does not initiate a transaction. 
							  
- Leave 
							 Transaction ID blank. 
							 You could have the Interface Mapper create default mappings for you, but in this tutorial you want to create the mappings yourself. 
							  
- Leave 
							 Create Default Mappings unchecked. 
						  
- Click 
							 OK. 
							 This returns you to the 
								Interface Mapper and shows the IMS Screen DEMO91 in the 
								IMS Screen pane. 
							  
 
- Create an assignment 
					 
- To query the database you need to provide the application with a function code of 
						I (for Inquire). You do this by assigning a value of 
						I to the appropriate field. 
						 
						  - On the 
							 IMS Screen: DEMO91 pane, hover over the entry field located to the right of the 
							 FUNCTION CODE label. 
							  A popup indicates that the name of this field is 
								FLD0003. You need to know the name of this field so you can create an assignment for it. 
							  
- In the 
							 Assignments pane, right-click; then click 
							 New Assignment. 
						  
- From the 
							 Assign to drop-down list, select 
							 FLD0003. 
						  
- In the 
							 Field 1/Operand 1 field, type an upper-case 
							 I, then click 
							 OK. 
							 The 
								Assignments pane now shows that 
								FLD0003 is set to a value of 
								I. 
							  
 
- Create an interface field 
					 
- You also need to provide your users with a field into which they can type the table ID for the table they want to query. You do this by creating an interface field based on the original input field on the DEMO91 screen. 
						 
						  - On the 
							 IMS Screen: DEMO91 pane, locate the input field to the right of the 
							 TABLE-ID label. 
						  
- Click and drag this field to the 
							 Interface Fields pane and drop it there. 
							 The name of this field, FLD0004, is not particularly descriptive. Because this field is really the input field for the table ID, you can rename it in the 
								Interface Mapper so that it is more recognizable. The name used here appears as the field label in your generated clients. 
							  
- In the 
							 Interface Fields pane, double-click 
							 FLD0004. 
						  
- In the 
							 Name field, type 
							 TableID. 
							 The original FLD0004 field is defined as an input/output string. By default the 
								Interface Mapper has defined this service interface equivalent as an input string, which is what you want here. No further adjustments are necessary. 
							  
- Click 
							 OK. 
							 Notice that the 
								Interface Fields and 
								Mappings panes now show the interface field with its new name, TableID. The 
								Mappings pane shows that the TableID interface field maps to the FLD0004 COBOL field. 
							  
 
- Assign an ATTENTION ID 
					 
- Once again, if your end user were interacting with the application on a terminal, they would have to press the 
						Enter key to send the table ID to the application. For the service interface, this requires that you create an ATTENTION ID assigned to the 
						Enter key. 
						 
						  - Right-click anywhere in the 
							 Assignments pane; then select 
							 New Assignment from the popup menu. 
						  
- From the 
							 Assign to drop-down list, click 
							 ATTENTION ID. 
						  
- From the 
							 Field 1/Operand 1 drop-down list, click 
							 ENTER. 
						  
- Click 
							 OK. 
						  
- Click 
							 File > Save IMSScreenWS.svi to save the service interface. 
							 This completes the Query Data operation. 
							  
 
  
 
 
- Show Data operation 
			 
-  The Show Data operation displays the data requested by the Query Data operation. 
				 
				   
					 - Create the Show Data operation 
					 
-  
						 
						  - Click 
							 Operation > 
							 New. 
						  
- In the 
							 Operation Name field, type 
							 Show Data. 
							 In this operation, you want display information from the screen that shows the returned data. The name of this screen is DEMO92. 
							  
- From the 
							 Active Screen drop-down list, click 
							 DEMO92. 
							 Because this operation requires input provided by the Query Data operation, you need to provide the name of the screen used in that operation, DEMO91. This establishes that the path to the active screen is through the DEMO91 screen. 
							  
- From the 
							 Previous Screen drop-down list, click 
							 DEMO91. 
						  
- Leave the 
							 Transaction ID field blank. 
						  
- Leave 
							 Create Default Mappings unchecked. 
						  
- Click 
							 OK. 
							  The 
								IMS Screen pane now shows the DEMO92 screen. 
							  
 
- Group Map Fields 
					 
- The MFDEMO application displays information returned from the database on the DEMO92 screen in a series of three columns across. You can simplify the service interface definition for these fields by grouping them using the Map Annotation Editor. Once grouped, you can reference grouped fields as an array when you define them in the operation. 
						 
						  - In the 
							 IMS Screen: DEMO92 pane, hover the mouse over the left-most field that appears in the first row, just below the 
							 FUNC label. 
							 A popup tells you that the name of this field is 
								FLD0014. 
							  
- Now hover your mouse over the right-most field that appears in the last row, just above the 
							 NEXT-ELEMENT label. 
							 The popup tells you that the name of this field is 
								FLD0052. 
							  
- From the Solution Explorer, right-click 
							 DEMO92.mfs; then click 
							 Edit Annotations for Services > Map DEMO92. This starts the Map Annotations Editor. 
						  
- Scroll down the list of fields until you find 
							 FLD0014; then click this field to select it. 
						  
- Continue scrolling down until you find 
							 FLD0052. Hold the 
							 Shift key down and click 
							 FLD0052 to select it and all of the fields listed between it and 
							 FLD0014. 
						  
- Move your mouse to the selected area in the Map Annotations Editor; then right-click and select 
							 Group from the popup menu. 
							 You want to group the fields just as they are displayed on the DEMO92 screen. Therefore, the number of fields in the resulting array needs to match the number of columns on the screen, which is three. 
							  
- In the 
							  Number of fields in the group field, type 
							 3. 
						  
- In the 
							 Group name prefix field, type 
							 RETURN. 
							 This prefix along with a generated group identifier (for example, GRP1) becomes a parent to the fields in the group. 
							  
- Click 
							 OK. 
							 In the Map Annotations Editor, you now see that the parent for the grouped fields is 
								RETURN-GRP1, and that this group occurs 13 times as is shown in the 
								Occurs column. The three fields listed below the parent each bear the name of the first field in each column that appears across the screen, appended by 
								Grp. The direction for all fields is defined as Input/Output. 
							  
- Click 
							 File > Save DEMO92.emp to save your changes; then close the tab containing the Map Annotations Editor. 
							 The rendering of the DEMO92 screen in the 
								Interface Mapper is automatically updated with these changes to the map. 
							  
 
- Create interface fields 
					 
- With the fields we need from the DEMO92 screen identified and grouped, you are now ready to define the interface fields that receive the returned data. In this case, you don't need to display the FUNC data from the first column on the screen. You are only interested in showing the data from the ELEMENT KEY and ELEMENT VALUE/DESCRIPTION columns. 
						 
						  - From the 
							 IMS Screen: DEMO92 pane, click and drag the following fields to the 
							 Interface Fields pane, and drop them there: 
							  
								- FLD0015Grp - located under the 
								  ELEMENT KEY label 
								
- FLD0016Grp - located under the 
								  ELEMENT VALUE/DESCRIPTION label 
								
 By default, the 
								Interface Mapper assigns the 
								Input direction to interface fields created from IMS screen Input/Output fields. Therefore, each of the interface fields you have just created is defined as an 
								Input field. However, because you want to use these fields to show data returned from the IMS database, you need to redefine their direction to 
								Output. 
							  In addition, you should also rename each of the fields to something more meaningful as the names you assign here appear as field labels in your generated clients. 
							  
- From the 
							 Interface Fields pane, double-click 
							 FLD0015Grp. 
						  
- In the 
							 Name field, type 
							 ElementKey to rename the field. 
						  
- Click 
							 Output to change the direction of the field. 
						  
- Click 
							 OK. 
						  
- Repeat steps 
							 2 through 
							 5 for the 
							 FLD0016Grp field, changing its direction to 
							 Output and renaming it to 
							 ElementValue. 
						  
 
- Create mapping conditions 
					 
- To prevent your client from displaying null values, which can show up as garbage characters, you can create mapping conditions that prevent the output fields from accepting null values from the application. 
						 
						  - From the 
							 Mappings pane, right-click 
							 ElementKey(*), then select 
							 Apply Condition from the context menu. 
						  
- In the 
							 New Name field, type 
							 KeyNotNull; then click 
							 Create. 
						  
- From the 
							 Field drop-down list, select 
							 RETURN-GRP1.FLD0015Grp(13). 
						  
- In the 
							 Field field, replace the 
							 13 with an asterisk to represent all occurrences. 
						  
- From the 
							 Operator drop-down list, click 
							 >=. 
						  
- In the 
							 Field or Literal value field, type 
							 " " (double-quote followed by a space and another double-quote). 
							 The completed defined condition is: 
								 RETURN-GRP1.FLD0015Grp(*) >=" " 
This condition mandates that only data that has a value greater than or equal to a space can be moved from 
								 RETURN-GRP1.FLD0015Grp(*) to 
								 ElementKey(*). 
							  
- Click 
							 OK to close the Condition Editor, and 
							 OK again to close the Apply Condition dialog box. 
							 You need to apply a similar condition to the other mapping. 
							  
- From the 
							 Mappings pane, right-click 
							 ElementValue(*); then select 
							 Apply Condition from the context menu. 
							 Because the condition you're creating here is so similar to the condition you created for ElementKey, you can use the condition you created for ElementKey as a starting point. 
							  
- From the 
							 Existing Condition drop-down list, select 
							 KeyNotNull. 
						  
- In the 
							 New Name field, type 
							 ValueNotNull; then click 
							 Create. 
						  
- From the 
							 Field drop-down list, select 
							 RETURN-GRP1.FLD0016Grp(13). 
						  
- In the 
							 Field field, replace the 
							 13 with an asterisk to represent all occurrences. 
							 The rest of the condition definition is the same as for KeyNotNull and is already populated in the appropriate fields. 
							  
- Click 
							 OK to close the Condition Editor; then click 
							 OK to return to the 
							 Interface Mapper. 
							 The 
								Condition column in the 
								Mappings pane now shows the conditions you defined. 
							  
- Click 
							 File > Save IMSScreenWS.svi to save the service interface. 
						  
 
- Create Assignments 
					 
- To enable this service interface to terminate the application as if from a terminal, you must add assignments to the Show Data operation that return the application to the DEMO91 screen, which is the main menu for the MFDEMO application. When done from a terminal, a user would type an 
						X into the 
						NEXT FUNCTION: RETURN field, and then press 
						Enter. To do the same in your service interface, you assign the string value 
						X to the 
						FLD0056 field, which is the name of the field labeled NEXT FUNCTION: RETURN, and then assign an ATTENTION ID for the 
						Enter key. 
						 
						  - In the 
							 Assignments pane, right-click; then select 
							 New Assignment from the context menu. 
						  
- From the 
							 Assign to drop-down list, select 
							 FLD0056. 
						  
- In the 
							 Field 1/Operand 1 field, type 
							 X, which is the value that tells the application to return to the main menu screen. 
						  
- Click 
							 OK. 
						  
- In the 
							 Assignments pane, right-click and select 
							 New Assignment from the popup menu. 
						  
- From the 
							 Assign to drop-down list, click 
							 ATTENTION ID. 
						  
- From the 
							 Field 1/Operand 1 drop-down list, click 
							 ENTER. 
						  
- Click 
							 OK. 
						  
- Click 
							 File > Save IMSScreenWS.svi to save the service interface. 
							 This completes the Show Data operation. 
							  
 
  
 
 
- Clean Exit operation 
			 
- In this operation, you supply the application with a value of 
				E (for exit) for the main menu's 
				FUNCTION CODE field (FLD0003). This action provides a clean exit from the application. 
				 
				  - Click 
					 Operation > 
					 New. 
				  
- In the 
					 Operation Name field, type 
					 Clean Exit. 
				  
- From the 
					 Active Screen drop-down list, click 
					 DEMO91. This is the name of the details screen of the application. 
				  
- From the 
					 Previous Screen drop-down list, click 
					 DEMO92 to establish that the path to the active screen is through the 
					 DEM092 screen. 
				  
- Leave the 
					 Transaction ID field blank. 
				  
- Leave 
					 Create Default Mappings unchecked. 
				  
- Click 
					 OK. The 
					 IMS Screen pane now shows the DEMO91 screen. 
				  
- In the 
					 Assignments pane, right-click and select 
					 New Assignment from the popup menu. 
				  
- From the 
					 Assign to drop-down list, click 
					 FLD0003, which is the name of the FUNCTION CODE field. 
				  
- In the 
					 Field 1/Operand 1 field, type 
					 E, which is the value that tells the application to exit. 
				  
- Click 
					 OK. 
					 Once again, you need to simulate the pressing of the 
						Enter key after providing a value for the field. 
					  
- In the 
					 Assignments pane, right-click and select 
					 New Assignment from the popup menu. 
				  
- From the 
					 Assign to drop-down list, click 
					 ATTENTION ID. 
				  
- From the 
					 Field 1/Operand 1 drop-down list, click 
					 ENTER. 
				  
- Click 
					 OK. 
				  
- Click 
					 File > Save IMSScreenWS.svi to the service interface. 
					 This completes the Clean Exit operation. 
					  
 
  
 
- Get Out operation 
			 
- Finally, you need an operation that simply terminates the service if, for some reason, the application screen for any operation does not match its specified Active Screen. This operation is provided as a failsafe only. 
				 
				  - Click 
					 Operation > 
					 New. 
				  
- In the 
					 Operation Name field, type 
					 Get Out. 
					 You need this operation to execute when the active screen and/or previous screen cannot be determined by the service. 
					  
- From the 
					 Active Screen drop-down list, click 
					 ANY SCREEN. 
				  
- From the 
					 Previous Screen drop-down list, click 
					 ANY SCREEN. 
				  
- Leave the 
					 Transaction ID field blank. 
				  
- Leave 
					 Create Default Mappings unchecked. 
				  
- Click 
					 OK. 
				  
- Click 
					 File > Save IMSScreenWS.svi to the service interface. 
					 This completes the Get Out operation. 
					  
 
  
 
You have now completed the IMSScreenWS service interface definition. Click the 
		  x on the 
		  Interface Mapper tab to close it.