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 = 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[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,@VM) + (RECORD NE '') FOR I = 1 TO SlotCnt WOMatRec = RECORD NEXT I IF WOMatRec NE NewStatus THEN WOMatRec = 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 = NewStatus ;* Original code SlotCnt = COUNT(RECORD,@VM) + (RECORD NE '') FOR I = 1 TO Slotcnt *WOMatRec = RECORD WOMatRec = I ;* 8/4/2011 JCH Keep all slot numbers for EPOS InCassNo = RECORD InSlotNo = RECORD IF InCassNo NE '' AND InSlotNo NE '' THEN WOMatRec = WONo:'.':InCassNo:'.':InSlotNo END ELSE WOMatRec = '' END RDSNo = RECORD IF RDSNo NE '' THEN WOMatRec = RDSNo:'.':RECORD:'.':RECORD END ELSE WOMatRec = '' END WOMatRec = RECORD WOMatRec = '' ;* Not used MUWONo = RECORD IF MUWONo NE '' THEN WOMatRec = MUWONo:'.':RECORD:'.':RECORD END ELSE WOMatRec = '' END MuWfrID = RECORD IF MuWfrID NE '' THEN WOMatRec = MuWfrID[1,'.']:'.':FIELD(MuWfrID,'.',3):'.':RECORD END ELSE WOMatRec = '' 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[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 = '' END IF FileName = 'WM_OUT' THEN WOMatRec = '' 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