296 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			296 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| COMPILE SUBROUTINE WM_MFS(Code, BFS, Handle, Name, FMC, Record, Status)
 | |
| 
 | |
| DECLARE Subroutine Msg, FSMsg, Set_Status
 | |
| DECLARE FUNCTION Set_Status, Get_Status, obj_WM_In, obj_WM_Out
 | |
| 
 | |
| COMMON /FILENAME/ Files_Array, Handles_Array
 | |
| 
 | |
| FS = DELETE(BFS,1,1,1)
 | |
| NEXTFS = FS<1,1,1>
 | |
| @FILE.ERROR = ''
 | |
| 
 | |
| $INSERT FILE.SYSTEM.ONGOSUB
 | |
| $INSERT FILE.SYSTEM.EQUATES
 | |
| $INSERT MSG_EQUATES
 | |
| $INSERT DICT_EQUATES
 | |
| $INSERT WM_OUT_EQUATES
 | |
| $INSERT WM_IN_EQUATES
 | |
| $INSERT WO_MAT_EQUATES
 | |
| 
 | |
| EQU ReadRec$ TO 1
 | |
| 
 | |
| *EQU WO_MAT_WMI_CURR_STATUS$			TO 48
 | |
| *EQU WO_MAT_WMO_CURR_STATUS$			TO 49
 | |
| 	
 | |
| RETURN
 | |
| 
 | |
| /* Directly called functions - don't pass to next file system */
 | |
| 
 | |
| INSTALL:
 | |
| FLUSH:
 | |
| UNLOCK.ALL:
 | |
| FLUSH.CACHE:
 | |
| 
 | |
| Status = 1
 | |
| RETURN
 | |
| 
 | |
| /* Not available to MFS */
 | |
| 	
 | |
| LOCK.SEMAPHORE:
 | |
| UNLOCK.SEMAPHORE:
 | |
| SET.USER.SEMAPHORE:
 | |
| 
 | |
| RETURN
 | |
| 
 | |
| /* Directory level calls */
 | |
| 
 | |
| CREATE.MEDIA:
 | |
| OPEN.MEDIA:
 | |
| CLOSE.MEDIA:
 | |
| READ.MEDIA:
 | |
| WRITE.MEDIA:
 | |
| GROUP.NUMBER:
 | |
| RECORD.COUNT:
 | |
| CREATE.FILE:
 | |
| RENAME.FILE:
 | |
| MOVE.FILE:
 | |
| DELETE.FILE:
 | |
| 
 | |
| Goto NEXT.FS
 | |
| 
 | |
| OPEN.FILE:
 | |
| 	
 | |
| 	* Call BFS in order to get file handle
 | |
| 	
 | |
| 	FS = DELETE(BFS,1,1,1)
 | |
| 	NEXTFS = FS<1,1,1>
 | |
| 	CALL @NEXTFS(Code, FS, Handle, Name, FMC, Record, Status)
 | |
| 	
 | |
| 	* Load handle and file name into labelled common
 | |
| 	
 | |
| 	IF Status THEN
 | |
| 		LOCATE Name IN Files_Array USING @FM SETTING POS THEN
 | |
| 			Handles_Array<POS> = Record
 | |
| 		END ELSE
 | |
| 			Files_Array<-1> = Name
 | |
| 			Handles_Array<-1> = Record
 | |
| 		END
 | |
| 	END
 | |
| 	RETURN
 | |
| 
 | |
| CLEARFILE:
 | |
| REMAKE.FILE:
 | |
| SELECT:
 | |
| READNEXT:
 | |
| CLEARSELECT:
 | |
| 
 | |
| READ.RECORD:
 | |
| READO.RECORD:
 | |
| 	
 | |
| 	GOTO NEXT.FS
 | |
| 	
 | |
| * * * * * * *
 | |
| WRITE.RECORD:
 | |
| * * * * * * *
 | |
| 
 | |
| 	* Get original record and compare with RECORD being written
 | |
| 	LOCATE Handle IN Handles_Array USING @FM SETTING POS ELSE
 | |
| 		mesg = "Missing file handle in WM_MFS!|"
 | |
| 		mesg := handle
 | |
| 		MSG('',mesg)
 | |
| 		GOTO NEXT.FS
 | |
| 	END
 | |
| 	
 | |
| 	FileName = Files_Array<POS>[1,'*']		;* Extract corresponding file name
 | |
| 		
 | |
| 	Write_Flag	= 0
 | |
| 	OrgRecord	= ''
 | |
| 	NextFS 		= BFS<1,1,2>
 | |
| 	
 | |
| 	CALL @NextFS(ReadRec$, FS, Handle, Name, FMC, OrgRecord, Status)  ;* Read old record
 | |
| 	
 | |
| 	OPEN 'WO_MAT' TO WOMatFile ELSE
 | |
| 		MSG('',"Unable to open 'WO_MAT' table in WM_MFS")
 | |
| 		GOTO NEXT.FS
 | |
| 	END
 | |
| 	
 | |
