subroutine DC.ITEM( item, assoc.name, assoc.item, result ) ******************************************************************************* * * Convert dictionary item(s) from Pick to Uni*Verse format: * convert a single item * * Module %M% Version %I% Date %H% * * (c) Copyright 1998 Ardent Software Inc. - All Rights Reserved * This is unpublished proprietary source code of Ardent Software Inc. * The copyright notice above does not evidence any actual or intended * publication of such source code. * ******************************************************************************* * * Maintenence log - insert most recent change descriptions at top * * Date.... GTAR# WHO Description......................................... * 10/22/98 23801 SAP Change company name to Ardent. * 10/14/98 23801 SAP Change copyrights. * 06/30/90 7237 JWT pass pick conversions through without change * 01/12/90 6779 JWT dont do vm to ; conversion * 07/25/88 - - Maintenence log purged at 5.2.1, see release 5.1.10. * ******************************************************************************* * * The basis for this Pick-to-Uni*Verse dictionary converter was a * Microdata-to-Prime converter written by J. Michael Cannady and * Thomas J. Rauschenbach of Fulcrum Computer Group, Inc. Ardent * was granted permission to use that code by Infocel, Inc., a successor * of Fulcrum. * ******************************************************************************* * * Convert a single dictionary item from Pick to Uni*Verse format. * * Arguments: * item - On entry, the Pick dictionary item to convert. * On return, the Uni*Verse item to write. * assoc.name - On entry, null. On return, the name of any * "ASSOCnn" phrase to write to the dictionary. * assoc.item - On entry, null. On return, the association phrase * named by "assoc.name" * result - Boolean: returned "true" if the conversion is * successful, false otherwise * ******************************************************************************* * $options DEFAULT $include UNIVERSE.INCLUDE DC.COMM.DECL * equ true to 1 equ false to 0 equ CR to char( 13 ) : char( 10 ) CRT.COL = 26 LPTR.COL = 26 assoc.name = "" assoc.item = "" result = true pick.item = item * * * * ****************************************************************************** * * Look for associated multivalues. On regular Pick systems, they're * specified in attribute 4 in the forms "C;AMC[;AMC...;AMC]" and "D;AMC". * On a Microdata, they're specified as correlatives in the forms * "D1;AMC[;AMC...;AMC]" and "D2;AMC". For convenience, we seek out the * Microdata form and change it to the Pick form before processing. * ****************************************************************************** * if pick.item< 8 > <> "" then assoc = "" for i = 1 to ( count( pick.item< 8 >, @VM ) + 1 ) temp = pick.item< 8, i > if temp matches "D1;0X" then assoc = "C;" : temp[ 4, len( temp ) - 3 ] pick.item = delete( pick.item, 8, i, 0 ) end else if temp matches "D2;1N0N" then assoc = "D;" : temp[ 4, len( temp ) - 3 ] pick.item = delete( pick.item, 8, i, 0 ) end end next i convert "," to ";" in assoc; * in case they can't type pick.item< 4 > = assoc end * * * A.AMC = pick.item< 2 > ;* set up COMMON variables name = "@RECORD< " : A.AMC : " >" * * Strip leading spaces from correlative/conversion attributes. * pick.item<8> = trimf(pick.item<8>) pick.item<7> = trimf(pick.item<7>) psource = pick.item< 8 > ;* Pick correlative ucode = "" ;* in COMMON PARSE.ONLY = true ;* Really convert the code call @DC.CORR.CONV( pick.item< 2 >, name, psource, ucode, result ) if result and ucode and psource = "" then * convert @VM to ";" in ucode; * pick.item< 8 > = ucode ;* I code from correlative end else if not( NO.ERR ) then ins FILE : " " : ITEM.NAME before ERR.REC< -1 > end end * * if result then psource = pick.item< 7 > ;* Pick conversion(s) if psource then ucode = "" ;* in COMMON PARSE.ONLY = true ;* just check the syntax call @DC.CORR.CONV( pick.item< 2 >, name, psource, ucode, result ) if result and ucode and psource = "" then * pick.item< 7 > = ucode ;* Uni*Verse conversion(s) end else if not( NO.ERR ) then ins FILE : " " : ITEM.NAME before ERR.REC< -1 > end end end end * * if pick.item< 4 > matches "C;0X" then; * primary associated mv assoc.name = "ASSOC" : pick.item< 2 > assoc.item = "" assoc.item< 1 > = "PH" assoc.item< 2 > = ITEM.NAME for i = 2 to ( count( pick.item< 4 >, ";" ) + 1 ) assoc.item< 2 > = assoc.item< 2 >:" ":field( pick.item< 4 >, ";", i ) next i assoc.item< 2 > = trim( assoc.item< 2 >) end universe.item = pick.item item = universe.item * * return end