pears.GetQuestGroup

Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.

CREATE FUNCTION "pears"."GetQuestGroup"( 
  /* Application Maintained Function / Procedure - DO NOT EDIT*/
  IN "stagloc" CHAR(3),IN "stagid" CHAR(10),IN "sparentid" CHAR(20) ) 
RETURNS long VARCHAR
BEGIN
  DECLARE "rv" long VARCHAR;
  DECLARE "prevtag" CHAR(3);
  DECLARE "multidesc" long VARCHAR;
  DECLARE "comma" CHAR(2);
  DECLARE "staggroup" CHAR(10);
  DECLARE "QUESTGROUPMARKER" CHAR(1);
  SET "QUESTGROUPMARKER" = "char"(127);
  SET "rv" = '';
  SET "staggroup" = '%';
  SET "stagid" = "trim"("isnull"("stagid",''));
  IF "left"("stagid",1) = '*' THEN
    SET "staggroup" = "trim"("right"("stagid","length"("stagid")-1));
    SET "stagid" = '%';
    IF "staggroup" = '' THEN
      SET "staggroup" = '[^-]%'
    END IF END IF;
  SET "prevtag" = '';
  SET "multidesc" = '';
  FOR "fetchfor" AS "fetchcursor" no scroll cursor FOR
    SELECT "tagchoice"."tagchoiceparentid","tagvalue"."tagid","tagvalue"."tagchoiceid","tagvalue"."value","tagchoice"."description","tag"."tagtype",(IF "trim"("isnull"("tag"."units",'')) <> '' THEN ' '+"tag"."units" ELSE '' endif) AS "units",
      (IF "tag"."tagtype" = 'G' THEN
        (SELECT FIRST "description" FROM "tagchoice" AS "s" WHERE "tagvalue"."value" = "s"."value" AND "tagvalue"."taglocation" = "s"."taglocation" AND "tagvalue"."tagid" = "s"."tagid" AND "s"."subchoice" = 1)
      ELSE
        IF "tag"."tagtype" = 'Q' THEN
          (SELECT FIRST "description" FROM "tagchoice" AS "s"
            WHERE "tagvalue"."taglocation" = "s"."taglocation" AND "tagvalue"."tagid" = "s"."tagid"
            AND "s"."tagchoiceid" = any(SELECT "tagchoiceparentid" FROM "tagchoice" AS "C"
              WHERE "tagvalue"."taglocation" = "C"."taglocation" AND "tagvalue"."tagid" = "C"."tagid" AND "C"."tagchoiceid" = "tagvalue"."tagchoiceid"))
        ELSE NULL
        endif
      endif) AS "subchoicedescription" FROM "tagvalue" KEY JOIN("tag","tagchoice") WHERE "tag"."tagtype" LIKE '[LGSQ]'
      AND "tagvalue"."taglocation" = "stagloc" AND "tagvalue"."id" = "sparentid" AND "tagvalue"."tagid" LIKE "stagid" AND "string"("tag"."displaygroup",'') LIKE "staggroup"
      ORDER BY "tag"."sortorder" ASC,"tag"."tagid" ASC,"tagchoice"."sortorder" ASC FOR READ ONLY do
    IF "tagid" <> "prevtag" THEN
      IF "multidesc" <> '' THEN
        SET "rv" = "string"("rv","QUESTGROUPMARKER","prevtag",'DESCRIP',"QUESTGROUPMARKER","multidesc")
      END IF;
      SET "rv" = "string"("rv","QUESTGROUPMARKER","tagid","QUESTGROUPMARKER");
      SET "prevtag" = "tagid";
      SET "multidesc" = '';
      SET "comma" = ''
    END IF;
    IF "tagtype" <> 'Q' THEN
      SET "rv" = "string"("rv","tagchoiceid","char"(9),"value","char"(13),"char"(10));
      SET "multidesc" = "string"("multidesc","comma","description")
    ELSE
      SET "rv" = "string"("rv","tagchoiceparentid","char"(9),"tagchoiceid","char"(13),"char"(10));
      SET "multidesc" = "string"("multidesc","comma","subchoicedescription")
    END IF;
    SET "comma" = ', ';
    CASE "tagtype" WHEN 'G' THEN
      SET "multidesc" = "string"("multidesc",' ',"subchoicedescription") WHEN 'Q' THEN
      SET "multidesc" = "string"("multidesc",' ',"description") WHEN 'S' THEN
      SET "multidesc" = "string"("multidesc",' ',"value","units") WHEN 'L' THEN
      IF "tagchoiceid" = '*' THEN
        SET "multidesc" = "string"("multidesc",' ',"value")
      END IF
    END CASE END FOR;
  IF "multidesc" <> '' THEN
    SET "rv" = "string"("rv","QUESTGROUPMARKER","prevtag",'DESCRIP',"QUESTGROUPMARKER","multidesc")
  END IF;
  RETURN "rv"
END
  • database/functions/pears_getquestgroup.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1