| 	IF FileName = 'WM_IN' THEN
 | |
| 
 | |
| 		WONo	= Name[1,'*']
 | |
| 		WOStep	= Name[COL2()+1,'*']
 | |
| 		CassNo	= Name[COL2()+1,'*']
 | |
| 		
 | |
| 		Set_Status(0)
 | |
| 		NewStatus = obj_WM_In('CurrStatus',Name:@RM:RECORD)
 | |
| 		
 | |
| 		IF Get_Status(errCode) THEN
 | |
| 			NewStatus = 'ERR'
 | |
| 		END
 | |
| 		
 | |
| 		WOMatKey = WONo:'*':CassNo
 | |
| 		READ WOMatRec FROM WOMatFile,WOMatKey THEN
 | |
| 		
 | |
| 			SlotCnt = COUNT(RECORD<WM_IN_SLOT_NO$>,@VM) + (RECORD<WM_IN_SLOT_NO$> NE '')
 | |
| 			
 | |
| 			FOR I = 1 TO SlotCnt
 | |
| 				WOMatRec<WO_MAT_SLOT_MET_NO$,I> = RECORD<WM_IN_SLOT_MET_NO$,I>
 | |
| 			NEXT I
 | |
| 		
 | |
| 			IF WOMatRec<WO_MAT_WMI_CURR_STATUS$> NE NewStatus THEN
 | |
| 				WOMatRec<WO_MAT_WMI_CURR_STATUS$> = NewStatus
 | |
| 			END
 | |
| 			
 | |
| 			WRITE WOMatRec ON WOMatFile,WOMatKey ELSE Null
 | |
| 			
 | |
| 		END ELSE
 | |
| 			*MSG('',"Unable to read 'WO_MAT' record ":QUOTE(WOMatKey):" in WM_MFS")
 | |
| 			GOTO NEXT.FS
 | |
| 		END
 | |
| 			
 | |
| 
 | |
| 	END	;* End of check for WM_IN table
 | |
| 	
 | |
| 	
 | |
| 	IF FileName = 'WM_OUT' THEN
 | |
| 		
 | |
| 		WONo	= Name[1,'*']
 | |
| 		WOStep	= Name[COL2()+1,'*']
 | |
| 		CassNo	= Name[COL2()+1,'*']
 | |
| 		
 | |
| 		Set_Status(0)
 | |
| 		NewStatus = obj_WM_Out('CurrStatus',Name:@RM:RECORD)
 | |
| 		
 | |
| 		IF Get_Status(errCode) THEN
 | |
| 			NewStatus = 'ERR'
 | |
| 		END
 | |
| 		
 | |
| 		WOMatKey = WONo:'*':CassNo
 | |
| 		
 | |
| 		READ WOMatRec FROM WOMatFile,WOMatKey ELSE WOMatRec = ''
 | |
| 		
 | |
| 		* Smaller outbound boxes won't have WO_MAT records when the are being created so it happens here.
 | |
| 			
 | |
| 			WOMatRec<WO_MAT_WMO_CURR_STATUS$> = NewStatus		;* Original code
 | |
| 			
 | |
| 			SlotCnt = COUNT(RECORD<WM_OUT_SLOT_NO$>,@VM) + (RECORD<WM_OUT_SLOT_NO$> NE '')
 | |
| 			
 | |
| 			FOR I = 1 TO Slotcnt
 | |
| 				*WOMatRec<WO_MAT_EPO_SLOT$,I> = RECORD<WM_OUT_SLOT_NO$,I>
 | |
| 				
 | |
| 				WOMatRec<WO_MAT_EPO_SLOT$,I> = I								;* 8/4/2011 JCH Keep all slot numbers for EPOS
 | |
| 				
 | |
| 				InCassNo = RECORD<WM_OUT_IN_CASS_NO$,I>
 | |
| 				InSlotNo = RECORD<WM_OUT_IN_SLOT_NO$,I>
 | |
| 				
 | |
| 				IF InCassNo NE '' AND InSlotNo NE '' THEN
 | |
| 					WOMatRec<WO_MAT_EPOS_WFR_IN$,I> = WONo:'.':InCassNo:'.':InSlotNo
 | |
| 				END ELSE
 | |
| 					WOMatRec<WO_MAT_EPOS_WFR_IN$,I> = ''
 | |
| 				END
 | |
| 				
 | |
| 				RDSNo = RECORD<WM_OUT_RDS$,I>
 | |
| 				
 | |
| 				IF RDSNo NE '' THEN
 | |
| 					WOMatRec<WO_MAT_EPOS_RUN_ID$,I>			= RDSNo:'.':RECORD<WM_OUT_POCKET$,I>:'.':RECORD<WM_OUT_ZONE$,I>
 | |
| 				END ELSE
 | |
| 					WOMatRec<WO_MAT_EPOS_RUN_ID$,I> = ''
 | |
| 				END
 | |
| 				
 | |
| 				WOMatRec<WO_MAT_EPOS_NCR$,I>			= RECORD<WM_OUT_SLOT_NCR$,I>
 | |
