<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=ConvCase</id>
	<title>ConvCase - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=ConvCase"/>
	<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=ConvCase&amp;action=history"/>
	<updated>2026-04-28T22:12:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://pickwiki.org/index.php?title=ConvCase&amp;diff=1618&amp;oldid=prev</id>
		<title>Conversion script: link fix</title>
		<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=ConvCase&amp;diff=1618&amp;oldid=prev"/>
		<updated>2015-02-26T23:48:53Z</updated>

		<summary type="html">&lt;p&gt;link fix&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This program will convert the case of records or @IDs.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!&lt;br /&gt;
** Convert case of record&lt;br /&gt;
** (C) Copyright 1985-2007, Advantos Systems, Inc.  All Rights Reserved.&lt;br /&gt;
!&lt;br /&gt;
** Last Modified: 11 Mar 2007, wph&lt;br /&gt;
** First Created: 01 Jul 1992, wph&lt;br /&gt;
** Program Type-: Utility&lt;br /&gt;
!&lt;br /&gt;
** Notes:&lt;br /&gt;
**&lt;br /&gt;
** This process changes the case of record items.&lt;br /&gt;
**&lt;br /&gt;
**-------------------------------------------------------------------**&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**                    I N I T I A L I Z A T I O N                    **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**-------------------------------------------------------------------**&lt;br /&gt;
*&lt;br /&gt;
** initialize local variables&lt;br /&gt;
*$OPTIONS EXT                     ; ** D3 version&lt;br /&gt;
&lt;br /&gt;
SP1     = &amp;#039; &amp;#039;&lt;br /&gt;
[[UpdCnt]]  = 0&lt;br /&gt;
[[ReadCnt]] = 0&lt;br /&gt;
NULL$   = &amp;#039;&amp;#039;&lt;br /&gt;
[[DictSw]]  = NULL$&lt;br /&gt;
*&lt;br /&gt;
** read tcl line&lt;br /&gt;
[[TclLine]] = @SENTENCE                      ; ** UD version&lt;br /&gt;
*[[TclLine]] = @COMMAND                       ; ** UV version&lt;br /&gt;
*TCLREAD [[TclLine]]                          ; ** D3 version&lt;br /&gt;
[[TclLine]]  = TRIM([[TclLine]])&lt;br /&gt;
*&lt;br /&gt;
** parse out command and options&lt;br /&gt;
OPTIONS = FIELD([[TclLine]], &amp;#039;(&amp;#039;, 2)         ; ** U2 version&lt;br /&gt;
*OPTIONS  = SYSTEM(15)                    ; ** D3 version&lt;br /&gt;
[[TclLine]] = TRIM(FIELD([[TclLine]], &amp;#039;(&amp;#039;, 1))&lt;br /&gt;
OPTIONS = TRIM(OPTIONS)&lt;br /&gt;
*&lt;br /&gt;
** convert spaces to attribute marks for string manipulation&lt;br /&gt;
CONVERT &amp;#039; &amp;#039; TO @AM IN [[TclLine]]&lt;br /&gt;
[[TclLine]] = DELETE([[TclLine]], 1)     ; ** remove command from line&lt;br /&gt;
FNAME   = [[TclLine]]&amp;lt;1&amp;gt;&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;?&amp;#039;, 1) THEN FNAME = &amp;#039;?&amp;#039;&lt;br /&gt;
*&lt;br /&gt;
** help option&lt;br /&gt;
IF FNAME = &amp;#039;?&amp;#039; THEN GOTO DISPLAY.HELP&lt;br /&gt;
*&lt;br /&gt;
** get file name&lt;br /&gt;
IF FNAME = &amp;#039;&amp;#039; THEN STOP 10&lt;br /&gt;
IF FNAME = &amp;#039;DICT&amp;#039; OR FNAME = &amp;#039;DATA&amp;#039; THEN&lt;br /&gt;
   IF FNAME = &amp;#039;DICT&amp;#039; THEN [[DictSw]] = &amp;#039;DICT&amp;#039;&lt;br /&gt;
   FNAME   = TRIM([[TclLine]]&amp;lt;2&amp;gt;)&lt;br /&gt;
   [[TclLine]] = DELETE([[TclLine]],1)&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
** open file to process&lt;br /&gt;
OPEN [[DictSw]], FNAME TO FNAME.FV ELSE&lt;br /&gt;
   CRT &amp;#039;...No &amp;#039; : FNAME : &amp;#039; file available&amp;#039;&lt;br /&gt;
   GOTO END.OF.PROGRAM&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
IF FNAME[LEN(FNAME),1] = &amp;#039;,&amp;#039; THEN&lt;br /&gt;
   ANAME = FIELD(FNAME, &amp;#039;,&amp;#039;, 1)&lt;br /&gt;
   DNAME = FIELD(FNAME, &amp;#039;,&amp;#039;, 2)&lt;br /&gt;
   IF DNAME = &amp;#039;&amp;#039; ELSE DNAME = DNAME:&amp;#039;,&amp;#039;&lt;br /&gt;
END ELSE&lt;br /&gt;
   ACCTP = 2                                   ; ** U2 version&lt;br /&gt;
*  IF SYSTEM(29) THEN ACCTP = 2 ELSE ACCTP = 3 ; ** D3 version&lt;br /&gt;
   OPUT  = OCONV(&amp;#039;&amp;#039;, &amp;#039;[[U50BB]]&amp;#039;)&lt;br /&gt;
   ANAME = FIELD(OPUT, &amp;#039; &amp;#039;, ACCTP)&lt;br /&gt;
   DNAME = &amp;#039;&amp;#039;&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
** remove file from command and parse options&lt;br /&gt;
[[TclLine]] = DELETE([[TclLine]], 1)&lt;br /&gt;
IF [[TclLine]] = &amp;#039;&amp;#039;           THEN TCLFLG = 0 ELSE TCLFLG = 1&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;I&amp;#039;, 1) THEN IDSUPP = 1 ELSE IDSUPP = 0&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;O&amp;#039;, 1) THEN OFLG   = 1 ELSE OFLG   = 0&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;U&amp;#039;, 1) THEN UCSW   = 1 ELSE UCSW   = 0&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;L&amp;#039;, 1) THEN&lt;br /&gt;
   LCSW  = 1&lt;br /&gt;
   CASCV = &amp;#039;MCL&amp;#039;&lt;br /&gt;
END ELSE&lt;br /&gt;
   LCSW  = 0&lt;br /&gt;
   CASCV = &amp;#039;MCU&amp;#039;&lt;br /&gt;
END&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;Q&amp;#039;, 1) THEN&lt;br /&gt;
   QUOTESW = 1&lt;br /&gt;
   IF INDEX(OPTIONS, &amp;#039;E&amp;#039;, 1) THEN EXEC = 1 ELSE EXEC = 0&lt;br /&gt;
END ELSE&lt;br /&gt;
   QUOTESW = 0&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
** make sure if Key Only is chosen &amp;#039;Q&amp;#039; &amp;amp; &amp;#039;E&amp;#039; options are deactivated&lt;br /&gt;
IF INDEX(OPTIONS, &amp;#039;K&amp;#039;, 1) THEN&lt;br /&gt;
   UPDKEY  = 1&lt;br /&gt;
   EXEC    = 0&lt;br /&gt;
   QUOTESW = 0&lt;br /&gt;
END ELSE&lt;br /&gt;
   UPDKEY = 0&lt;br /&gt;
END&lt;br /&gt;
**&lt;br /&gt;
**-------------------------------------------------------------------**&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**                 S T A R T   P R O G R A M   R U N                 **&lt;br /&gt;
**                                                                   **&lt;br /&gt;
**-------------------------------------------------------------------**&lt;br /&gt;
*&lt;br /&gt;
** Process record(s)&lt;br /&gt;
EOJ      = 0&lt;br /&gt;
FTIME    = 1&lt;br /&gt;
SEL.LIST = SYSTEM(11)&lt;br /&gt;
LOOP&lt;br /&gt;
   IF SEL.LIST THEN&lt;br /&gt;
      READNEXT ID ELSE EOJ = 1&lt;br /&gt;
   END ELSE&lt;br /&gt;
      IF TCLFLG THEN&lt;br /&gt;
         ID      = [[TclLine]]&amp;lt;1&amp;gt;&lt;br /&gt;
         [[TclLine]] = DELETE([[TclLine]], 1)&lt;br /&gt;
         IF ID = &amp;#039;&amp;#039; THEN EOJ = 1&lt;br /&gt;
      END ELSE&lt;br /&gt;
         CRT &amp;#039;ENTER ID: &amp;#039;:&lt;br /&gt;
         INPUT ID&lt;br /&gt;
         IF ID = &amp;#039;&amp;#039; THEN EOJ = 1&lt;br /&gt;
      END&lt;br /&gt;
   END&lt;br /&gt;
   ID = TRIM(ID)&lt;br /&gt;
UNTIL EOJ DO&lt;br /&gt;
   IF FTIME THEN&lt;br /&gt;
      FTIME = 0&lt;br /&gt;
      IF ID = &amp;#039;*&amp;#039; THEN&lt;br /&gt;
         SEL.LIST = 1&lt;br /&gt;
         SELECT&lt;br /&gt;
         READNEXT ID ELSE GOTO END.OF.PROGRAM&lt;br /&gt;
      END&lt;br /&gt;
   END&lt;br /&gt;
   [[ReadCnt]] += 1                        ; ** increment read count&lt;br /&gt;
   READU ITEM FROM FNAME.FV, ID THEN&lt;br /&gt;
*     IF SYSTEM(0) = 10 THEN                      ; ** D3 version&lt;br /&gt;
*        RELEASE FNAME.FV, ID          ; ** binary  ** D3 version&lt;br /&gt;
*     END ELSE                                    ; ** D3 version&lt;br /&gt;
         IF NOT(UPDKEY) AND (UCSW OR LCSW) THEN&lt;br /&gt;
            [[NoOfAms]] = DCOUNT(ITEM, @AM)&lt;br /&gt;
            FOR A = 1 TO [[NoOfAms]]&lt;br /&gt;
               LN  = ITEM&amp;lt;A&amp;gt;&lt;br /&gt;
               IND = INDEX(LN, &amp;#039;CHAIN &amp;#039;, 1)&lt;br /&gt;
               IF IND ELSE IND = INDEX(LN, &amp;#039;TCL &amp;#039;,     1)&lt;br /&gt;
               IF IND ELSE IND = INDEX(LN, &amp;#039;EXECUTE &amp;#039;, 1)&lt;br /&gt;
               GOSUB CASE.CONVERT &lt;br /&gt;
               ITEM&amp;lt;A&amp;gt; = LN&lt;br /&gt;
            NEXT A&lt;br /&gt;
         END&lt;br /&gt;
         IF UPDKEY THEN&lt;br /&gt;
            DELETE FNAME.FV, ID&lt;br /&gt;
            ID = OCONV(ID, CASCV)     ; ** convert ID to upper/lower case&lt;br /&gt;
         END&lt;br /&gt;
         WRITE ITEM ON FNAME.FV, ID&lt;br /&gt;
&lt;br /&gt;
** increment update count and display progress&lt;br /&gt;
         [[UpdCnt]] += 1&lt;br /&gt;
         IF NOT(IDSUPP) THEN &lt;br /&gt;
            IF OFLG THEN&lt;br /&gt;
               CRT ID : SP1 :&lt;br /&gt;
            END ELSE&lt;br /&gt;
               IF NOT(MOD([[UpdCnt]], 100)) THEN CRT &amp;#039;.&amp;#039; :&lt;br /&gt;
            END&lt;br /&gt;
         END&lt;br /&gt;
*     END                                         ; ** D3 version&lt;br /&gt;
   END ELSE&lt;br /&gt;
      RELEASE FNAME.FV, ID&lt;br /&gt;
      STOP 202, ID&lt;br /&gt;
   END&lt;br /&gt;
REPEAT&lt;br /&gt;
*&lt;br /&gt;
GOTO END.OF.PROGRAM&lt;br /&gt;
*&lt;br /&gt;
**----------------------------------------------------------------**&lt;br /&gt;
**                                                                **&lt;br /&gt;
**                     S U B R O U T I N E S                      **&lt;br /&gt;
**                                                                **&lt;br /&gt;
**----------------------------------------------------------------**&lt;br /&gt;
*&lt;br /&gt;
** Convert the case of a line&lt;br /&gt;
***************&lt;br /&gt;
CASE.CONVERT:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
FIRST.CHAR.YET = 0             ; ** non-space character&lt;br /&gt;
COMMENT.SW     = 0             ; ** is this a comment&lt;br /&gt;
IF QUOTESW THEN&lt;br /&gt;
   DQ.SW   = 0                 ; ** double-quote switch&lt;br /&gt;
   SQ.SW   = 0                 ; ** single-quote switch&lt;br /&gt;
   BS.SW   = 0                 ; ** back-slash switch&lt;br /&gt;
   CC.HIGH = LEN(LN)&lt;br /&gt;
   FOR CCX = 1 TO CC.HIGH&lt;br /&gt;
      CC.CHAR = LN[CCX,1]      ; ** get the character&lt;br /&gt;
*&lt;br /&gt;
** process if we&amp;#039;re not in a string$&lt;br /&gt;
      IF NOT(DQ.SW) AND NOT(SQ.SW) AND NOT(BS.SW) THEN&lt;br /&gt;
*&lt;br /&gt;
** is the 1st non-space character of the line?      &lt;br /&gt;
         IF NOT(FIRST.CHAR.YET) THEN&lt;br /&gt;
            BEGIN CASE&lt;br /&gt;
               CASE CC.CHAR   = &amp;#039; &amp;#039;  ; GOTO NEXT.CCX&lt;br /&gt;
               CASE CC.CHAR   = &amp;#039;*&amp;#039;  ; COMMENT.SW = 1&lt;br /&gt;
               CASE CC.CHAR   = &amp;#039;!&amp;#039;  ; COMMENT.SW = 1&lt;br /&gt;
               CASE LN[CCX,4] = &amp;#039;REM &amp;#039;&lt;br /&gt;
                  COMMENT.SW = 1&lt;br /&gt;
                  CCX       += 4&lt;br /&gt;
                  CC.CHAR    = LN[CCX,1]&lt;br /&gt;
            END CASE&lt;br /&gt;
            FIRST.CHAR.YET = 1&lt;br /&gt;
         END&lt;br /&gt;
*&lt;br /&gt;
** determine if we&amp;#039;re starting an un-commented string$&lt;br /&gt;
         IF NOT(COMMENT.SW) THEN&lt;br /&gt;
            BEGIN CASE&lt;br /&gt;
               CASE CC.CHAR = &amp;#039;&amp;quot;&amp;#039;  ; DQ.SW = 1&lt;br /&gt;
               CASE CC.CHAR = &amp;quot;&amp;#039;&amp;quot;  ; SQ.SW = 1&lt;br /&gt;
               CASE CC.CHAR = &amp;#039;\&amp;#039;  ; BS.SW = 1&lt;br /&gt;
               CASE CC.CHAR = &amp;#039;;&amp;#039;  ; FIRST.CHAR.YET = 0&lt;br /&gt;
               CASE 1&lt;br /&gt;
                  CC.CHAR = OCONV(CC.CHAR, CASCV)&lt;br /&gt;
                  LN[CCX,1] = CC.CHAR&lt;br /&gt;
            END CASE&lt;br /&gt;
         END&lt;br /&gt;
      END ELSE&lt;br /&gt;
*&lt;br /&gt;
* see if we need to un-string$ the string otherwise leave it alone&lt;br /&gt;
         IF NOT(COMMENT.SW) THEN&lt;br /&gt;
            BEGIN CASE&lt;br /&gt;
               CASE DQ.SW AND CC.CHAR = &amp;#039;&amp;quot;&amp;#039; ; DQ.SW = 0&lt;br /&gt;
               CASE SQ.SW AND CC.CHAR = &amp;quot;&amp;#039;&amp;quot; ; SQ.SW = 0&lt;br /&gt;
               CASE BS.SW AND CC.CHAR = &amp;#039;\&amp;#039; ; BS.SW = 0&lt;br /&gt;
            END CASE&lt;br /&gt;
         END&lt;br /&gt;
      END&lt;br /&gt;
*&lt;br /&gt;
NEXT.CCX:&lt;br /&gt;
*&lt;br /&gt;
   NEXT CCX&lt;br /&gt;
END ELSE&lt;br /&gt;
   LN = OCONV(LN, CASCV)        ; ** convert entire line&lt;br /&gt;
END&lt;br /&gt;
RETURN&lt;br /&gt;
*&lt;br /&gt;
** Help display&lt;br /&gt;
***************&lt;br /&gt;
DISPLAY.HELP:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
CRT&lt;br /&gt;
CRT &amp;#039;Convert CASE of data from Upper-to-Lower or Lower-to-Upper.  This&amp;#039;&lt;br /&gt;
CRT &amp;#039;is usually done for program files, but can be done for any files.&amp;#039;&lt;br /&gt;
CRT&lt;br /&gt;
CRT &amp;#039;Syntax:&amp;#039;&lt;br /&gt;
CRT &amp;#039;  CONV.CASE [[FileName]] {Item Criteria} {(OPTIONS)}&amp;#039;&lt;br /&gt;
CRT&lt;br /&gt;
CRT &amp;#039;  * options:&amp;#039;&lt;br /&gt;
CRT &amp;#039;       E - Used with Q-Option to Convert Case of Items&amp;#039;&lt;br /&gt;
CRT &amp;#039;           within quotes due to CHAIN, TCL, or EXECUTE&amp;#039;&lt;br /&gt;
CRT &amp;#039;       I - Suppresses Item-Id output&amp;#039;&lt;br /&gt;
CRT &amp;#039;       K - Converts Record [K]eys (item Ids) only&amp;#039;&lt;br /&gt;
CRT &amp;#039;       L - Convert Upper to Lower Case&amp;#039;&lt;br /&gt;
CRT &amp;#039;       O - Output Item-Ids on Same Line&amp;#039;&lt;br /&gt;
CRT &amp;#039;       Q - Leaves Text within quotes Unchanged.   Also leaves&amp;#039;&lt;br /&gt;
CRT &amp;#039;           program comments unchanged.&amp;#039;&lt;br /&gt;
CRT &amp;#039;       U - Convert Lower to Upper Case (default)&amp;#039;&lt;br /&gt;
CRT&lt;br /&gt;
CRT &amp;#039;Note: If you select the [K]ey option only the key will be updated&amp;#039;&lt;br /&gt;
STOP&lt;br /&gt;
*&lt;br /&gt;
**----------------------------------------------------------------**&lt;br /&gt;
**                                                                **&lt;br /&gt;
**                  E N D   O F   P R O G R A M                   **&lt;br /&gt;
**                                                                **&lt;br /&gt;
**----------------------------------------------------------------**&lt;br /&gt;
*&lt;br /&gt;
***************&lt;br /&gt;
END.OF.PROGRAM:&lt;br /&gt;
***************&lt;br /&gt;
*&lt;br /&gt;
CRT&lt;br /&gt;
CRT [[ReadCnt]] : &amp;quot; items read for updating.&amp;quot;&lt;br /&gt;
CRT [[UpdCnt]]  : &amp;quot; items updated.&amp;quot;&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Conversion script</name></author>
	</entry>
</feed>