DELCOM Procedure
Deletes one or more COMMON blocks from the PV‑WAVE session.
Caution: The routines DELSTRUCT, DELCOM, DELPROC, and DELFUNC are provided as convenience routines for PV‑WAVE developers. They allow developers to delete or reset certain elements ofPV‑WAVE's internal memory, which would otherwise require a restart of the PV‑WAVE session. They are only used at the $MAIN$ level, i.e., at the WAVE>
prompt. Any other use results in session instability and undefined results.
Usage
DELCOM, blockname1, ..., blocknameN
Input Parameters
blockname — A string containing the name of a COMMON block to delete.
Keywords
All — If present and non-zero, removes all currently defined COMMON blocks from the PV‑WAVE session.
List — (Output) A variable in which to return the names of all COMMON blocks defined in the current PV‑WAVE session. If this keyword is present all other parameters and keywords are ignored. If no COMMON blocks are declared in the current PV‑WAVE session, a message is printed and the output variable is unchanged.
Discussion
This procedure is primarily used during code development while you are still modifying the COMMON blocks you wish to use in your application. It allows you to re-define a COMMON block and its associated variables without restarting your PV‑WAVE session.
Deleting a COMMON block causes all functions and procedures which use the affected COMMON block(s) to be removed from memory. The variables contained in the COMMON block are deleted as well. The memory for each is returned to the system.
This procedure may only be called from the $MAIN$ level.
Example
; Create two routines that share a COMMON block. ; Save this procedure in a file called t_com1.pro. PRO t_com1 COMMON t_com, a, b, c, d a = 23i b = 12 c = a + b END ; Save this function in a file called t_com2.pro. FUNCTION t_com2 COMMON t_com, a, b, c, d a = 100 RETURN, a END ; In your PV-WAVE session, declare two common blocks at the $MAIN$ level. COMMON testcom1, a, b, c, d COMMON testcom2, e, f, g ; Compile the two routines above, placing them in memory and creating ; the t_com COMMON block in the PV-WAVE session. .run t_com1 .run t_com2 ; Print information about the $MAIN$ level of the current session. ; Note that the t_com COMMON block is not listed as it is ; not declared at the $MAIN$ level. INFO ; PV-WAVE prints: ; ; % At $MAIN$ . ; Code area used: 0.00% (0/768), Data area used: 1.40% (112/8000) ; # local variables (including 0 parameters): 0/493 ; # common symbols: 7/7 ; A (TESTCOM1) UNDEFINED = <Undefined> ; B (TESTCOM1) UNDEFINED = <Undefined> ; C (TESTCOM1) UNDEFINED = <Undefined> ; D (TESTCOM1) UNDEFINED = <Undefined> ; E (TESTCOM2) UNDEFINED = <Undefined> ; F (TESTCOM2) UNDEFINED = <Undefined> ; G (TESTCOM2) UNDEFINED = <Undefined> ; Common Blocks: ; TESTCOM1(4) TESTCOM2(3) ; Saved Procedures: ; SETDEMO SETDEMO_MSNT SETKEYS_MSNT SETUP_KEYS ; T_COM1 ; Saved Functions: ; REVERSE STRJOIN STRSPLIT T_COM2 ; Use DELCOM to get a list of all the declared COMMON blocks ; in the current PV-WAVE session DELCOM, List=out PRINT, out ; PV-WAVE prints: ; TESTCOM1 TESTCOM2 T_COM ; Delete all of the COMMON blocks DELCOM, /All ; Re-examine the info for the $MAIN$ level INFO ; PV-WAVE prints: ; ; % At $MAIN$ . ; Code area used: 0.00% (0/768), Data area used: 1.60% (128/8000) ; # local variables (including 0 parameters): 1/500 ; # common symbols: 0/0 ; OUT STRING = Array(3) ; Saved Procedures: ; SETDEMO SETDEMO_MSNT SETKEYS_MSNT SETUP_KEYS ; Saved Functions: ; REVERSE STRJOIN STRSPLIT ; ; The COMMON blocks at the $MAIN$ level and their variables have been ; deleted along with the routines that used the t_com COMMON block. ; Note that while the memory for the COMMON blocks and their variables ; is released to the system, the data area they occupied in the $MAIN$ ; procedure is held for re-use. ; Verify deletion using DELCOM out = -1 DELCOM, list=out ; PV-WAVE prints: ; % DELCOM: No COMMON blocks found INFO, out ; PV-WAVE prints: ; OUT INT = -1 ; Re-define the $MAIN$ level COMMON blocks with additional variables COMMON testcom1, a, b, c, d, newvar1 COMMON testcom2, e, f, g, newvar2 ; Check the INFO INFO ; PV-WAVE prints: ; ; % At $MAIN$ . ; Code area used: 0.00% (0/768), Data area used: 2.00% (160/8000) ; # local variables (including 0 parameters): 1/491 ; # common symbols: 9/9 ; A (TESTCOM1) UNDEFINED = <Undefined> ; B (TESTCOM1) UNDEFINED = <Undefined> ; C (TESTCOM1) UNDEFINED = <Undefined> ; D (TESTCOM1) UNDEFINED = <Undefined> ; E (TESTCOM2) UNDEFINED = <Undefined> ; F (TESTCOM2) UNDEFINED = <Undefined> ; G (TESTCOM2) UNDEFINED = <Undefined> ; OUT INT = -1 ; NEWVAR1 (TESTCOM1) UNDEFINED = <Undefined> ; NEWVAR2 (TESTCOM2) UNDEFINED = <Undefined> ; Common Blocks: ; TESTCOM1(5) TESTCOM2(4) ; Saved Procedures: ; SETDEMO SETDEMO_MSNT SETKEYS_MSNT SETUP_KEYS ; Saved Functions: ; REVERSE STRJOIN STRSPLIT ; ; Note that the data area used grew to accommodate only the added variables. ; Delete the testcom2 COMMON block. DELCOM, "testcom2" ; Show the info INFO ; PV-WAVE prints: ; % At $MAIN$ . ; Code area used: 0.00% (0/768), Data area used: 2.00% (160/8000) ; # local variables (including 0 parameters): 1/495 ; # common symbols: 5/5 ; A (TESTCOM1) UNDEFINED = <Undefined> ; B (TESTCOM1) UNDEFINED = <Undefined> ; C (TESTCOM1) UNDEFINED = <Undefined> ; D (TESTCOM1) UNDEFINED = <Undefined> ; OUT INT = -1 ; NEWVAR1 (TESTCOM1) UNDEFINED = <Undefined> ; Common Blocks: ; TESTCOM1(5) ; Saved Procedures: ; SETDEMO SETDEMO_MSNT SETKEYS_MSNT SETUP_KEYS ; Saved Functions: ; REVERSE STRJOIN STRSPLIT