.title WHAT_RETNODES ; $ssdef ; .psect what_retnodes_data, noexe, pic, noshr, lcl, wrt, rd, rel, con ; entity_desc: .ascid /NODE/ ; ret_string: .byte 32[255] ; retdesc: .long 255 .address ret_string ; retlength: .word 0 ; ; ; ;******************************************************************************* ;* What_retnodes * ;* This procedure is intended to get all the nodes from the qualifier * ;* 'NODE'. It assembles them into the record NODES. * ;* * ;* Arguments: Nodes - reference, dae_nodes_descr * ;******************************************************************************* ; .psect what_retnodes_code, con, exe, lcl, shr, nowrt, pic, rel ; .entry what_retnodes, ^m ; movl 4(ap), r11 ; Address of total record addl3 #1, r11, r10 ; Increment to the first record clrl r9 ; Counter of nodes returned ; loop: pushaw retlength pushal retdesc pushal entity_desc calls #3, g^cli$get_value ; Get the value on the line movl r0, r8 ; Save return value ; incl r9 ; Increment number returned movb retlength, (r10)+ ; Save its length movc5 retlength, ret_string, #32, #6, (r10) ; Save the string movl r3, r10 ; Save new address in record ; cmpl #SS$_NORMAL, r8 ; Have we returned the last one? bneq loop ; Keep going ; movb r9, (r11) ; Save the number returned movl #1, r0 ; Return success ret ; End of What_retnodes ; .end