COMPILE FUNCTION obj_Popup(Method,Parms) /* Methods for the Popup table 06/12/2004 JCH - Initial Coding Properties: Methods: CodeDesc(PopupID,Code) ;* Returns column 2 data for code in column 1 */ DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables DECLARE SUBROUTINE Set_Status, Msg, obj_Tables $INSERT MSG_EQUATES $INSERT POPUP_EQUATES ErrTitle = 'Error in Stored Procedure "obj_Popup"' ErrorMsg = '' IF NOT(ASSIGNED(Method)) THEN ErrorMsg = 'Unassigned parameter "Method" passed to subroutine' IF NOT(ASSIGNED(Parms)) THEN Parms = '' IF ErrorMsg NE '' THEN Set_Status(-1,ErrTitle:@SVM:ErrorMsg) RETURN '' END Result = '' BEGIN CASE CASE Method = 'CodeDesc' ; GOSUB CodeDesc CASE Method = 'DescCode' ; GOSUB DescCode CASE Method = 'CodePosition' ; GOSUB CodePosition ;* Pass in code(s), returns line position(s) as stored in the Popup CASE Method = 'AllCodes' ; GOSUB AllCodes CASE 1 END CASE IF ErrorMsg NE '' THEN Set_Status(-1,ErrTitle:@SVM:ErrorMsg) RETURN '' END RETURN Result * * * * * * * CodeDesc: * * * * * * * PopupID = Parms[1,@RM] Col1Code = Parms[COL2()+1,@RM] ColNo = Parms[COL2()+1,@RM] IF PopupID = '' THEN RETURN IF Col1Code = '' THEN RETURN IF ColNo = '' THEN ColNo = 2 IF NOT(INDEX(PopupID,'*',1)) THEN PopupID = @APPID<1>:'**':PopupID END PopupLiteral = XLATE('SYSREPOSPOPUPS',PopupID,PDISPLAY$,'X') CONVERT @VM:@SVM TO @FM:@VM IN PopupLiteral LiteralCnt = COUNT(PopupLiteral,@FM) + (PopupLiteral NE '') CodeCnt = COUNT(Col1Code,@VM) + (Col1Code NE '') FOR I = 1 TO CodeCnt Code = Col1Code<1,I> FOR J = 1 TO LiteralCnt LiteralCode = PopupLiteral UNTIL LiteralCode = Code NEXT J Result<1,I> = PopupLiteral NEXT Cnt RETURN * * * * * * * DescCode: * * * * * * * /* Pass in Description and associated code is returned. Assumes Code is in column 1 and Desc is in column2 Desc Column can be overriden by passing a number in the options ColNo parameter */ PopupID = Parms[1,@RM] DescsIn = Parms[COL2()+1,@RM] ColNo = Parms[COL2()+1,@RM] IF PopupID = '' THEN RETURN IF DescsIn = '' THEN RETURN IF ColNo = '' THEN ColNo = 2 IF NOT(INDEX(PopupID,'*',1)) THEN PopupID = @APPID<1>:'**':PopupID END PopupLiteral = XLATE('SYSREPOSPOPUPS',PopupID,PDISPLAY$,'X') CONVERT @VM:@SVM TO @FM:@VM IN PopupLiteral LiteralCnt = COUNT(PopupLiteral,@FM) + (PopupLiteral NE '') diCnt = COUNT(DescsIn,@VM) + (DescsIn NE '') FOR I = 1 TO diCnt DescIn = DescsIn<1,I> FOR J = 1 TO LiteralCnt LiteralDesc = PopupLiteral UNTIL LiteralDesc = DescIn NEXT J Result<1,I> = PopupLiteral NEXT Cnt RETURN * * * * * * * CodePosition: * * * * * * * PopupID = Parms[1,@RM] Col1Code = Parms[COL2()+1,@RM] IF PopupID = '' THEN RETURN IF Col1Code = '' THEN RETURN IF NOT(INDEX(PopupID,'*',1)) THEN PopupID = @APPID<1>:'**':PopupID END PopupLiteral = XLATE('SYSREPOSPOPUPS',PopupID,PDISPLAY$,'X') CONVERT @VM:@SVM TO @FM:@VM IN PopupLiteral LiteralCnt = COUNT(PopupLiteral,@FM) + (PopupLiteral NE '') CodeCnt = COUNT(Col1Code,@VM) + (Col1Code NE '') FOR I = 1 TO CodeCnt Code = Col1Code<1,I> FOR J = 1 TO LiteralCnt LiteralCode = PopupLiteral UNTIL LiteralCode = Code NEXT J Result<1,I> = J NEXT Cnt RETURN * * * * * * * AllCodes: * * * * * * * PopupID = Parms[1,@RM] ColNo = Parms[COL2()+1,@RM] IF PopupID = '' THEN RETURN IF ColNo = '' THEN ColNo = 1 IF NOT(INDEX(PopupID,'*',1)) THEN PopupID = @APPID<1>:'**':PopupID END PopupLiteral = XLATE('SYSREPOSPOPUPS',PopupID,PDISPLAY$,'X') CONVERT @VM:@SVM TO @FM:@VM IN PopupLiteral LiteralCnt = COUNT(PopupLiteral,@FM) + (PopupLiteral NE '') FOR I = 1 TO LiteralCnt Result<1,I> = PopupLiteral NEXT I RETURN