| 				WOMatRec<WO_MAT_EPOS_MET_NO$,I>			= ''	;* Not used
 | |
| 				
 | |
| 				MUWONo = RECORD<WM_OUT_MU_WO_NO$,I>
 | |
| 				
 | |
| 				IF MUWONo NE '' THEN
 | |
| 					WOMatRec<WO_MAT_EPOS_REP_WAFER_ID$,I>	= MUWONo:'.':RECORD<WM_OUT_MU_CASS_NO$,I>:'.':RECORD<WM_OUT_MU_SLOT_NO$,I>
 | |
| 				END ELSE
 | |
| 					WOMatRec<WO_MAT_EPOS_REP_WAFER_ID$,I> = ''
 | |
| 				END
 | |
| 				
 | |
| 				MuWfrID = RECORD<WM_OUT_UMW_CASS_ID$,I>
 | |
| 				
 | |
| 				IF MuWfrID NE '' THEN
 | |
| 					WOMatRec<WO_MAT_EPOS_MOVED_TO$,I> = MuWfrID[1,'.']:'.':FIELD(MuWfrID,'.',3):'.':RECORD<WM_OUT_UMW_SLOT_NO$,I>
 | |
| 				END ELSE
 | |
| 					WOMatRec<WO_MAT_EPOS_MOVED_TO$,I> = ''
 | |
| 				END
 | |
| 				
 | |
| 			NEXT I
 | |
| 			
 | |
| 			
 | |
| 			WRITE WOMatRec ON WOMatFile,WOMatKey ELSE Null
 | |
| 			
 | |
| 		
 | |
| 	END	;* End of check for WM_OUT table
 | |
| 	
 | |
| 	
 | |
| 	
 | |
| 	GOTO NEXT.FS
 | |
| 	
 | |
| 	
 | |
| * * * * * * *
 | |
| DELETE.RECORD:
 | |
| * * * * * * *
 | |
| 
 | |
| 	LOCATE Handle IN Handles_Array USING @FM SETTING POS ELSE
 | |
| 		mesg = "Missing file handle in DUEIN_MFS!|"
 | |
| 		mesg := handle
 | |
| 		MSG('',mesg)
 | |
| 		GOTO NEXT.FS
 | |
| 	END
 | |
| 	
 | |
| 	FileName = Files_Array<POS>[1,'*']		;* Extract corresponding file name
 | |
| 	
 | |
| 	OPEN 'WO_MAT' TO WOMatFile ELSE
 | |
| 		MSG('',"Unable to Open 'WO_MAT' table in DueIn_MFS")
 | |
| 		GOTO NEXT.FS
 | |
| 	END
 | |
| 
 | |
| 	OrgRecord	= ''
 | |
| 	NextFS		= BFS<1,1,2>
 | |
| 
 | |
| 	CALL @NextFS(ReadRec$, FS, Handle, Name, FMC, OrgRecord, Status)  ;* Read old record
 | |
| 	
 | |
| 	WONo	= Name[1,'*']
 | |
| 	WOStep	= Name[COL2()+1,'*']
 | |
| 	CassNo	= Name[COL2()+1,'*']
 | |
| 	
 | |
| 	WOMatKey = WONo:'*':CassNo
 | |
| 	
 | |
| 	READ WOMatRec FROM WOMatFile,WOMatKey THEN
 | |
| 		IF FileName = 'WM_IN' THEN
 | |
| 			WOMatRec<WO_MAT_WMI_CURR_STATUS$> = ''
 | |
| 		END
 | |
| 		
 | |
| 		IF FileName = 'WM_OUT' THEN
 | |
| 			WOMatRec<WO_MAT_WMO_CURR_STATUS$> = ''
 | |
| 		END
 | |
| 		
 | |
| 		WRITE WOMatRec ON WOMatFile,WOMatKey ELSE Null
 | |
| 	END ELSE
 | |
| 		*MSG('',"Unable to read 'WO_MAT' record ":QUOTE(WOMatKey):" in WM_MFS")
 | |
| 		GOTO NEXT.FS
 | |
| 	END
 | |
| 	
 | |
| 	GOTO NEXT.FS
 | |
| 
 | |
| /*   Unused calls  */
 | |
| LOCK.RECORD:
 | |
| UNLOCK.RECORD:
 | |
| RESERVED:
 | |
| OMNI.SCRIPT:
 | |
| 
 | |
| CREATE.INDEX:
 | |
| DELETE.INDEX:
 | |
| SELECT.INDEX:
 | |
| UPDATE.INDEX:
 | |
| READNEXT.INDEX:
 | |
| 
 | |
| NEXT.FS:
 | |
| 
 | |
| 	FS = DELETE(BFS,1,1,1)
 | |
| 	NEXTFS = FS<1,1,1>
 | |
| 	CALL @NEXTFS(Code, FS, Handle, Name, FMC, Record, Status)
 | |
| 	RETURN
 | |
| 
 |