Your first problem is mushing together the name of the procedure to run and the arguments.
I.e., the syntax is
RUN VALUE(ProgName) (parameters).
not
RUN VALUE(ProgNameAndParameterCombination).
Secondly, except in very unusual circumstances, you should be running a program relative to the PROPATH, not providing it with the full path name. In fact, it is good programming practice to use SEARCH to locate the .r or .p in order to make sure that you have a valid target before doing the RUN.
Third, I don't think I would be using the CHR(34) stuff either ... stick it in a variable name.
I am also unclear as to what pieces you are putting together. You start out with:
DEF VAR lookup1 AS CHAR No-Undo.
Lookup1 = ClientPath + "\Lookups\PROG\filelookup.p(" + CHR(34) + ClientPath + "\Lookups\Plant1PictureLookup600.csv" + CHR(34) + "," + CHR(34) + "Picture" + CHR(34) + ",Cmb-CrossSection,output Brwsr-Diagram)".
parsing this out into pieces might give:
define variable chProgName as character no-undo.
define variable chCSVSource as character no-undo.
define variable chOpType as character no-undo. /*or whatever that is */
/* Presumably Cmb-CrossSection and Brwsr-Diagram are variable that have already been defined and given values.
assign
chProgName = "\Lookups\PROG\filelookup.p"
chCSVSource = "\Lookups\Plant1PictureLookup600.csv"
chOptType = "Picture"
.
/* Add in ClientPath if you *have* to */
if search(ch_ProgName) ne ? or search(replace(ch_ProgName,".p",".r") ne ?
then do:
run value(chProgName) (
input chCSVSource,
input ch_OptType,
input Cmb-CrossSection,
output Brwsr-Diagram
).
end.
else do:
/* Handle missing program */
end.